@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String encoding = request.getHeader("Accept-Encoding"); boolean supportsGzip = (encoding != null && encoding.toLowerCase().indexOf("gzip") > -1); SessionTerminal st = (SessionTerminal) request.getSession(true).getAttribute("terminal"); if (st == null || st.isClosed()) { st = new SessionTerminal(); request.getSession().setAttribute("terminal", st); } String str = request.getParameter("k"); String f = request.getParameter("f"); String dump = st.handle(str, f != null && f.length() > 0); if (dump != null) { if (supportsGzip) { response.setHeader("Content-Encoding", "gzip"); response.setHeader("Content-Type", "text/html"); try { GZIPOutputStream gzos = new GZIPOutputStream(response.getOutputStream()); gzos.write(dump.getBytes()); gzos.close(); } catch (IOException ie) { // handle the error here ie.printStackTrace(); } } else { response.getOutputStream().write(dump.getBytes()); } } }
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); String token = request.getHeader(LoginTokenServlet.LOGIN_TOKEN); if (token == null || session == null) { Helpers.doForbidden(response); return; } String sessionToken = (String) session.getAttribute(LoginTokenServlet.LOGIN_TOKEN); if (sessionToken == null || !token.equals(sessionToken)) { session.invalidate(); Helpers.doForbidden(response); return; } String encoding = request.getHeader("Accept-Encoding"); boolean supportsGzip = (encoding != null && encoding.toLowerCase().contains("gzip")); SessionTerminal st = null; try { st = (SessionTerminal) session.getAttribute("terminal"); } catch (Exception e) { // ignore as we create a new session } if (st == null || st.isClosed()) { st = new SessionTerminal(getCommandProcessor(), getThreadIO()); // ensure to create a session as it was closed session = request.getSession(true); session.setAttribute(LoginTokenServlet.LOGIN_TOKEN, token); session.setAttribute("terminal", st); } String str = request.getParameter("k"); String f = request.getParameter("f"); String dump = st.handle(str, f != null && f.length() > 0); if (dump != null) { if (supportsGzip) { response.setHeader("Content-Encoding", "gzip"); response.setHeader("Content-Type", "text/html"); try { GZIPOutputStream gzos = new GZIPOutputStream(response.getOutputStream()); gzos.write(dump.getBytes()); gzos.close(); } catch (IOException ie) { LOG.info("Exception writing response: ", ie); } } else { response.getOutputStream().write(dump.getBytes()); } } }