private boolean requestFromLocalhost(HttpServletRequest request) { return "127.0.0.1".equals(getRemoteAddr(request)); }
@Override protected void doStart() throws Exception { super.doStart(); if (_sendShutdownAtStart) sendShutdown(); }
/** * @param shutdownToken * a secret password to avoid unauthorized shutdown attempts * @param exitJVM If true, when the shutdown is executed, the handler class System.exit() * @param sendShutdownAtStart If true, a shutdown is sent as a HTTP post * during startup, which will shutdown any previously running instances of * this server with an identically configured ShutdownHandler */ public ShutdownHandler(String shutdownToken, boolean exitJVM, boolean sendShutdownAtStart) { this._shutdownToken = shutdownToken; setExitJvm(exitJVM); setSendShutdownAtStart(sendShutdownAtStart); }
return; if (!hasCorrectSecurityToken(request)) LOG.warn("Unauthorized shutdown attempt from " + getRemoteAddr(request)); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; if (!requestFromLocalhost(request)) LOG.warn("Unauthorized shutdown attempt from " + getRemoteAddr(request)); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; LOG.info("Shutting down by request from " + getRemoteAddr(request));
@Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { if (!target.equals("/shutdown")) { super.handle(target,baseRequest,request,response); return; } if (!request.getMethod().equals("POST")) { response.sendError(HttpServletResponse.SC_BAD_REQUEST); return; } if (!hasCorrectSecurityToken(request)) { LOG.warn("Unauthorized tokenless shutdown attempt from " + request.getRemoteAddr()); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; } if (!requestFromLocalhost(baseRequest)) { LOG.warn("Unauthorized non-loopback shutdown attempt from " + request.getRemoteAddr()); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; } LOG.info("Shutting down by request from " + request.getRemoteAddr()); doShutdown(baseRequest, response); }
@SuppressWarnings("resource") private String getServerUrl() { NetworkConnector connector=null; for (Connector c: getServer().getConnectors()) { if (c instanceof NetworkConnector) { connector=(NetworkConnector)c; break; } } if (connector==null) return "http://localhost"; return "http://localhost:" + connector.getPort(); }
public void sendShutdown() throws IOException { URL url = new URL(getServerUrl() + "/shutdown?token=" + _shutdownToken); try { HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("POST"); connection.getResponseCode(); LOG.info("Shutting down " + url + ": " + connection.getResponseCode() + " " + connection.getResponseMessage()); } catch (SocketException e) { LOG.debug("Not running"); // Okay - the server is not running } catch (IOException e) { throw new RuntimeException(e); } }
return; if (!hasCorrectSecurityToken(request)) LOG.warn("Unauthorized shutdown attempt from " + getRemoteAddr(request)); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; if (!requestFromLocalhost(request)) LOG.warn("Unauthorized shutdown attempt from " + getRemoteAddr(request)); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; LOG.info("Shutting down by request from " + getRemoteAddr(request));
@Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { if (!target.equals("/shutdown")) { super.handle(target,baseRequest,request,response); return; } if (!request.getMethod().equals("POST")) { response.sendError(HttpServletResponse.SC_BAD_REQUEST); return; } if (!hasCorrectSecurityToken(request)) { LOG.warn("Unauthorized tokenless shutdown attempt from " + request.getRemoteAddr()); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; } if (!requestFromLocalhost(baseRequest)) { LOG.warn("Unauthorized non-loopback shutdown attempt from " + request.getRemoteAddr()); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; } LOG.info("Shutting down by request from " + request.getRemoteAddr()); doShutdown(baseRequest, response); }
@SuppressWarnings("resource") private String getServerUrl() { NetworkConnector connector=null; for (Connector c: getServer().getConnectors()) { if (c instanceof NetworkConnector) { connector=(NetworkConnector)c; break; } } if (connector==null) return "http://localhost"; return "http://localhost:" + connector.getPort(); }
public void sendShutdown() throws IOException { URL url = new URL(getServerUrl() + "/shutdown?token=" + _shutdownToken); try { HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("POST"); connection.getResponseCode(); LOG.info("Shutting down " + url + ": " + connection.getResponseCode() + " " + connection.getResponseMessage()); } catch (SocketException e) { LOG.debug("Not running"); // Okay - the server is not running } catch (IOException e) { throw new RuntimeException(e); } }
return; if (!hasCorrectSecurityToken(request)) LOG.warn("Unauthorized shutdown attempt from " + getRemoteAddr(request)); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; if (!requestFromLocalhost(request)) LOG.warn("Unauthorized shutdown attempt from " + getRemoteAddr(request)); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; LOG.info("Shutting down by request from " + getRemoteAddr(request));
@Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { if (!target.equals("/shutdown")) { super.handle(target,baseRequest,request,response); return; } if (!request.getMethod().equals("POST")) { response.sendError(HttpServletResponse.SC_BAD_REQUEST); return; } if (!hasCorrectSecurityToken(request)) { LOG.warn("Unauthorized tokenless shutdown attempt from " + request.getRemoteAddr()); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; } if (!requestFromLocalhost(baseRequest)) { LOG.warn("Unauthorized non-loopback shutdown attempt from " + request.getRemoteAddr()); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; } LOG.info("Shutting down by request from " + request.getRemoteAddr()); doShutdown(baseRequest, response); }
private boolean requestFromLocalhost(HttpServletRequest request) { return "127.0.0.1".equals(getRemoteAddr(request)); }
/** * @param shutdownToken * a secret password to avoid unauthorized shutdown attempts * @param exitJVM If true, when the shutdown is executed, the handler class System.exit() * @param sendShutdownAtStart If true, a shutdown is sent as a HTTP post * during startup, which will shutdown any previously running instances of * this server with an identically configured ShutdownHandler */ public ShutdownHandler(String shutdownToken, boolean exitJVM, boolean sendShutdownAtStart) { this._shutdownToken = shutdownToken; setExitJvm(exitJVM); setSendShutdownAtStart(sendShutdownAtStart); }
@SuppressWarnings("resource") private String getServerUrl() { NetworkConnector connector=null; for (Connector c: getServer().getConnectors()) { if (c instanceof NetworkConnector) { connector=(NetworkConnector)c; break; } } if (connector==null) return "http://localhost"; return "http://localhost:" + connector.getPort(); }
@Override protected void doStart() throws Exception { super.doStart(); if (_sendShutdownAtStart) sendShutdown(); }
public void sendShutdown() throws IOException { URL url = new URL(getServerUrl() + "/shutdown?token=" + _shutdownToken); try { HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("POST"); connection.getResponseCode(); LOG.info("Shutting down " + url + ": " + connection.getResponseCode() + " " + connection.getResponseMessage()); } catch (SocketException e) { LOG.debug("Not running"); // Okay - the server is not running } catch (IOException e) { throw new RuntimeException(e); } }
return; if (!hasCorrectSecurityToken(request)) LOG.warn("Unauthorized shutdown attempt from " + getRemoteAddr(request)); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; if (!requestFromLocalhost(request)) LOG.warn("Unauthorized shutdown attempt from " + getRemoteAddr(request)); response.sendError(HttpServletResponse.SC_UNAUTHORIZED); return; LOG.info("Shutting down by request from " + getRemoteAddr(request));
private boolean requestFromLocalhost(HttpServletRequest request) { return "127.0.0.1".equals(getRemoteAddr(request)); }