package eu.geoknow.generator.servlets; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URLEncoder; import java.util.Enumeration; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import eu.geoknow.generator.configuration.FrameworkConfiguration; import eu.geoknow.generator.rdf.HttpRequestManager; import eu.geoknow.generator.users.FrameworkUserManager; import eu.geoknow.generator.users.PasswordStore; import eu.geoknow.generator.users.UserProfile; import eu.geoknow.generator.utils.HttpUtils; public class VirtuosoProxy extends HttpServlet { /** * */ private static final Logger log = Logger.getLogger(VirtuosoProxy.class); private static final long serialVersionUID = 1L; private static FrameworkUserManager frameworkUserManager; @Override public void init(ServletConfig config) throws ServletException { super.init(config); try { FrameworkConfiguration frameworkConfig = FrameworkConfiguration.getInstance(); frameworkUserManager = frameworkConfig.getFrameworkUserManager(); } catch (FileNotFoundException e) { throw new ServletException(e); } catch (Exception e) { throw new ServletException(e); } } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String user = HttpUtils.getCookieValue(req, "user"); String token = HttpUtils.getCookieValue(req, "token"); UserProfile userProfile = null; try { userProfile = frameworkUserManager.validate(user, token); if (userProfile == null) { resp.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Invalid credentials"); return; } log.info(" user: " + userProfile.getUsername()); } catch (Exception e) { e.printStackTrace(); resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); return; } StringBuilder urlParameters = new StringBuilder(); Enumeration parameterNames = req.getParameterNames(); while (parameterNames.hasMoreElements()) { String pname = (String) parameterNames.nextElement(); for (String pval : req.getParameterValues(pname)) urlParameters.append("&").append(pname).append("=") .append(URLEncoder.encode(pval, "utf-8")); } urlParameters.replace(0, 1, ""); try { String result = HttpRequestManager.executePost(FrameworkConfiguration.getInstance() .getAuthSparqlEndpoint(), urlParameters.toString(), userProfile.getUsername(), PasswordStore.getPassword(userProfile.getUsername())); resp.getWriter().print(result); } catch (Exception e) { e.printStackTrace(); resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); return; } } }