public void associate(HttpExchange t, WebRender webRenderer) { webRenderer.associateIP(t.getRemoteAddress().getAddress()); webRenderer.associatePort(t.getRemoteAddress().getPort()); }
public RootFolder getRoot(String user, boolean create, HttpExchange t) { String groupTag = getTag(user); String cookie = RemoteUtil.getCookie("UMS", t); RootFolder root; synchronized (roots) { root = roots.get(cookie); if (root == null) { // Double-check for cookie errors WebRender valid = RemoteUtil.matchRenderer(user, t); if (valid != null) { // A browser of the same type and user is already connected at // this ip but for some reason we didn't get a cookie match. RootFolder validRoot = valid.getRootFolder(); // Do a reverse lookup to see if it's been registered for (Map.Entry<String, RootFolder> entry : roots.entrySet()) { if (entry.getValue() == validRoot) { // Found root = validRoot; cookie = entry.getKey(); LOGGER.debug( "Allowing browser connection without cookie match: {}: {}", valid.getRendererName(), t.getRemoteAddress().getAddress()); break; } } } } if (!create || (root != null)) { t.getResponseHeaders().add("Set-Cookie", "UMS=" + cookie + ";Path=/"); return root; } ArrayList<String> tag = new ArrayList<>(); tag.add(user); if (!groupTag.equals(user)) { tag.add(groupTag); } tag.add(t.getRemoteAddress().getHostString()); tag.add("web"); root = new RootFolder(tag); try { WebRender render = new WebRender(user); root.setDefaultRenderer(render); render.setRootFolder(root); render.associateIP(t.getRemoteAddress().getAddress()); render.associatePort(t.getRemoteAddress().getPort()); if (configuration.useWebSubLang()) { render.setSubLang(StringUtils.join(RemoteUtil.getLangs(t), ",")); } // render.setUA(t.getRequestHeaders().getFirst("User-agent")); render.setBrowserInfo( RemoteUtil.getCookie("UMSINFO", t), t.getRequestHeaders().getFirst("User-agent")); PMS.get().setRendererFound(render); } catch (ConfigurationException e) { root.setDefaultRenderer(RendererConfiguration.getDefaultConf()); } // root.setDefaultRenderer(RendererConfiguration.getRendererConfigurationByName("web")); root.discoverChildren(); cookie = UUID.randomUUID().toString(); t.getResponseHeaders().add("Set-Cookie", "UMS=" + cookie + ";Path=/"); roots.put(cookie, root); } return root; }