aboutsummaryrefslogtreecommitdiffstats
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/Logger.hx8
-rw-r--r--src/server/Main.hx35
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
+ }
+ });
}
}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage