Skip to content

Commit e60aee3

Browse files
committed
Merge branch 'main' into add_py_mode
2 parents 3cd46ac + ce572a6 commit e60aee3

5 files changed

Lines changed: 150 additions & 130 deletions

File tree

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Response Route: /raw
1818
Web Interface to View Protos: /
1919
Traffic Route mode /traffic
2020
Golbat Route mode /golbat
21+
PolyX Route mode /PolygonX/PostProtos
2122
2223
2324
Web Interface:
@@ -83,6 +84,33 @@ interface CombinedMessage {
8384
}
8485
```
8586

87+
### Support for PolygonX interfaces
88+
**Sent to** `/PolygonX/PostProtos`
89+
90+
```js
91+
interface CombinedMessage {
92+
protos: [
93+
{
94+
method: number
95+
proto: bytes
96+
request: bytes
97+
trainer_id: string
98+
trainer_level: number
99+
has_geotargeted_ar_scan_quest: boolean
100+
}
101+
]
102+
push_gateway_protos: [
103+
{
104+
method: number
105+
proto: bytes
106+
trainer_id: string
107+
trainer_level: number
108+
has_geotargeted_ar_scan_quest: boolean
109+
}
110+
]
111+
}
112+
```
113+
86114
### Requirements
87115

88116
```

src/constants/index.ts

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,11 @@ export const requestMessagesResponses = {
118118
REQUEST_TYPE_METHOD_SATURDAY_TRANSACTION_COMPLETE: [828, POGOProtos.Rpc.SaturdayCompleteProto, POGOProtos.Rpc.SaturdayCompleteOutProto],
119119
REQUEST_TYPE_METHOD_REIMBURSE_ITEM: [829, null, null],
120120
REQUEST_TYPE_METHOD_LIFT_USER_AGE_CONFIRMATION: [830, POGOProtos.Rpc.LiftUserAgeGateConfirmationProto, POGOProtos.Rpc.LiftUserAgeGateConfirmationOutProto],
121+
REQUEST_TYPE_METHOD_SOFT_SFIDA_START: [831, POGOProtos.Rpc.SoftSfidaStartProto, POGOProtos.Rpc.SoftSfidaStartOutProto],
122+
REQUEST_TYPE_METHOD_SOFT_SFIDA_PAUSE: [832, POGOProtos.Rpc.SoftSfidaPauseProto, POGOProtos.Rpc.SoftSfidaPauseOutProto],
123+
REQUEST_TYPE_METHOD_SOFT_SFIDA_CAPTURE: [833, POGOProtos.Rpc.SoftSfidaCaptureProto, POGOProtos.Rpc.SoftSfidaCaptureOutProto],
124+
REQUEST_TYPE_METHOD_SOFT_SFIDA_LOCATION_UPDATE: [834, POGOProtos.Rpc.SoftSfidaLocationUpdateProto, POGOProtos.Rpc.SoftSfidaLocationUpdateOutProto],
125+
REQUEST_TYPE_METHOD_SOFT_SFIDA_RECAP: [835, POGOProtos.Rpc.SoftSfidaRecapProto, POGOProtos.Rpc.SoftSfidaRecapOutProto],
121126
REQUEST_TYPE_METHOD_GET_NEW_QUESTS: [900, POGOProtos.Rpc.GetNewQuestsProto, POGOProtos.Rpc.GetNewQuestsOutProto],
122127
REQUEST_TYPE_METHOD_GET_QUEST_DETAILS: [901, POGOProtos.Rpc.GetQuestDetailsProto, POGOProtos.Rpc.GetQuestDetailsOutProto],
123128
REQUEST_TYPE_METHOD_COMPLETE_QUEST: [902, POGOProtos.Rpc.CompleteQuestProto, POGOProtos.Rpc.CompleteQuestOutProto],
@@ -127,6 +132,7 @@ export const requestMessagesResponses = {
127132
REQUEST_TYPE_METHOD_PROGRESS_QUEST: [906, POGOProtos.Rpc.ProgressQuestProto, POGOProtos.Rpc.ProgressQuestOutProto],
128133
REQUEST_TYPE_METHOD_START_QUEST_INCIDENT: [907, POGOProtos.Rpc.StartQuestIncidentProto, null],
129134
REQUEST_TYPE_METHOD_READ_QUEST_DIALOG: [908, POGOProtos.Rpc.ReadQuestDialogProto, POGOProtos.Rpc.ReadQuestDialogOutProto],
135+
REQUEST_TYPE_METHOD_DEQUEUE_QUEST_DIALOGUE: [909, POGOProtos.Rpc.DequeueQuestDialogueProto, POGOProtos.Rpc.DequeueQuestDialogueOutProto],
130136
REQUEST_TYPE_METHOD_SEND_GIFT: [950, POGOProtos.Rpc.SendGiftProto, POGOProtos.Rpc.SendGiftOutProto],
131137
REQUEST_TYPE_METHOD_OPEN_GIFT: [951, POGOProtos.Rpc.OpenGiftProto, POGOProtos.Rpc.OpenGiftOutProto],
132138
REQUEST_TYPE_METHOD_GIFT_DETAILS: [952, POGOProtos.Rpc.GetGiftBoxDetailsProto, POGOProtos.Rpc.GetGiftBoxDetailsOutProto],
@@ -183,7 +189,7 @@ export const requestMessagesResponses = {
183189
REQUEST_TYPE_METHOD_INVASION_ENCOUNTER: [1204, POGOProtos.Rpc.InvasionEncounterProto, POGOProtos.Rpc.InvasionEncounterOutProto],
184190
REQUEST_TYPE_METHOD_PURIFY_POKEMON: [1205, POGOProtos.Rpc.PurifyPokemonProto, POGOProtos.Rpc.PurifyPokemonOutProto],
185191
REQUEST_TYPE_METHOD_GET_ROCKET_BALLOON: [1206, POGOProtos.Rpc.GetRocketBalloonProto, POGOProtos.Rpc.GetRocketBalloonOutProto],
186-
REQUEST_TYPE_METHOD_START_ROCKET_BALLOON_INCIDENT: [1207, POGOProtos.Rpc.StartRocketBalloonIncidentProto, null],
192+
REQUEST_TYPE_METHOD_START_ROCKET_BALLOON_INCIDENT: [1207, POGOProtos.Rpc.StartRocketBalloonIncidentProto, POGOProtos.Rpc.StartIncidentOutProto],
187193
REQUEST_TYPE_METHOD_VS_SEEKER_START_MATCHMAKING: [1300, POGOProtos.Rpc.VsSeekerStartMatchmakingProto, POGOProtos.Rpc.VsSeekerStartMatchmakingOutProto],
188194
REQUEST_TYPE_METHOD_CANCEL_MATCHMAKING: [1301, POGOProtos.Rpc.CancelMatchmakingProto, POGOProtos.Rpc.CancelMatchmakingOutProto],
189195
REQUEST_TYPE_METHOD_GET_MATCHMAKING_STATUS: [1302, POGOProtos.Rpc.GetMatchmakingStatusProto, POGOProtos.Rpc.GetMatchmakingStatusOutProto],
@@ -234,6 +240,7 @@ export const requestMessagesResponses = {
234240
REQUEST_TYPE_METHOD_REMOTE_GIFT_PING: [1503, POGOProtos.Rpc.RemoteGiftPingRequestProto, POGOProtos.Rpc.RemoteGiftPingResponseProto],
235241
REQUEST_TYPE_METHOD_SEND_RAID_INVITATION: [1504, POGOProtos.Rpc.SendRaidInvitationProto, POGOProtos.Rpc.SendRaidInvitationOutProto],
236242
REQUEST_TYPE_METHOD_SEND_BREAD_BATTLE_INVITATION: [1505, POGOProtos.Rpc.SendBreadBattleInvitationProto, POGOProtos.Rpc.SendBreadBattleInvitationOutProto],
243+
REQUEST_TYPE_METHOD_UNLOCK_TEMPORARY_EVOLUTION_LEVEL: [1506, POGOProtos.Rpc.UnlockTemporaryEvolutionLevelProto, POGOProtos.Rpc.UnlockTemporaryEvolutionLevelOutProto],
237244
REQUEST_TYPE_METHOD_GET_DAILY_ENCOUNTER: [1601, POGOProtos.Rpc.GetDailyEncounterProto, POGOProtos.Rpc.GetDailyEncounterOutProto],
238245
REQUEST_TYPE_METHOD_DAILY_ENCOUNTER: [1602, POGOProtos.Rpc.DailyEncounterProto, POGOProtos.Rpc.DailyEncounterOutProto],
239246
REQUEST_TYPE_METHOD_OPEN_SPONSORED_GIFT: [1650, POGOProtos.Rpc.OpenSponsoredGiftProto, POGOProtos.Rpc.OpenSponsoredGiftOutProto],
@@ -419,6 +426,10 @@ export const requestMessagesResponses = {
419426
REQUEST_TYPE_METHOD_START_PVP_BATTLE: [3071, POGOProtos.Rpc.StartPvpBattleProto, POGOProtos.Rpc.StartPvpBattleOutProto],
420427
REQUEST_TYPE_METHOD_COMPLETE_PVP_BATTLE: [3072, POGOProtos.Rpc.CompletePvpBattleProto, POGOProtos.Rpc.CompletePvpBattleOutProto],
421428
REQUEST_TYPE_METHOD_AR_PHOTO_REWARD: [3074, null, null],
429+
REQUEST_TYPE_METHOD_UPDATE_FIELD_BOOK_POST_CATCH_POKEMON: [3075, POGOProtos.Rpc.UpdateFieldBookPostCatchPokemonProto, POGOProtos.Rpc.UpdateFieldBookPostCatchPokemonOutProto],
430+
REQUEST_TYPE_METHOD_GET_TIME_TRAVEL_INFORMATION: [3076, POGOProtos.Rpc.GetTimeTravelInformationProto, POGOProtos.Rpc.GetTimeTravelInformationOutProto],
431+
REQUEST_TYPE_METHOD_DAY_NIGHT_POI_ENCOUNTER: [3077, POGOProtos.Rpc.DayNightPoiEncounterProto, POGOProtos.Rpc.DayNightPoiEncounterOutProto],
432+
REQUEST_TYPE_METHOD_MARK_FIELDBOOK_SEEN: [3078, POGOProtos.Rpc.MarkFieldbookSeenRequestProto, POGOProtos.Rpc.MarkFieldbookSeenResponseProto],
422433
REQUEST_TYPE_PLATFORM_REGISTER_PUSH_NOTIFICATION: [5000, POGOProtos.Rpc.PushNotificationRegistryProto, POGOProtos.Rpc.PushNotificationRegistryOutProto],
423434
REQUEST_TYPE_PLATFORM_UNREGISTER_PUSH_NOTIFICATION: [5001, null, null],
424435
REQUEST_TYPE_PLATFORM_UPDATE_NOTIFICATION_STATUS: [5002, POGOProtos.Rpc.UpdateNotificationProto, POGOProtos.Rpc.UpdateNotificationOutProto],
@@ -469,6 +480,19 @@ export const requestMessagesResponses = {
469480
REQUEST_TYPE_PLATFORM_SET_BIRTHDAY: [5048, POGOProtos.Rpc.SetBirthdayRequestProto, POGOProtos.Rpc.SetBirthdayResponseProto],
470481
REQUEST_TYPE_PLATFORM_FETCH_NEWSFEED_ACTION: [5049, POGOProtos.Rpc.PlatformFetchNewsfeedRequest, POGOProtos.Rpc.FetchNewsfeedResponse],
471482
REQUEST_TYPE_PLATFORM_MARK_NEWSFEED_READ_ACTION: [5050, POGOProtos.Rpc.PlatformMarkNewsfeedReadRequest, POGOProtos.Rpc.MarkNewsfeedReadResponse],
483+
REQUEST_TYPE_ENABLE_CAMPFIRE_FOR_REFEREE: [6001, POGOProtos.Rpc.EnableCampfireForRefereeProto, POGOProtos.Rpc.EnableCampfireForRefereeOutProto],
484+
REQUEST_TYPE_REMOVE_CAMPFIRE_FOR_REFEREE: [6002, POGOProtos.Rpc.RemoveCampfireForRefereeProto, POGOProtos.Rpc.RemoveCampfireForRefereeOutProto],
485+
REQUEST_TYPE_GET_PLAYER_RAID_ELIGIBILITY: [6003, POGOProtos.Rpc.GetPlayerRaidEligibilityProto, POGOProtos.Rpc.GetPlayerRaidEligibilityOutProto],
486+
REQUEST_TYPE_GRANT_CAMPFIRE_CHECK_IN_REWARDS: [6004, null, null],
487+
REQUEST_TYPE_GET_NUM_POKEMON_IN_IRIS_SOCIAL_SCENE: [6005, POGOProtos.Rpc.GetNumPokemonInIrisSocialSceneProto, POGOProtos.Rpc.GetNumPokemonInIrisSocialSceneOutProto],
488+
REQUEST_TYPE_GET_RSVP_COUNT: [6006, null, null],
489+
REQUEST_TYPE_GET_RSVP_TIMESLOTS: [6007, null, null],
490+
REQUEST_TYPE_GET_PLAYER_RSVPS: [6008, null, null],
491+
REQUEST_TYPE_CAMPFIRE_CREATE_EVENT_RSVP: [6009, null, null],
492+
REQUEST_TYPE_CAMPFIRE_CANCEL_EVENT_RSVP: [6010, null, null],
493+
REQUEST_TYPE_CAMPFIRE_UPDATE_EVENT_RSVP_SELECTION: [6011, null, null],
494+
REQUEST_TYPE_GET_MAP_OBJECTS_FOR_CAMPFIRE: [6012, POGOProtos.Rpc.GetMapObjectsForCampfireProto, POGOProtos.Rpc.GetMapObjectsForCampfireOutProto],
495+
REQUEST_TYPE_GET_MAP_OBJECTS_DETAIL_FOR_CAMPFIRE: [6013, POGOProtos.Rpc.GetMapObjectsDetailForCampfireProto, POGOProtos.Rpc.GetMapObjectsDetailForCampfireOutProto],
472496
REQUEST_TYPE_SOCIAL_ACTION_SEARCH_PLAYER: [10000, POGOProtos.Rpc.InternalSearchPlayerProto, POGOProtos.Rpc.InternalSearchPlayerOutProto],
473497
REQUEST_TYPE_SOCIAL_ACTION_SEND_FRIEND_INVITE: [10002, POGOProtos.Rpc.InternalSendFriendInviteProto, POGOProtos.Rpc.InternalSendFriendInviteOutProto],
474498
REQUEST_TYPE_SOCIAL_ACTION_CANCEL_FRIEND_INVITE: [10003, POGOProtos.Rpc.InternalCancelFriendInviteProto, POGOProtos.Rpc.InternalCancelFriendInviteOutProto],
@@ -533,6 +557,23 @@ export const requestMessagesResponses = {
533557
REQUEST_TYPE_SOCIAL_ACTION_RESERVED_ACTION_4: [20401, null, null],
534558
REQUEST_TYPE_SOCIAL_ACTION_RESERVED_ACTION_5: [20402, null, null],
535559
REQUEST_TYPE_SOCIAL_ACTION_GET_FRIEND_RECOMMENDATION: [20500, POGOProtos.Rpc.InternalGetFriendRecommendationRequest, POGOProtos.Rpc.InternalGetFriendRecommendationResponse],
560+
REQUEST_TYPE_SOCIAL_ACTION_BATCH_GET_FEATURED_MOMENTS: [20600, null, null],
561+
REQUEST_TYPE_SOCIAL_ACTION_REACT_TO_MOMENT: [20601, null, null],
562+
REQUEST_TYPE_SOCIAL_ACTION_UPDATE_MOMENT_SETTINGS: [20602, null, null],
563+
REQUEST_TYPE_SOCIAL_ACTION_GET_MOMENT_SETTINGS: [20603, null, null],
564+
REQUEST_TYPE_SOCIAL_ACTION_GET_MOMENT_HISTORY: [20604, null, null],
565+
REQUEST_TYPE_SOCIAL_ACTION_GET_LAST_UNPINNED_PLAYER_MOMENT: [20605, null, null],
566+
REQUEST_TYPE_SOCIAL_ACTION_PIN_PLAYER_MOMENT: [20606, null, null],
567+
REQUEST_TYPE_SOCIAL_ACTION_UNPIN_PLAYER_MOMENT: [20607, null, null],
568+
REQUEST_TYPE_SOCIAL_ACTION_LIST_MOMENT_REACTIONS: [20608, null, null],
569+
REQUEST_TYPE_SOCIAL_ACTION_SEND_ACTIVITY_INVITE: [20700, null, null],
570+
REQUEST_TYPE_SOCIAL_ACTION_RESERVED_ACTION8: [20701, null, null],
571+
REQUEST_TYPE_SOCIAL_ACTION_RESERVED_ACTION9: [20702, null, null],
572+
REQUEST_TYPE_SOCIAL_ACTION_LIST_INCOMING_ACTIVITY_INVITES: [20703, null, null],
573+
REQUEST_TYPE_SOCIAL_ACTION_LIST_OUTGOING_ACTIVITY_INVITES: [20704, null, null],
574+
REQUEST_TYPE_SOCIAL_ACTION_UPDATE_ACTIVITY_INVITE: [20705, null, null],
575+
REQUEST_TYPE_SOCIAL_ACTION_CANCEL_ACTIVITY_INVITE: [20706, null, null],
576+
REQUEST_TYPE_SOCIAL_ACTION_CHECK_ACTIVITY_INVITE_INBOX: [20707, null, null],
536577
REQUEST_TYPE_DOWNSTREAM_ACTION_NEW_INBOX_MESSAGE_ACTION: [121000, null, null],
537578
REQUEST_TYPE_DOWNSTREAM_ACTION_CUSTOM_DOWNSTREAM_ACTION: [121001, null, null],
538579
REQUEST_TYPE_DOWNSTREAM_ACTION_CHAT_SIGNAL: [121002, null, null],
@@ -590,7 +631,7 @@ export const requestMessagesResponses = {
590631
REQUEST_TYPE_GAME_ACCOUNT_REGISTRY_ACTION_LINK_TO_ACCOUNT_LOGIN_ACTION: [600006, POGOProtos.Rpc.InternalLinkToAccountLoginRequestProto, POGOProtos.Rpc.InternalLinkToAccountLoginResponseProto],
591632
REQUEST_TYPE_GAME_ACCOUNT_REGISTRY_ACTION_GET_APP_REQUEST_TOKEN_REDIRECT_URL_PLATFORM_ACTION: [600007, null, null],
592633
REQUEST_TYPE_GAME_TELEMETRY_ACTION_COLLECT_CLIENT_TELEMETRY: [610000, POGOProtos.Rpc.MapsClientTelemetryBatchProto, POGOProtos.Rpc.MapsClientTelemetryResponseProto],
593-
REQUEST_TYPE_GAME_TELEMETRY_ACTION_GET_CLIENT_TELEMETRY_SETTINGS: [610001, null, null],
634+
REQUEST_TYPE_GAME_TELEMETRY_ACTION_GET_CLIENT_TELEMETRY_SETTINGS: [610001, POGOProtos.Rpc.ClientTelemetrySettingsRequestProto, POGOProtos.Rpc.ClientTelemetryClientSettingsProto],
594635
REQUEST_TYPE_TITAN_PLAYER_SUBMISSION_ACTION_ADD_NEW_POI: [620000, POGOProtos.Rpc.TitanSubmitNewPoiProto, POGOProtos.Rpc.TitanSubmitNewPoiOutProto],
595636
REQUEST_TYPE_TITAN_PLAYER_SUBMISSION_ACTION_GET_AVAILABLE_SUBMISSIONS: [620001, POGOProtos.Rpc.TitanGetAvailableSubmissionsProto, POGOProtos.Rpc.TitanGetAvailableSubmissionsOutProto],
596637
REQUEST_TYPE_TITAN_PLAYER_SUBMISSION_ACTION_GET_SIGNED_URL_FOR_PHOTO_UPLOAD: [620002, null, null],

src/index.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import fs from "fs";
33
import crypto from "crypto";
44
import { WebStreamBuffer, getIPAddress, handleData, moduleConfigIsAvailable, redirect_post_golbat } from "./utils";
55
import { decodePayload, decodePayloadTraffic, decodeProtoFromBytes } from "./parser/proto-parser";
6-
import { RawProtoCollection, RawProtoCollectionMessage } from "./protos/polygonx";
76
import SampleSaver from "./utils/sample-saver";
7+
import POGOProtos from "@na-ji/pogo-protos";
88

99
// try looking if config file exists...
1010
let config = require("./config/example.config.json");
@@ -223,18 +223,18 @@ const httpServer = http.createServer(function (req, res) {
223223
}
224224

225225
// Decode the RawProtoCollection from binary protobuf
226-
const decoded = RawProtoCollection.decode(binaryData) as unknown as RawProtoCollectionMessage;
226+
const decoded = POGOProtos.Rpc.AllTypesAndMessagesResponsesProto.Hexagon.RawProtoCollectionMessage.decode(binaryData);
227227

228228
// Process RawProto entries (have both request and response)
229229
if (decoded.protos && Array.isArray(decoded.protos)) {
230230
for (const rawProto of decoded.protos) {
231-
const identifier = rawProto.trainerId || "unknown";
232-
const method = rawProto.method;
231+
const identifier = rawProto.trainer_id || "unknown";
232+
const method = rawProto.method?.valueOf() || 0;
233233
const requestBytes = rawProto.request;
234234
const responseBytes = rawProto.proto;
235235

236236
// Decode request
237-
if (requestBytes && requestBytes.length > 0) {
237+
if (requestBytes && requestBytes.length > 0 && method !== 0) {
238238
const parsedRequestData = decodeProtoFromBytes(method, requestBytes, "request");
239239
if (typeof parsedRequestData !== "string") {
240240
parsedRequestData.identifier = identifier;
@@ -265,10 +265,10 @@ const httpServer = http.createServer(function (req, res) {
265265
}
266266

267267
// Process RawPushGatewayProto entries (response only)
268-
if (decoded.pushGatewayProtos && Array.isArray(decoded.pushGatewayProtos)) {
269-
for (const pushProto of decoded.pushGatewayProtos) {
270-
const identifier = pushProto.trainerId || "unknown";
271-
const method = pushProto.method;
268+
if (decoded.push_gateway_protos && Array.isArray(decoded.push_gateway_protos)) {
269+
for (const pushProto of decoded.push_gateway_protos) {
270+
const identifier = pushProto.trainer_id || "unknown";
271+
const method = pushProto.method?.valueOf() || 0;
272272
const responseBytes = pushProto.proto;
273273

274274
// Decode response

src/protos/polygonx.ts

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)