diff options
| author | RblSb <msrblsb@gmail.com> | 2021-09-27 20:13:55 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2021-09-27 20:14:36 +0300 |
| commit | 1dc2722d509e578b243bfda1a675dcfdb6003941 (patch) | |
| tree | dd78e7e09432177f5ea4ed8a3febbfbf0d5113ec /src/server | |
| parent | d3c34032ef86163d683ef22906481e0f3196ae79 (diff) | |
Got a bug? Write /dump to chat as admin
And open new issue with received file.
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/Logger.hx | 8 | ||||
| -rw-r--r-- | src/server/Main.hx | 35 |
2 files changed, 37 insertions, 6 deletions
diff --git a/src/server/Logger.hx b/src/server/Logger.hx index cd96d1b..f089c94 100644 --- a/src/server/Logger.hx +++ b/src/server/Logger.hx @@ -23,7 +23,7 @@ class Logger { public function log(event:ServerEvent):Void { logs.push(event); - if (logs.length > 5000) logs.shift(); + if (logs.length > 1000) logs.shift(); } public function saveLog():Void { @@ -34,7 +34,11 @@ class Logger { File.saveContent('$folder/$name.json', Json.stringify(logs, filterNulls, "\t")); } - function filterNulls(key:Any, value:Any):Any { + public function getLogs():Array<ServerEvent> { + return logs; + } + + public function filterNulls(key:Any, value:Any):Any { #if js if (value == null) return js.Lib.undefined; #end 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 + } + }); } } |
