package org.gcube.data.analysis.rconnector; import javax.servlet.ServletContext; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import lombok.extern.slf4j.Slf4j; @Path("disconnect") @Slf4j public class DisconnectResource { @Context ServletContext context; @GET @Produces(MediaType.TEXT_HTML) public Response disconnect(@Context HttpServletRequest req) { log.info("disconnect called "); new Throwable().printStackTrace(); String rStudioServerAddress = context==null?"":context.getInitParameter("rStudioAddress"); log.info(rStudioServerAddress); try{ boolean found = false; for (Cookie cookie : req.getCookies()) if (cookie.getName().equals("user-id")){ found=true; break; } if (found) return Response.ok(context.getClassLoader().getResourceAsStream("logout.html")) .header( "Set-Cookie", String.format("user-id=deleted;Domain=.%s;Path=/;Expires=Thu, 01-Jan-1970 00:00:01 GMT",rStudioServerAddress) ).build(); else return Response.ok(context.getClassLoader().getResourceAsStream("inactivesession.html")).build(); }catch(Exception e){ e.printStackTrace(); return null; } } }