From 1dc2722d509e578b243bfda1a675dcfdb6003941 Mon Sep 17 00:00:00 2001 From: RblSb Date: Mon, 27 Sep 2021 20:13:55 +0300 Subject: Got a bug? Write /dump to chat as admin And open new issue with received file. --- src/server/Main.hx | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) (limited to 'src/server/Main.hx') diff --git a/src/server/Main.hx b/src/server/Main.hx index b9e9325..748c513 100644 --- a/src/server/Main.hx +++ b/src/server/Main.hx @@ -238,7 +238,13 @@ class Main { function saveState():Void { trace("Saving state..."); - final data:ServerState = { + final json = Json.stringify(getCurrentState(), "\t"); + File.saveContent(statePath, json); + writeUsers(userList); + } + + function getCurrentState():ServerState { + return { videoList: videoList, isPlaylistOpen: isPlaylistOpen, itemPos: itemPos, @@ -248,9 +254,6 @@ class Main { paused: videoTimer.isPaused() } } - final json = Json.stringify(data, "\t"); - File.saveContent(statePath, json); - writeUsers(userList); } function loadState():Void { @@ -395,6 +398,7 @@ class Main { if (data.type == TogglePlaylistLock) return false; if (data.type == UpdatePlaylist) return false; if (data.type == Logout) return false; + if (data.type == Dump) return false; // check if request has same field as type value final t:String = cast data.type; final t = t.charAt(0).toLowerCase() + t.substr(1); @@ -811,6 +815,29 @@ class Main { isOpen: isPlaylistOpen } }); + + case Dump: + if (!client.isAdmin) return; + final data = { + state: getCurrentState(), + clients: clients.map(client -> { + name: client.name, + id: client.id, + ip: clientIp(client.req), + isBanned: client.isBanned, + isAdmin: client.isAdmin, + isLeader: client.isLeader, + isUser: client.isUser, + }), + logs: logger.getLogs() + } + final json = Json.stringify(data, logger.filterNulls, "\t"); + send(client, { + type: Dump, + dump: { + data: json + } + }); } } -- cgit v1.2.3