From 706fb2729e76738694b2d417ab3b9fb03ee19e20 Mon Sep 17 00:00:00 2001 From: HF Date: Thu, 3 Jun 2021 23:19:21 +0200 Subject: [PATCH] remove minecraft stuff --- API.md | 43 ------------ src/core/minecraft.js | 122 ---------------------------------- src/socket/APISocketServer.js | 86 +----------------------- 3 files changed, 1 insertion(+), 250 deletions(-) delete mode 100644 src/core/minecraft.js diff --git a/API.md b/API.md index f8b5a9b1..0c62f23a 100644 --- a/API.md +++ b/API.md @@ -48,52 +48,9 @@ error is a message on error, else null. success... self explanatory waitSeconds is the current cooldown. coolDownSeconds is the added cooldown (negative if pixel couldn't be set because max cooldown got reached) -### Minecraft Login notification -```["login", minecraftid, minecraftname, ip]``` -You will get an answer back like: - -```["mcme", minecraftid, waitSeconds, pixelplanetname]``` - -with pixelplanetname being null/None if there is no pixelplanet account linked to this minecraftid. -wait Seconds is the cooldown like in `retpixel` above. -### Minecraft LogOut notification -```["logout", minecraftid]``` -### Send Chat Message from Minecraft -```["mcchat", minecraftname, message]``` - -(got an extra command because minecraftname gets resolved to linked pixelplanet user if possible) ### Send Chat Message ```["chat", name, message, country, channelId]``` channelId is an integer, channel 0 is `en` channel 1 is `int` and maybe more to come. (messages with the name "info" will be displayed as red notifications in the chat window) -### Link Minecraft Account to pixelplanet Account -```["linkacc", minecraftid, minecraftname, pixelplanetname]``` - -Immediate answer: - -```["linkret", minecraftid, error]``` - -Error will be null/None if link request can get sent, else it will be a string with the reason why not, examples: - -- "You are already verified to [name]" -- "Can not find user [name] on pixelplanet" -- "You already linked to other account [name]" - -User will then be asked if he wants to link the account on pixelplanet. - -Answer after accept/deny by user: - -```["linkver", minecraftid, pixelplanetname, accepted]``` - -With accepted being either true or false. This will be sent to every client connected to the API websocket. -### Report online minecraft users -Send list of all online users in minecraft periodically (all 10 to 15min) to avoid getting out of sync. - -```["userlst", [["minecraftid1", "minecraftname1"], ["minecraftid2", "minecraftname2"], ...]]``` -### Minecraft TP request - -If a user requests a tp in minecraft you get a message - -```["mctp", "minecraftid", x, y]``` diff --git a/src/core/minecraft.js b/src/core/minecraft.js deleted file mode 100644 index 2feb667b..00000000 --- a/src/core/minecraft.js +++ /dev/null @@ -1,122 +0,0 @@ -/* - * - * Minecraft user handling - * - * @flow - */ - -import { User, RegUser } from '../data/models'; - - -class Minecraft { - online: Object; - - constructor() { - this.online = {}; - } - - async reportLogin(minecraftid, minecraftname) { - const user = new User(); - user.minecraftname = minecraftname; - const reguser = await RegUser.findOne({ where: { minecraftid } }); - if (reguser && reguser.mcVerified) { - user.setRegUser(reguser); - reguser.update({ minecraftname }); - } - this.online[minecraftid] = user; - // this.updateRedisOnlineList(); - return user; - } - - /* - * TODO: whole online list should be handled by redis - updateRedisOnlineList() { - } - */ - - reportLogout(minecraftid) { - delete this.online[minecraftid]; - } - - reportUserlist(list) { - this.online = {}; - list.forEach((user) => { - const [minecraftid, minecraftname] = user; - this.reportLogin(minecraftid, minecraftname); - }); - } - - static async linkacc(minecraftid, minecraftname, name) { - try { - const finduser = await RegUser.findOne({ where: { minecraftid } }); - if (finduser) { - if (finduser.name === name) { - if (finduser.mcVerified) { - return 'You are already verified'; - } - // eslint-disable-next-line max-len - return 'You already got a verification message in the pixelplanet UserArea. Please refresh the page if you do not see it.'; - } - return `You already linked to other account ${finduser.name}.`; - } - const reguser = await RegUser.findOne({ where: { name } }); - if (reguser) { - if (reguser.minecraftid) { - // eslint-disable-next-line max-len - return `This pixelplanet account is already linked to ${reguser.minecraftname}`; - } - reguser.update({ minecraftname, minecraftid }); - return null; - } - return `Can not find user ${name} on pixelplanet.`; - } catch (err) { - return 'An unexpected error occured :('; - } - } - - minecraftid2User(minecraftid: string): User { - if (this.online[minecraftid]) { - return this.online[minecraftid]; - } - - const user = new User(); - if (minecraftid) { - RegUser.findOne({ where: { minecraftid } }).then((reguser) => { - if (reguser && reguser.mcVerified) { - user.id = reguser.id; - user.minecraftname = reguser.minecraftname; - user.setRegUser(reguser); - } else { - user.minecraftname = minecraftid; - } - }); - } - return user; - } - - minecraftname2User(minecraftname: string): User { - const searchstring = minecraftname; - const onlineIds = Object.keys(this.online); - for (let i = 0; i < onlineIds.length; i += 1) { - const id = onlineIds[i]; - const user = this.online[id]; - if (user.minecraftname === searchstring) { return user; } - } - - const user = new User(); - user.minecraftname = searchstring; - if (minecraftname) { - RegUser.findOne({ where: { minecraftname } }).then((reguser) => { - if (reguser && reguser.mcVerified) { - user.id = reguser.id; - user.setRegUser(reguser); - // this.online[reguser.minecraftid] = user; - } - }); - } - return user; - } -} - - -export default Minecraft; diff --git a/src/socket/APISocketServer.js b/src/socket/APISocketServer.js index d507763b..96ad35fa 100644 --- a/src/socket/APISocketServer.js +++ b/src/socket/APISocketServer.js @@ -14,9 +14,7 @@ import WebSocket from 'ws'; import WebSocketEvents from './WebSocketEvents'; import webSockets from './websockets'; import { getIPFromRequest } from '../utils/ip'; -import Minecraft from '../core/minecraft'; import { setPixelByCoords } from '../core/setPixel'; -import { drawByCoords } from '../core/draw'; import logger from '../core/logger'; import { APISOCKET_KEY } from '../core/config'; import chatProvider from '../core/ChatProvider'; @@ -42,7 +40,6 @@ async function verifyClient(info, done) { class APISocketServer extends WebSocketEvents { wss: WebSocket.Server; - mc: Minecraft; constructor() { super(); @@ -59,7 +56,6 @@ class APISocketServer extends WebSocketEvents { verifyClient, }); this.wss = wss; - this.mc = new Minecraft(); wss.on('error', (e) => { logger.error(`APIWebSocket Server Error ${e.message}`); @@ -196,79 +192,11 @@ class APISocketServer extends WebSocketEvents { if (!minecraftid && !ip) { setPixelByCoords('0', clr, x, y); ws.send(JSON.stringify(['retpxl', null, null, true, 0, 0])); - return; } - const user = this.mc.minecraftid2User(minecraftid); - user.ip = ip; - const { - error, success, waitSeconds, coolDownSeconds, - } = await drawByCoords(user, '0', clr, x, y, null); - ws.send(JSON.stringify([ - 'retpxl', - (minecraftid) || ip, - (error) || null, - success, - waitSeconds, - (coolDownSeconds) || null, - ])); + // minecraftid support got removed return; } logger.info(`APISocket message ${message}`); - if (command === 'login') { - const [minecraftid, minecraftname, ip] = packet; - const user = await this.mc.reportLogin(minecraftid, minecraftname); - // get userinfo - user.ip = ip; - const wait = await user.getWait(0); - const waitSeconds = (wait) ? wait / 1000 : null; - const name = (user.id == null) ? null : user.regUser.name; - ws.send(JSON.stringify([ - 'mcme', - minecraftid, - waitSeconds, - name, - ])); - return; - } - if (command === 'userlst') { - const [userlist] = packet; - if (!Array.isArray(userlist) || !Array.isArray(userlist[0])) { - logger.error('Got invalid minecraft userlist on APISocketServer'); - return; - } - this.mc.reportUserlist(userlist); - return; - } - if (command === 'logout') { - const [minecraftid] = packet; - this.mc.reportLogout(minecraftid); - return; - } - if (command === 'mcchat') { - const [minecraftname, msg] = packet; - const user = this.mc.minecraftname2User(minecraftname); - const chatname = (user.id) - ? `[MC] ${user.regUser.name}` - : `[MC] ${minecraftname}`; - chatProvider.broadcastChatMessage( - chatname, - msg, - chatProvider.enChannelId, - chatProvider.infoUserId, - 'xx', - false, - ); - this.broadcastChatMessage( - chatname, - msg, - chatProvider.enChannelId, - chatProvider.infoUserId, - 'xx', - true, - ws, - ); - return; - } if (command === 'chat') { const [name, msg, country, channelId] = packet; chatProvider.broadcastChatMessage( @@ -290,18 +218,6 @@ class APISocketServer extends WebSocketEvents { ); return; } - if (command === 'linkacc') { - const [minecraftid, minecraftname, name] = packet; - const ret = await Minecraft.linkacc(minecraftid, minecraftname, name); - if (!ret) { - webSockets.notifyChangedMe(name); - } - ws.send(JSON.stringify([ - 'linkret', - minecraftid, - ret, - ])); - } } catch (err) { logger.error(`Got undecipherable api-ws message ${message}`); }