UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

59 lines (56 loc) 10.5 kB
import fastJWT from 'fast-jwt'; import { NetworkUtil } from '../NetworkUtil.es.js'; import Device from '../../utils/Device.es.js'; import Skin from '../../utils/skin/Skin.es.js'; import Identifiers from '../Identifiers.es.js'; import DataPacket from './DataPacket.es.js'; class LoginPacket extends DataPacket { static NetID = Identifiers.LoginPacket; /** * The client's xbox live ID. */ XUID; identity; /** * The client's username. */ displayName; protocol; identityPublicKey; clientRandomId; serverAddress; languageCode; device; skin; decodePayload() { this.protocol = this.readInt(); this.readUnsignedVarInt(); const chainData = JSON.parse(NetworkUtil.readLELengthASCIIString(this)); const decode = fastJWT.createDecoder(); for (const chain of chainData.chain) { const decodedChain = decode(chain); if (decodedChain.extraData) { this.XUID = decodedChain.extraData.XUID; this.identity = decodedChain.extraData.identity; this.displayName = decodedChain.extraData.displayName; } this.identityPublicKey = decodedChain.identityPublicKey; } const decodedJWT = decode(NetworkUtil.readLELengthASCIIString(this)); this.skin = Skin.fromJWT(decodedJWT); this.device = new Device({ id: decodedJWT.DeviceId, os: decodedJWT.DeviceOS, model: decodedJWT.DeviceModel, inputMode: decodedJWT.CurrentInputMode, guiScale: decodedJWT.GuiScale }); this.clientRandomId = decodedJWT.ClientRandomId; this.serverAddress = decodedJWT.ServerAddress; this.languageCode = decodedJWT.LanguageCode; } encodePayload() { } } export { LoginPacket as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naW5QYWNrZXQuZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9uZXR3b3JrL3BhY2tldC9Mb2dpblBhY2tldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmFzdEpXVCBmcm9tICdmYXN0LWp3dCc7XG5pbXBvcnQgeyBOZXR3b3JrVXRpbCB9IGZyb20gJy4uLy4uL25ldHdvcmsvTmV0d29ya1V0aWwnO1xuaW1wb3J0IERldmljZSBmcm9tICcuLi8uLi91dGlscy9EZXZpY2UnO1xuaW1wb3J0IFNraW4gZnJvbSAnLi4vLi4vdXRpbHMvc2tpbi9Ta2luJztcbmltcG9ydCBJZGVudGlmaWVycyBmcm9tICcuLi9JZGVudGlmaWVycyc7XG5pbXBvcnQgRGF0YVBhY2tldCBmcm9tICcuL0RhdGFQYWNrZXQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dpblBhY2tldCBleHRlbmRzIERhdGFQYWNrZXQge1xuICAgIHB1YmxpYyBzdGF0aWMgTmV0SUQgPSBJZGVudGlmaWVycy5Mb2dpblBhY2tldDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjbGllbnQncyB4Ym94IGxpdmUgSUQuXG4gICAgICovXG4gICAgcHVibGljIFhVSUQhOiBzdHJpbmc7XG4gICAgcHVibGljIGlkZW50aXR5ITogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNsaWVudCdzIHVzZXJuYW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNwbGF5TmFtZSE6IHN0cmluZztcbiAgICBwdWJsaWMgcHJvdG9jb2whOiBudW1iZXI7XG4gICAgcHVibGljIGlkZW50aXR5UHVibGljS2V5ITogc3RyaW5nO1xuXG4gICAgcHVibGljIGNsaWVudFJhbmRvbUlkITogbnVtYmVyO1xuICAgIHB1YmxpYyBzZXJ2ZXJBZGRyZXNzITogc3RyaW5nO1xuICAgIHB1YmxpYyBsYW5ndWFnZUNvZGUhOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgZGV2aWNlITogRGV2aWNlO1xuICAgIHB1YmxpYyBza2luITogU2tpbjtcblxuICAgIHB1YmxpYyBkZWNvZGVQYXlsb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3RvY29sID0gdGhpcy5yZWFkSW50KCk7XG5cbiAgICAgICAgLy8gVE9ETzogY29udGVudCBsZW5ndGgsIHRvIHZhbGlkYXRlIGl0J3MgbGVuZ2h0Li4uXG4gICAgICAgIHRoaXMucmVhZFVuc2lnbmVkVmFySW50KCk7XG4gICAgICAgIGNvbnN0IGNoYWluRGF0YSA9IEpTT04ucGFyc2UoTmV0d29ya1V0aWwucmVhZExFTGVuZ3RoQVNDSUlTdHJpbmcodGhpcykpIGFzIGFueTtcbiAgICAgICAgY29uc3QgZGVjb2RlID0gZmFzdEpXVC5jcmVhdGVEZWNvZGVyKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBjaGFpbiBvZiBjaGFpbkRhdGEuY2hhaW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRDaGFpbiA9IGRlY29kZShjaGFpbik7XG5cbiAgICAgICAgICAgIGlmIChkZWNvZGVkQ2hhaW4uZXh0cmFEYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5YVUlEID0gZGVjb2RlZENoYWluLmV4dHJhRGF0YS5YVUlEO1xuICAgICAgICAgICAgICAgIHRoaXMuaWRlbnRpdHkgPSBkZWNvZGVkQ2hhaW4uZXh0cmFEYXRhLmlkZW50aXR5O1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU5hbWUgPSBkZWNvZGVkQ2hhaW4uZXh0cmFEYXRhLmRpc3BsYXlOYW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlkZW50aXR5UHVibGljS2V5ID0gZGVjb2RlZENoYWluLmlkZW50aXR5UHVibGljS2V5O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVjb2RlZEpXVCA9IGRlY29kZShOZXR3b3JrVXRpbC5yZWFkTEVMZW5ndGhBU0NJSVN0cmluZyh0aGlzKSk7XG4gICAgICAgIHRoaXMuc2tpbiA9IFNraW4uZnJvbUpXVChkZWNvZGVkSldUKTtcbiAgICAgICAgdGhpcy5kZXZpY2UgPSBuZXcgRGV2aWNlKHtcbiAgICAgICAgICAgIGlkOiBkZWNvZGVkSldULkRldmljZUlkLFxuICAgICAgICAgICAgb3M6IGRlY29kZWRKV1QuRGV2aWNlT1MsXG4gICAgICAgICAgICBtb2RlbDogZGVjb2RlZEpXVC5EZXZpY2VNb2RlbCxcbiAgICAgICAgICAgIGlucHV0TW9kZTogZGVjb2RlZEpXVC5DdXJyZW50SW5wdXRNb2RlLFxuICAgICAgICAgICAgZ3VpU2NhbGU6IGRlY29kZWRKV1QuR3VpU2NhbGVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jbGllbnRSYW5kb21JZCA9IGRlY29kZWRKV1QuQ2xpZW50UmFuZG9tSWQ7XG4gICAgICAgIHRoaXMuc2VydmVyQWRkcmVzcyA9IGRlY29kZWRKV1QuU2VydmVyQWRkcmVzcztcbiAgICAgICAgdGhpcy5sYW5ndWFnZUNvZGUgPSBkZWNvZGVkSldULkxhbmd1YWdlQ29kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5jb2RlUGF5bG9hZCgpOiB2b2lkIHtcbiAgICAgICAgLypcbiAgICAgICAgVE9ET1xuICAgICAgICB0aGlzLndyaXRlSW50KElkZW50aWZpZXJzLlByb3RvY29sKTtcblxuICAgICAgICBjb25zdCBzdHJlYW0gPSBuZXcgQmluYXJ5U3RyZWFtKCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBjaGFpbjogW1xuICAgICAgICAgICAgICAgIFwiZXlKaGJHY2lPaUpGVXpNNE5DSXNJbmcxZFNJNklrMUlXWGRGUVZsSVMyOWFTWHBxTUVOQlVWbEdTelJGUlVGRFNVUlpaMEZGWml0UU55OTRSRW96VUZGVEsyVnNiMU01V2poRGR6Y3pNRzB2Y25kRlpsWm1hV2cxUWpCUVptdEVkV1IyUW1sSWVYSnhVamhtYUVnNVlXSmtSV1JFTHpFM1NrOXhaVmR3WlRSemNqQjNTazlGWkRSUlYwNXdibTVrWWs5MFYwWXpUWG8xYms1YVZVMXJla0V3YVdFMlYyOHZRbkJRUTBoWFIwOTNRM1I1Yld3aWZRby5leUpqWlhKMGFXWnBZMkYwWlVGMWRHaHZjbWwwZVNJNmRISjFaU3dpWlhod0lqb3hOakEyTkRZNU9UZzRMQ0pwWkdWdWRHbDBlVkIxWW14cFkwdGxlU0k2SWsxSVdYZEZRVmxJUzI5YVNYcHFNRU5CVVZsR1N6UkZSVUZEU1VSWlowRkZPRVZNYTJsNGVVeGpkMnhhY25sVlVXTjFNVlIyVUU5dFNUSkNOM1pZT0ROdVpHNVhVbFZoV0cwM05IZEdabUUxWmk5c2QxRk9WR1p5VEZaSVlUSlFiV1Z1Y0VkSk5rcG9TVTFWU21GWFduSnFiVTFxT1RCT2IwdE9SbE5PUW5WTFpHMDRjbGxwV0hObVlYb3pTek0yZUM4eFZUSTJTSEJITUZwNFN5OVdNVllpTENKdVltWWlPakUyTURZeU9UY3hNamg5Q2cuMnp2eFdFRDB1bUUwZllnWmx4NmgzZElmUHcxaHY1MFVnNUR2dE9YcVZIQnYyc2ZyaVRCN2prSlNNR3Aycm51TllTX0lyX1E0ZTlDU1dBNUF6dXV1SjgyWjNwcDJTUXVYN1loMUxwbG12akFvaVhmUXFRcjRfVGF1a0J0R1htTGRcIixcbiAgICAgICAgICAgICAgICBcImV5SjROWFVpT2lKTlNGbDNSVUZaU0V0dldrbDZhakJEUVZGWlJrczBSVVZCUTBsRVdXZEJSVGhGVEd0cGVIbE1ZM2RzV25KNVZWRmpkVEZVZGxCUGJVa3lRamQyV0RnemJtUnVWMUpWWVZodE56UjNSbVpoTldaY0wyeDNVVTVVWm5KTVZraGhNbEJ0Wlc1d1IwazJTbWhKVFZWS1lWZGFjbXB0VFdvNU1FNXZTMDVHVTA1Q2RVdGtiVGh5V1dsWWMyWmhlak5MTXpaNFhDOHhWVEkyU0hCSE1GcDRTMXd2VmpGV0lpd2lZV3huSWpvaVJWTXpPRFFpZlEuZXlKdVltWWlPakUyTURZeU9UY3hNamdzSW5KaGJtUnZiVTV2Ym1ObElqb3RNalV4TmpBek5EUTROak0wTlRBNU5UazFOeXdpYVhOeklqb2lUVzlxWVc1bklpd2laWGh3SWpveE5qQTJORFk1T1RnNExDSmpaWEowYVdacFkyRjBaVUYxZEdodmNtbDBlU0k2ZEhKMVpTd2lhV0YwSWpveE5qQTJNamszTVRnNExDSnBaR1Z1ZEdsMGVWQjFZbXhwWTB0bGVTSTZJazFJV1hkRlFWbElTMjlhU1hwcU1FTkJVVmxHU3pSRlJVRkRTVVJaWjBGRllVSlRiamx2U1d4c05tOUhkazVzVG0xd1hDOXpSRkpaVEVaRlZUbFRaREpoWlVGWU5UaFNTR3BMS3pCME5teDBXV1Z0V0dGdWJYWTFOVnd2V2xOcWJqQlhOVWRaWmtGSFMwWTBUMWxuY1dOMFdXVmllR3hFUldWWU1Gd3ZjREJZVDF3dmR5dE5VbHd2UzNad2FuRldlalpaZW1kWU5sUm1RVGMzYzNkdlRYVk5VRFJ6U1NKOS5GTWZpR1JVT2p3NmJJM0g0Q2hZcWdzSFk0dDh5V2ltcTNRdTI3RDY4d1F3bEJVaUJlT2RBRlZiMk5ITFdLQlhLQlAzeTN0eGJuOUE2NVh2cmc5QldoVlpQWno1cEdMeHdpUk5sOWY4aUpKZmxmaTNRZktNTWFpTHJqajhaWVF3bFwiLFxuICAgICAgICAgICAgICAgIFwiZXlKNE5YVWlPaUpOU0ZsM1JVRlpTRXR2V2tsNmFqQkRRVkZaUmtzMFJVVkJRMGxFV1dkQlJXRkNVMjQ1YjBsc2JEWnZSM1pPYkU1dGNGd3ZjMFJTV1V4R1JWVTVVMlF5WVdWQldEVTRVa2hxU3lzd2REWnNkRmxsYlZoaGJtMTJOVFZjTDFwVGFtNHdWelZIV1daQlIwdEdORTlaWjNGamRGbGxZbmhzUkVWbFdEQmNMM0F3V0U5Y0wzY3JUVkpjTDB0MmNHcHhWbm8yV1hwbldEWlVaa0UzTjNOM2IwMTFUVkEwYzBraUxDSmhiR2NpT2lKRlV6TTROQ0o5LmV5SnVZbVlpT2pFMk1EWXlPVGswTURrc0ltVjRkSEpoUkdGMFlTSTZleUpZVlVsRUlqb2lNalV6TlRReE16WTJNVE14TVRVd01pSXNJbWxrWlc1MGFYUjVJam9pWkRSbU5tUXdObUl0TkRrNE9TMHpZV0l3TFRsa01ETXRPREEyT1RSbE1qUTNaV0ppSWl3aVpHbHpjR3hoZVU1aGJXVWlPaUpJWlhKeWVWbFVJaXdpZEdsMGJHVkpaQ0k2SWpnNU5qa3lPRGMzTlNKOUxDSnlZVzVrYjIxT2IyNWpaU0k2TFRZek9UQTJNamd3TkRBM01EZzJNRGt5Tml3aWFYTnpJam9pVFc5cVlXNW5JaXdpWlhod0lqb3hOakEyTXpnMU9EWTVMQ0pwWVhRaU9qRTJNRFl5T1RrME5qa3NJbWxrWlc1MGFYUjVVSFZpYkdsalMyVjVJam9pVFVoWmQwVkJXVWhMYjFwSmVtb3dRMEZSV1VaTE5FVkZRVU5KUkZsblFVVm1LMUEzWEM5NFJFb3pVRkZUSzJWc2IxTTVXamhEZHpjek1HMWNMM0ozUldaV1ptbG9OVUl3VUdaclJIVmtka0pwU0hseWNWSTRabWhJT1dGaVpFVmtSRnd2TVRkS1QzRmxWM0JsTkhOeU1IZEtUMFZrTkZGWFRuQnVibVJpVDNSWFJqTk5lalZ1VGxwVlRXdDZRVEJwWVRaWGIxd3ZRbkJRUTBoWFIwOTNRM1I1Yld3aWZRLnlhNTE1cW9DR2x1WWhTd01IR0hLUkdhZUNhcnJCcjZtcDBIOWdDeEpRXzh4TFRHaktkeU5HS2VRRmxkb1JxRFRMQ1pzRUlUckx1QUtCUWtnU3dYaVZJYkFlaE82SGVJYmpFU2lvNmhWRUxVQTlDMmVlbEJhc1FPREwtbEU4a2F4XCJcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3RyZWFtLndyaXRlVW5zaWduZWRWYXJJbnQoNTUzMDkpOyAgLy8gRnVsbCBsZW5ndGhcblxuICAgICAgICBzdHJlYW0ud3JpdGVMSW50KEJ1ZmZlci5ieXRlTGVuZ3RoKGRhdGEpKTtcbiAgICAgICAgc3RyZWFtLmFwcGVuZChCdWZmZXIuZnJvbShkYXRhLCAndXRmOCcpKTtcbiAgICAgICAgKi9cbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQU9BLE1BQXFCLG9CQUFvQixVQUFXLENBQUE7QUFBQSxFQUNoRCxPQUFjLFFBQVEsV0FBWSxDQUFBLFdBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUszQixJQUFBO0FBQUEsRUFDQSxRQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxXQUFBO0FBQUEsRUFDQSxRQUFBO0FBQUEsRUFDQSxpQkFBQTtBQUFBLEVBRUEsY0FBQTtBQUFBLEVBQ0EsYUFBQTtBQUFBLEVBQ0EsWUFBQTtBQUFBLEVBRUEsTUFBQTtBQUFBLEVBQ0EsSUFBQTtBQUFBLEVBRUEsYUFBc0IsR0FBQTtBQUN6QixJQUFLLElBQUEsQ0FBQSxRQUFBLEdBQVcsS0FBSyxPQUFRLEVBQUE7QUFHN0IsSUFBQSxJQUFBLENBQUssa0JBQW1CLEVBQUE7QUFDeEIsSUFBQSxNQUFNLFlBQVksSUFBSyxDQUFBLEtBQUEsQ0FBTSxXQUFZLENBQUEsdUJBQUEsQ0FBd0IsSUFBSSxDQUFDLENBQUE7QUFDdEUsSUFBTSxNQUFBLE1BQUEsR0FBUyxRQUFRLGFBQWMsRUFBQTtBQUVyQyxJQUFXLEtBQUEsTUFBQSxLQUFBLElBQVMsVUFBVSxLQUFPLEVBQUE7QUFDakMsTUFBTSxNQUFBLFlBQUEsR0FBZSxPQUFPLEtBQUssQ0FBQTtBQUVqQyxNQUFBLElBQUksYUFBYSxTQUFXLEVBQUE7QUFDeEIsUUFBSyxJQUFBLENBQUEsSUFBQSxHQUFPLGFBQWEsU0FBVSxDQUFBLElBQUE7QUFDbkMsUUFBSyxJQUFBLENBQUEsUUFBQSxHQUFXLGFBQWEsU0FBVSxDQUFBLFFBQUE7QUFDdkMsUUFBSyxJQUFBLENBQUEsV0FBQSxHQUFjLGFBQWEsU0FBVSxDQUFBLFdBQUE7QUFBQTtBQUc5QyxNQUFBLElBQUEsQ0FBSyxvQkFBb0IsWUFBYSxDQUFBLGlCQUFBO0FBQUE7QUFHMUMsSUFBQSxNQUFNLFVBQWEsR0FBQSxNQUFBLENBQU8sV0FBWSxDQUFBLHVCQUFBLENBQXdCLElBQUksQ0FBQyxDQUFBO0FBQ25FLElBQUssSUFBQSxDQUFBLElBQUEsR0FBTyxJQUFLLENBQUEsT0FBQSxDQUFRLFVBQVUsQ0FBQTtBQUNuQyxJQUFLLElBQUEsQ0FBQSxNQUFBLEdBQVMsSUFBSSxNQUFPLENBQUE7QUFBQSxNQUNyQixJQUFJLFVBQVcsQ0FBQSxRQUFBO0FBQUEsTUFDZixJQUFJLFVBQVcsQ0FBQSxRQUFBO0FBQUEsTUFDZixPQUFPLFVBQVcsQ0FBQSxXQUFBO0FBQUEsTUFDbEIsV0FBVyxVQUFXLENBQUEsZ0JBQUE7QUFBQSxNQUN0QixVQUFVLFVBQVcsQ0FBQTtBQUFBLEtBQ3hCLENBQUE7QUFFRCxJQUFBLElBQUEsQ0FBSyxpQkFBaUIsVUFBVyxDQUFBLGNBQUE7QUFDakMsSUFBQSxJQUFBLENBQUssZ0JBQWdCLFVBQVcsQ0FBQSxhQUFBO0FBQ2hDLElBQUEsSUFBQSxDQUFLLGVBQWUsVUFBVyxDQUFBLFlBQUE7QUFBQTtBQUNuQyxFQUVPLGFBQXNCLEdBQUE7QUFBQTtBQW9CakM7Ozs7In0=