def actionWebsocket(self): ws = self.env.get("wsgi.websocket") if ws: wrapper_key = self.get["wrapper_key"] # Find site by wrapper_key site = None for site_check in self.server.sites.values(): if site_check.settings["wrapper_key"] == wrapper_key: site = site_check if site: # Correct wrapper key user = self.getCurrentUser() if not user: self.log.error("No user found") return self.error403() ui_websocket = UiWebsocket(ws, site, self.server, user) site.websockets.append(ui_websocket) # Add to site websockets to allow notify on events ui_websocket.start() for site_check in self.server.sites.values(): # Remove websocket from every site (admin sites allowed to join other sites event channels) if ui_websocket in site_check.websockets: site_check.websockets.remove(ui_websocket) return "Bye." else: # No site found by wrapper key self.log.error("Wrapper key not found: %s" % wrapper_key) return self.error403() else: start_response("400 Bad Request", []) return "Not a websocket!"
def actionWebsocket(self): ws = self.env.get("wsgi.websocket") if ws: wrapper_key = self.get["wrapper_key"] # Find site by wrapper_key site = None for site_check in self.server.sites.values(): if site_check.settings["wrapper_key"] == wrapper_key: site = site_check if site: # Correct wrapper key try: user = self.getCurrentUser() except Exception, err: self.log.error("Error in data/user.json: %s" % err) return self.error500() if not user: self.log.error("No user found") return self.error403() ui_websocket = UiWebsocket(ws, site, self.server, user, self) site.websockets.append( ui_websocket ) # Add to site websockets to allow notify on events self.server.websockets.append(ui_websocket) ui_websocket.start() self.server.websockets.remove(ui_websocket) for site_check in self.server.sites.values(): # Remove websocket from every site (admin sites allowed to join other sites event channels) if ui_websocket in site_check.websockets: site_check.websockets.remove(ui_websocket) return "Bye." else: # No site found by wrapper key self.log.error("Wrapper key not found: %s" % wrapper_key) return self.error403()
def actionWebsocket(self): ws = self.env.get("wsgi.websocket") if ws: wrapper_key = self.get["wrapper_key"] # Find site by wrapper_key site = None for site_check in self.server.sites.values(): if site_check.settings["wrapper_key"] == wrapper_key: site = site_check if site: # Correct wrapper key try: user = self.getCurrentUser() except Exception, err: self.log.error("Error in data/user.json: %s" % err) return self.error500() if not user: self.log.error("No user found") return self.error403() ui_websocket = UiWebsocket(ws, site, self.server, user, self) site.websockets.append(ui_websocket) # Add to site websockets to allow notify on events self.server.websockets.append(ui_websocket) ui_websocket.start() self.server.websockets.remove(ui_websocket) for site_check in self.server.sites.values(): # Remove websocket from every site (admin sites allowed to join other sites event channels) if ui_websocket in site_check.websockets: site_check.websockets.remove(ui_websocket) return "Bye." else: # No site found by wrapper key self.log.error("Wrapper key not found: %s" % wrapper_key) return self.error403()
def actionWebsocket(self): ws = self.env.get("wsgi.websocket") if ws: # Allow only same-origin websocket requests origin = self.env.get("HTTP_ORIGIN") host = self.env.get("HTTP_HOST") # Allow only same-origin websocket requests if origin: origin_host = origin.split("://", 1)[-1] if origin_host != host and origin_host not in self.server.allowed_ws_origins: error_message = "Invalid origin: %s (host: %s, allowed: %s)" % ( origin, host, self.server.allowed_ws_origins) ws.send(json.dumps({"error": error_message})) return self.error403(error_message) # Find site by wrapper_key wrapper_key = self.get["wrapper_key"] site = None for site_check in list(self.server.sites.values()): if site_check.settings["wrapper_key"] == wrapper_key: site = site_check if site: # Correct wrapper key try: user = self.getCurrentUser() except Exception as err: ws.send( json.dumps( {"error": "Error in data/user.json: %s" % err})) return self.error500("Error in data/user.json: %s" % err) if not user: ws.send(json.dumps({"error": "No user found"})) return self.error403("No user found") ui_websocket = UiWebsocket(ws, site, self.server, user, self) site.websockets.append( ui_websocket ) # Add to site websockets to allow notify on events self.server.websockets.append(ui_websocket) ui_websocket.start() self.server.websockets.remove(ui_websocket) for site_check in list(self.server.sites.values()): # Remove websocket from every site (admin sites allowed to join other sites event channels) if ui_websocket in site_check.websockets: site_check.websockets.remove(ui_websocket) return [b"Bye."] else: # No site found by wrapper key ws.send( json.dumps( {"error": "Wrapper key not found: %s" % wrapper_key})) return self.error403("Wrapper key not found: %s" % wrapper_key) else: self.start_response("400 Bad Request", []) return [b"Not a websocket request!"]
def actionWebsocket(self): ws = self.env.get("wsgi.websocket") if ws: # Allow only same-origin websocket requests origin = self.env.get("HTTP_ORIGIN") host = self.env.get("HTTP_HOST") # Allow only same-origin websocket requests if origin: origin_host = origin.split("://", 1)[-1] if origin_host != host and origin_host not in self.server.allowed_ws_origins: ws.send(json.dumps({"error": "Invalid origin: %s" % origin})) return self.error403("Invalid origin: %s" % origin) # Find site by wrapper_key wrapper_key = self.get["wrapper_key"] site = None for site_check in self.server.sites.values(): if site_check.settings["wrapper_key"] == wrapper_key: site = site_check if site: # Correct wrapper key try: user = self.getCurrentUser() except Exception, err: self.log.error("Error in data/user.json: %s" % err) return self.error500() if not user: self.log.error("No user found") return self.error403() ui_websocket = UiWebsocket(ws, site, self.server, user, self) site.websockets.append(ui_websocket) # Add to site websockets to allow notify on events self.server.websockets.append(ui_websocket) ui_websocket.start() self.server.websockets.remove(ui_websocket) for site_check in self.server.sites.values(): # Remove websocket from every site (admin sites allowed to join other sites event channels) if ui_websocket in site_check.websockets: site_check.websockets.remove(ui_websocket) return "Bye." else: # No site found by wrapper key self.log.error("Wrapper key not found: %s" % wrapper_key) return self.error403()