Skip to content

Instantly share code, notes, and snippets.

@JeremyMcCormick
Created September 13, 2016 20:35
Show Gist options
  • Save JeremyMcCormick/21b168ea4cfe766c3d3a6132afb11fa9 to your computer and use it in GitHub Desktop.
Save JeremyMcCormick/21b168ea4cfe766c3d3a6132afb11fa9 to your computer and use it in GitHub Desktop.
public class PrintRequestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out = resp.getWriter();
out.println("<b>HTTP Headers</b><br/>");
Enumeration<?> headers = req.getHeaderNames();
for (;;) {
if (!headers.hasMoreElements()) {
break;
}
String nextHeader = (String) headers.nextElement();
out.print(nextHeader + " = " + req.getHeader(nextHeader) + "<br/>");
}
out.println("<b>Attributes</b><br/>");
Enumeration<?> attributes = req.getAttributeNames();
for (;;) {
if (!attributes.hasMoreElements())
break;
String nextAttribute = (String) attributes.nextElement();
out.print(nextAttribute + " = " + req.getAttribute(nextAttribute) + "<br/>");
}
try {
out.println("REMOTE_USER = " + req.getRemoteUser() + "<br/>");
} catch (Exception e) {
out.print("REMOTE_USER is not set<br/>");
}
out.println("groups = " + getUserGroups(req.getRemoteUser()));
}
private String getUserGroups(String username) {
ProcessBuilder pb = new ProcessBuilder("groups", username);
pb.redirectErrorStream(true);
String groups = null;
try {
Process p = pb.start();
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
groups = line;
}
p.waitFor();
in.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
return groups;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment