From f5827f6b8b5e4d77f9729598e3c275306da5d973 Mon Sep 17 00:00:00 2001 From: Nyo Date: Fri, 17 Jun 2016 17:43:49 +0200 Subject: [PATCH] .BANCHO. Add userpanel packets --- constants/clientPackets.py | 2 ++ constants/packetIDs.py | 2 +- events/loginEvent.py | 4 ++-- events/userPanelRequestEvent.py | 17 +++++++++++++++++ handlers/mainHandler.py | 2 ++ objects/fokabot.py | 8 +++++++- version | 2 +- 7 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 events/userPanelRequestEvent.py diff --git a/constants/clientPackets.py b/constants/clientPackets.py index 9ede8d3..8e8309c 100644 --- a/constants/clientPackets.py +++ b/constants/clientPackets.py @@ -18,6 +18,8 @@ def userActionChange(stream): def userStatsRequest(stream): return packetHelper.readPacketData(stream, [["users", dataTypes.intList]]) +def userPanelRequest(stream): + return packetHelper.readPacketData(stream, [["users", dataTypes.intList]]) """ Client chat packets """ diff --git a/constants/packetIDs.py b/constants/packetIDs.py index 9be9c5c..4506fd9 100644 --- a/constants/packetIDs.py +++ b/constants/packetIDs.py @@ -96,7 +96,7 @@ client_specialMatchInfoRequest = 93 server_userSilenced = 94 server_userPresenceSingle = 95 server_userPresenceBundle = 96 -client_userPresenceRequest = 97 +client_userPanelRequest = 97 client_userPresenceRequestAll = 98 client_userToggleBlockNonFriendPM = 99 server_userPMBlocked = 100 diff --git a/events/loginEvent.py b/events/loginEvent.py index a8b2798..4ce317e 100644 --- a/events/loginEvent.py +++ b/events/loginEvent.py @@ -152,9 +152,9 @@ def handle(tornadoRequest): if userHelper.getCountry(userID) == "XX": userHelper.setCountry(userID, countryLetters) - # Send to everyone our userpanel and userStats (so they now we have logged in) + # Send to everyone our userpanel glob.tokens.enqueueAll(serverPackets.userPanel(userID)) - glob.tokens.enqueueAll(serverPackets.userStats(userID)) + #glob.tokens.enqueueAll(serverPackets.userStats(userID)) # Set reponse data to right value and reset our queue responseData = responseToken.queue diff --git a/events/userPanelRequestEvent.py b/events/userPanelRequestEvent.py new file mode 100644 index 0000000..c097646 --- /dev/null +++ b/events/userPanelRequestEvent.py @@ -0,0 +1,17 @@ +from constants import clientPackets +from constants import serverPackets +from helpers import logHelper as log + +def handle(userToken, packetData): + # Read userIDs list + packetData = clientPackets.userPanelRequest(packetData) + + # Process lists with length <= 32 + if len(packetData) > 256: + log.warning("Received userPanelRequest with length > 256") + return + + for i in packetData["users"]: + # Enqueue userpanel packets relative to this user + log.debug("Sending panel for user {}".format(i)) + userToken.enqueue(serverPackets.userPanel(i)) diff --git a/handlers/mainHandler.py b/handlers/mainHandler.py index 5c40e57..1929bff 100644 --- a/handlers/mainHandler.py +++ b/handlers/mainHandler.py @@ -46,6 +46,7 @@ from events import matchInviteEvent from events import matchChangeTeamEvent from events import userStatsRequestEvent from events import requestStatusUpdateEvent +from events import userPanelRequestEvent # Exception tracking import tornado.web @@ -152,6 +153,7 @@ class handler(SentryMixin, requestHelper.asyncRequestHandler): packetIDs.client_matchChangeTeam: handleEvent(matchChangeTeamEvent), packetIDs.client_userStatsRequest: handleEvent(userStatsRequestEvent), packetIDs.client_requestStatusUpdate: handleEvent(requestStatusUpdateEvent), + packetIDs.client_userPanelRequest: handleEvent(userPanelRequestEvent), } if packetID != 4: diff --git a/objects/fokabot.py b/objects/fokabot.py index 7265303..94120a7 100644 --- a/objects/fokabot.py +++ b/objects/fokabot.py @@ -16,7 +16,13 @@ def connect(): token = glob.tokens.addToken(999) token.actionID = actions.idle glob.tokens.enqueueAll(serverPackets.userPanel(999)) - glob.tokens.enqueueAll(serverPackets.userStats(999)) + ####glob.tokens.enqueueAll(serverPackets.userStats(999)) + + # NOTE: Debug thing to set all users as connected + #users = glob.db.fetchAll("SELECT id FROM users") + #for i in users: + # t = glob.tokens.addToken(i["id"]) + # t.actionID = actions.idle def disconnect(): """Remove FokaBot from connected users""" diff --git a/version b/version index 3a3cd8c..1892b92 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.3.1 +1.3.2