From efc078b78c028ba335d2140cd28db154478073b3 Mon Sep 17 00:00:00 2001 From: Griatch Date: Tue, 9 Apr 2013 17:51:30 +0200 Subject: [PATCH] Cleaned up the logging of connect/disconnect. --- src/server/sessionhandler.py | 47 +++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/src/server/sessionhandler.py b/src/server/sessionhandler.py index de9357e383..48627963f3 100644 --- a/src/server/sessionhandler.py +++ b/src/server/sessionhandler.py @@ -191,21 +191,6 @@ class ServerSessionHandler(SessionHandler): data="") # server-side access methods - def disconnect(self, session, reason=""): - """ - Called from server side to remove session and inform portal - of this fact. - """ - session = self.sessions.get(session.sessid) - if session: - session.at_disconnect() - sessid = session.sessid - del self.sessions[sessid] - # inform portal that session should be closed. - self.server.amp_protocol.call_remote_PortalAdmin(sessid, - operation=SDISCONN, - data=reason) - def login(self, session, player): """ Log in the previously unloggedin session and the player we by @@ -232,15 +217,14 @@ class ServerSessionHandler(SessionHandler): player.at_pre_login() - session.log(_('Logged in: %(self)s') % {'self': player}) - - # start (persistent) scripts on this object - #ScriptDB.objects.validate(obj=self.player.character) - if MULTISESSION_MODE == 0: # disconnect all previous sessions. self.disconnect_duplicate_sessions(session) + nsess = len(self.sessions_from_player(player)) + totalstring = "%i session%s total" % (nsess, nsess > 1 and "s" or "") + session.log(_('Logged in: %s %s (%s)' % (player, session.address, totalstring))) + session.logged_in = True # sync the portal to the session sessdata = session.get_sync_data() @@ -249,6 +233,29 @@ class ServerSessionHandler(SessionHandler): data=sessdata) player.at_post_login() + def disconnect(self, session, reason=""): + """ + Called from server side to remove session and inform portal + of this fact. + """ + session = self.sessions.get(session.sessid) + if not session: + return + + if hasattr(session, "player") and session.player: + # only log accounts logging off + nsess = len(self.sessions_from_player(session.player)) - 1 + remaintext = nsess and "%i session%s remaining" % (nsess, nsess > 1 and "s" or "") or "no more sessions" + session.log(_('Logged out: %s %s (%s)' % (session.player, session.address, remaintext))) + + session.at_disconnect() + sessid = session.sessid + del self.sessions[sessid] + # inform portal that session should be closed. + self.server.amp_protocol.call_remote_PortalAdmin(sessid, + operation=SDISCONN, + data=reason) + def all_sessions_portal_sync(self): """ This is called by the server when it reboots. It syncs all session data