mirror of
https://github.com/maierfelix/POGOserver.git
synced 2026-04-17 15:15:52 -05:00
Update
This commit is contained in:
parent
83fa228615
commit
dbddba2eee
|
|
@ -7,8 +7,10 @@ export default function AuthTicket() {
|
|||
|
||||
return (
|
||||
new proto.Networking.Envelopes.AuthTicket({
|
||||
start: new Buffer(""),
|
||||
expire_timestamp_ms: 9999999999999,
|
||||
end: new Buffer("")
|
||||
})
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
238
src/request.js
238
src/request.js
|
|
@ -1,17 +1,71 @@
|
|||
import fs from "fs";
|
||||
import proto from "./proto";
|
||||
|
||||
import * as CFG from "../cfg";
|
||||
import { REQUEST } from "../requests";
|
||||
|
||||
import { ResponseEnvelope, AuthTicket, GetPlayer } from "./packets";
|
||||
import {
|
||||
ResponseEnvelope,
|
||||
ResponseEnvelopeAuth,
|
||||
AuthTicket,
|
||||
GetInventory,
|
||||
GetHatchedEggs,
|
||||
CheckAwardedBadges,
|
||||
DownloadSettings,
|
||||
DownloadRemoteConfigVersion,
|
||||
GetPlayer,
|
||||
GetPlayerProfile,
|
||||
ItemTemplates,
|
||||
GetAssetDigest
|
||||
} from "./packets";
|
||||
|
||||
import { decodeRequestEnvelope } from "./utils";
|
||||
|
||||
import jwtDecode from "jwt-decode";
|
||||
|
||||
/**
|
||||
* @param {Buffer} body
|
||||
* @return {Buffer}
|
||||
*/
|
||||
export function decodeRequestBody(body) {
|
||||
return (
|
||||
proto.Networking.Envelopes.RequestEnvelope.decode(body)
|
||||
);
|
||||
export function authenticatePlayer() {
|
||||
|
||||
let player = this.player;
|
||||
|
||||
let request = decodeRequestEnvelope(this.getRequestBody());
|
||||
|
||||
let msg = ResponseEnvelopeAuth({
|
||||
id: request.request_id
|
||||
});
|
||||
|
||||
let token = request.auth_info;
|
||||
|
||||
if (token.provider === "google") {
|
||||
let decoded = jwtDecode(token.token.contents);
|
||||
player.generateUid(decoded.email);
|
||||
player.email = decoded.email;
|
||||
player.email_verified = decoded.email_verified;
|
||||
this.print(`${player.email.replace("@gmail.com", "")} connected!`, 36);
|
||||
}
|
||||
|
||||
player.authenticated = true;
|
||||
|
||||
return (msg);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Request} req
|
||||
* @return {String}
|
||||
*/
|
||||
export function getRequestType(req) {
|
||||
|
||||
for (let key in REQUEST) {
|
||||
if (REQUEST[key] === req.request_type) {
|
||||
return (key);
|
||||
}
|
||||
};
|
||||
|
||||
return ("INVALID");
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -20,98 +74,150 @@ export function decodeRequestBody(body) {
|
|||
*/
|
||||
export function onRequest(req, res) {
|
||||
|
||||
let request = this.decodeRequestBody(req.body);
|
||||
this.player = this.getPlayerByRequest(req);
|
||||
this.player.response = res;
|
||||
|
||||
console.log("Got request");
|
||||
console.log("Received:", request.requests.map((request) => {
|
||||
return request.request_type;
|
||||
}).join(","));
|
||||
let player = this.player;
|
||||
|
||||
let answer = this.processRequests(request);
|
||||
// Validate email verification
|
||||
if (player.authenticated) {
|
||||
if (!player.email_verified) {
|
||||
return void 0;
|
||||
}
|
||||
}
|
||||
|
||||
//res.send(answer);
|
||||
let request = proto.Networking.Envelopes.RequestEnvelope.decode(req.body);
|
||||
|
||||
console.log("#####");
|
||||
request.requests.map((request) => {
|
||||
console.log("Got request:", this.getRequestType(request));
|
||||
}).join(",");
|
||||
|
||||
if (!player.authenticated) {
|
||||
this.send(this.authenticatePlayer());
|
||||
return void 0;
|
||||
}
|
||||
|
||||
let answer = this.processRequests(request.requests);
|
||||
let msg = this.envelopResponse(1, request.request_id, answer, !!request.auth_ticket, request.unknown6);
|
||||
|
||||
this.send(msg);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Request} req
|
||||
* @param {Number} status
|
||||
* @param {Long} id
|
||||
* @param {Array} response
|
||||
* @param {Boolean} auth
|
||||
* @param {Array} unknown6
|
||||
* @return {Buffer}
|
||||
*/
|
||||
export function envelopResponse(status, id, response, auth, unknown6) {
|
||||
|
||||
let answer = ResponseEnvelope({
|
||||
id: id,
|
||||
status: status,
|
||||
response: response
|
||||
});
|
||||
|
||||
if (auth) answer.auth_ticket = AuthTicket();
|
||||
|
||||
return (answer);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Array} requests
|
||||
* @return {Array}
|
||||
*/
|
||||
export function processRequests(req) {
|
||||
export function processRequests(requests) {
|
||||
|
||||
let ii = 0;
|
||||
let length = req.requests.length;
|
||||
let length = requests.length;
|
||||
|
||||
let body = [];
|
||||
|
||||
for (; ii < length; ++ii) {
|
||||
body.push(this.processRequest(req.requests[ii]));
|
||||
body.push(this.processRequest(requests[ii]));
|
||||
};
|
||||
|
||||
return (body);
|
||||
|
||||
}
|
||||
|
||||
export function decodeBuffer(buffer) {
|
||||
|
||||
let auth = proto.Networking.Envelopes.RequestEnvelope.decode(buffer);
|
||||
|
||||
//console.log(auth);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Request} req
|
||||
* @return {Object}
|
||||
* @param {Request} req
|
||||
* @return {Buffer}
|
||||
*/
|
||||
export function processRequest(req) {
|
||||
export function processRequest(request) {
|
||||
|
||||
switch (req.request_type) {
|
||||
// #LOGIN START
|
||||
case REQUEST.GET_PLAYER:
|
||||
this.decodeBuffer(req.request_message.buffer);
|
||||
return (
|
||||
GetPlayer({
|
||||
username: "Felix",
|
||||
team: 2,
|
||||
pokecoins: 500,
|
||||
stardust: 32500
|
||||
})
|
||||
);
|
||||
break;
|
||||
case REQUEST.GET_HATCHED_EGGS:
|
||||
let buffer = null;
|
||||
|
||||
break;
|
||||
case REQUEST.GET_INVENTORY:
|
||||
switch (request.request_type){
|
||||
case REQUEST.GET_PLAYER:
|
||||
buffer = GetPlayer({
|
||||
username: "MrHuhn",
|
||||
team: 1,
|
||||
pokecoins: 1337,
|
||||
stardust: 1338
|
||||
});
|
||||
break;
|
||||
case REQUEST.GET_HATCHED_EGGS:
|
||||
buffer = GetHatchedEggs();
|
||||
break;
|
||||
case REQUEST.GET_INVENTORY:
|
||||
buffer = GetInventory();
|
||||
break;
|
||||
case REQUEST.CHECK_AWARDED_BADGES:
|
||||
buffer = CheckAwardedBadges();
|
||||
break;
|
||||
case REQUEST.DOWNLOAD_SETTINGS:
|
||||
buffer = DownloadSettings();
|
||||
break;
|
||||
case REQUEST.DOWNLOAD_ITEM_TEMPLATES:
|
||||
buffer = ItemTemplates();
|
||||
break;
|
||||
case REQUEST.DOWNLOAD_REMOTE_CONFIG_VERSION:
|
||||
buffer = DownloadRemoteConfigVersion();
|
||||
break;
|
||||
case REQUEST.GET_ASSET_DIGEST:
|
||||
buffer = GetAssetDigest();
|
||||
break;
|
||||
case REQUEST.GET_PLAYER_PROFILE:
|
||||
buffer = GetPlayerProfile();
|
||||
break;
|
||||
case REQUEST.GET_MAP_OBJECTS:
|
||||
this.player.updatePosition(request);
|
||||
break;
|
||||
};
|
||||
|
||||
break;
|
||||
case REQUEST.CHECK_AWARDED_BADGES:
|
||||
|
||||
break;
|
||||
case REQUEST.DOWNLOAD_SETTINGS:
|
||||
|
||||
break;
|
||||
case REQUEST.DOWNLOAD_ITEM_TEMPLATES:
|
||||
|
||||
break;
|
||||
// #LOGIN END
|
||||
case REQUEST.GET_PLAYER_PROFILE:
|
||||
|
||||
break;
|
||||
case REQUEST.GET_MAP_OBJECTS:
|
||||
|
||||
break;
|
||||
case REQUEST.GET_GYM_DETAILS:
|
||||
|
||||
break;
|
||||
};
|
||||
return (buffer);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Request} req
|
||||
* @param {Request} req
|
||||
* @return {Boolean}
|
||||
*/
|
||||
export function validRequest(req) {
|
||||
return (true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {Buffer}
|
||||
*/
|
||||
export function getRequestBody() {
|
||||
return (
|
||||
this.request.body
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Buffer} buffer
|
||||
*/
|
||||
export function send(buffer) {
|
||||
|
||||
this.player.response.end(buffer);
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user