package org.ovirt.engine.ui.frontend.server.gwt; import java.io.IOException; import java.io.PrintWriter; import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.ovirt.engine.core.common.interfaces.BackendLocal; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.users.VdcUser; /** * A landing servlet for WebAdmin project * <p> * note: this page resides in frontend servlet package as it's already embedded as a jar under WEB-INF/lib of the * webadmin WAR * </p> * * @author Asaf Shakarchi */ public class WebadminDynamicHostingServlet extends HttpServlet { private static final long serialVersionUID = 1L; private BackendLocal backend; // TODO: Should only set an html element that will be replaced by GWT widget instead. String title = "oVirt Enterprise Virtualization Engine Web Administration"; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { PrintWriter writer = resp.getWriter(); resp.setContentType("text/html"); resp.setCharacterEncoding("UTF-8"); writer.append("<!DOCTYPE html><html><head>"); writer.append("<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">"); writer.append("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\"/>"); writer.append("<title>" + title + "</title>"); VdcUser loggedUser = getLoggedInUser(req.getSession().getId()); if (loggedUser != null) { writer.append("<script type=\"text/javascript\">"); writer.append(" var userInfo = { "); writer.append(" \"id\" : \"" + loggedUser.getUserId().toString() + "\","); writer.append(" \"userName\" : \"" + loggedUser.getUserName() + "\","); writer.append(" \"domain\" : \"" + loggedUser.getDomainControler() + "\""); writer.append(" };"); writer.append("</script>"); } writer.append("</head><body>"); writer.append("<iframe src=\"javascript:''\" id=\"__gwt_historyFrame\" tabIndex='-1' style=\"position:absolute;width:0;height:0;border:0\"></iframe>"); writer.append("<script type=\"text/javascript\" src=\"webadmin.nocache.js\"></script>"); writer.append("</body></html>"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } public VdcUser getLoggedInUser(String sessionId) { VdcQueryParametersBase queryParams = new VdcQueryParametersBase(); queryParams.setSessionId(sessionId); queryParams.setHttpSessionId(sessionId); VdcQueryReturnValue vqrv = backend.RunQuery(VdcQueryType.GetUserBySessionId, queryParams); if (!vqrv.getSucceeded()) { return null; } else if (vqrv.getSucceeded()) { if (vqrv.getReturnValue() == null) return null; return (VdcUser) vqrv.getReturnValue(); } else { // For unknown reason the result was failed be returned. return null; } } @EJB(beanInterface = BackendLocal.class, mappedName = "engine/Backend/local") public void setBackend(BackendLocal backend) { this.backend = backend; } }