From a0b3b9649b0eec142ab032b7f07062a15df24391 Mon Sep 17 00:00:00 2001 From: Cal Date: Wed, 20 Dec 2023 10:39:48 -0700 Subject: [PATCH] tidy up variable names --- evennia/server/portal/webclient.py | 4 +-- evennia/server/portal/webclient_ajax.py | 47 +++++++++++++++++++------ 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/evennia/server/portal/webclient.py b/evennia/server/portal/webclient.py index e5d2a1da19..b74c3eb361 100644 --- a/evennia/server/portal/webclient.py +++ b/evennia/server/portal/webclient.py @@ -68,7 +68,7 @@ class WebSocketClient(WebSocketServerProtocol, _BASE_SESSION_CLASS): """ try: - # client will connect with wsurl?csessid&browserid + # client will connect with wsurl?csessid&page_id&browserid webarg = self.http_request_uri.split("?", 1)[1] except IndexError: # this may happen for custom webclients not caring for the @@ -86,7 +86,7 @@ class WebSocketClient(WebSocketServerProtocol, _BASE_SESSION_CLASS): if len(cargs) == 1: self.browserstr = str(cargs[0]) elif len(cargs) == 2: - self.cuid = str(cargs[0]) + self.page_id = str(cargs[0]) self.browserstr = str(cargs[1]) if self.csessid: diff --git a/evennia/server/portal/webclient_ajax.py b/evennia/server/portal/webclient_ajax.py index 9ec5211cdb..fb4d3d5c20 100644 --- a/evennia/server/portal/webclient_ajax.py +++ b/evennia/server/portal/webclient_ajax.py @@ -270,6 +270,18 @@ class AjaxWebClient(resource.Resource): """ return html.escape(request.args[b"csessid"][0].decode("utf-8")) + def get_client_page_id(self, request): + """ + Helper to get the client page id out of the request. + + Args: + request (Request): Incoming request object. + Returns: + csessid (int): The client-page id. + + """ + return html.escape(request.args[b"cuid"][0].decode("utf-8")) + def get_browserstr(self, request): """ Get browser-string out of the request. @@ -313,10 +325,10 @@ class AjaxWebClient(resource.Resource): def client_disconnect(self, csessid): """ - Disconnect session with given csessid. + Disconnect session with given id. Args: - csessid (int): Session id. + csessid (int): Client page+session id. """ if csessid in self.requests: @@ -324,6 +336,11 @@ class AjaxWebClient(resource.Resource): del self.requests[csessid] if csessid in self.databuffer: del self.databuffer[csessid] + if csessid in self.requests: + self.requests[csessid].finish() + del self.requests[csessid] + if csessid in self.databuffer: + del self.databuffer[csessid] def mode_init(self, request): """ @@ -334,7 +351,8 @@ class AjaxWebClient(resource.Resource): request (Request): Incoming request. """ - csessid = self.get_client_sessid(request) + session_id = self.get_client_sessid(request) + page_id = self.get_client_page_id(request) browserstr = self.get_browserstr(request) remote_addr = ip_from_request(request) @@ -349,9 +367,9 @@ class AjaxWebClient(resource.Resource): sess.client = self sess.init_session("ajax/comet", remote_addr, self.sessionhandler) - sess.csessid = csessid + sess.csessid = session_id+page_id sess.browserstr = browserstr - csession = _CLIENT_SESSIONS(session_key=sess.csessid) + csession = _CLIENT_SESSIONS(session_key=session_id) uid = csession and csession.get("webclient_authenticated_uid", False) if uid: # the client session is already logged in @@ -359,7 +377,7 @@ class AjaxWebClient(resource.Resource): sess.logged_in = True # watch for dead links - self.last_alive[csessid] = (time.time(), False) + self.last_alive[sess.csessid] = (time.time(), False) if not self.keep_alive: # the keepalive is not running; start it. self.keep_alive = LoopingCall(self._keepalive) @@ -373,7 +391,7 @@ class AjaxWebClient(resource.Resource): # actually do the connection sess.sessionhandler.connect(sess) - return jsonify({"msg": host_string, "csessid": csessid}) + return jsonify({"msg": host_string, "csessid": session_id}) def mode_keepalive(self, request): """ @@ -384,7 +402,7 @@ class AjaxWebClient(resource.Resource): request (Request): Incoming request. """ - csessid = self.get_client_sessid(request) + csessid = self.get_client_sessid(request) + self.get_client_page_id(request) self.last_alive[csessid] = (time.time(), False) return b'""' @@ -397,7 +415,7 @@ class AjaxWebClient(resource.Resource): request (Request): Incoming request. """ - csessid = self.get_client_sessid(request) + csessid = self.get_client_sessid(request) + self.get_client_page_id(request) self.last_alive[csessid] = (time.time(), False) cmdarray = json.loads(request.args.get(b"data")[0]) for sess in self.sessionhandler.sessions_from_csessid(csessid): @@ -415,9 +433,10 @@ class AjaxWebClient(resource.Resource): request (Request): Incoming request. """ - csessid = html.escape(request.args[b"csessid"][0].decode("utf-8")) + csessid = self.get_client_sessid(request) + self.get_client_page_id(request) self.last_alive[csessid] = (time.time(), False) + dataentries = self.databuffer.get(csessid) dataentries = self.databuffer.get(csessid) if dataentries: # we have data that could not be sent earlier (because client was not @@ -430,6 +449,10 @@ class AjaxWebClient(resource.Resource): if csessid in self.requests: self.requests[csessid].finish() # Clear any stale request. self.requests[csessid] = request + request.notifyFinish().addErrback(self._responseFailed, csessid, request) + if csessid in self.requests: + self.requests[csessid].finish() # Clear any stale request. + self.requests[csessid] = request return server.NOT_DONE_YET def mode_close(self, request): @@ -441,12 +464,14 @@ class AjaxWebClient(resource.Resource): request (Request): Incoming request. """ - csessid = self.get_client_sessid(request) + csessid = self.get_client_sessid(request) + self.get_client_page_id(request) try: + sess = self.sessionhandler.sessions_from_csessid(csessid)[0] sess = self.sessionhandler.sessions_from_csessid(csessid)[0] sess.sessionhandler.disconnect(sess) except IndexError: self.client_disconnect(csessid) + self.client_disconnect(csessid) return b'""' def render_POST(self, request):