package nl.topicus.konijn.web.entrypoints; import java.io.IOException; import java.io.PrintWriter; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import nl.topicus.konijn.config.modules.Setting; import org.apache.log4j.Logger; import com.google.inject.Injector; /** * Entrypoint for sending the location of the servers. * * @author Joost Limburg * */ public class LocateEntryPoint extends HttpServlet { private static final long serialVersionUID = 1L; private static final Logger LOGGER = Logger .getLogger(LocateEntryPoint.class); private Injector injector = null; public LocateEntryPoint() { InitialContext context = null; try { context = new InitialContext(); } catch (NamingException e) { e.printStackTrace(); } try { injector = (Injector) context.lookup("com.google.inject.Injector"); } catch (NamingException e) { e.printStackTrace(); } } private String getConfig() { // String address = WicketApplication.getServerAddress(); Setting setting = injector.getInstance(Setting.class); String address = setting.getHost(); return "ping " + address + "\nbroad " + address + "\nxmpp_domain " + address + "\n"; } public void doGet(HttpServletRequest inRequest, HttpServletResponse inResponse) throws IOException { final PrintWriter out = inResponse.getWriter(); final String theSerial = inRequest.getParameter("sn"); final String theHardware = inRequest.getParameter("h"); final String theFirmware = inRequest.getParameter("v"); Setting setting = injector.getInstance(Setting.class); String address = setting.getHost(); if (theSerial != null && theFirmware != null && theHardware != null) { LOGGER.info("Locate request: SN[" + theSerial + "], V[" + theFirmware + "], H[" + theHardware + "] to: " + address); out.print(getConfig()); } else { LOGGER.info("Invalid locate request"); out.print(""); inResponse.sendError(HttpServletResponse.SC_FORBIDDEN); } out.close(); } }