From 7e4b213bfb97391316a06515d70fbc01c9cef741 Mon Sep 17 00:00:00 2001 From: SALTWOOD <105980161+SALTWOOD@users.noreply.github.com> Date: Mon, 30 Sep 2024 14:03:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E8=A2=AB=20ban=20=E4=BB=8D=E7=84=B6=E5=88=86=E5=8F=91=E6=B5=81?= =?UTF-8?q?=E9=87=8F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/FileList.ts | 2 +- src/Server.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/FileList.ts b/src/FileList.ts index 3dd0e5e..6bce65c 100644 --- a/src/FileList.ts +++ b/src/FileList.ts @@ -79,7 +79,7 @@ export class FileList { const availableClusters: ClusterEntity[] = []; const values = clusters? clusters : this._clusters; - for (const cluster of values.filter(c => c.isOnline)) { + for (const cluster of values.filter(c => c.isOnline && !(c.isBanned))) { if (FileList.availableInCluster(file, cluster)) { availableClusters.push(cluster); } diff --git a/src/Server.ts b/src/Server.ts index 9cbd78c..d741d20 100644 --- a/src/Server.ts +++ b/src/Server.ts @@ -792,10 +792,23 @@ export class Server { return; } cluster.isBanned = Number(data.ban); + cluster.doOffline("This cluster is banned."); this.db.update(cluster); res.setHeader('Content-Type', 'application/json'); res.status(200).json(cluster.getJson(true, false)); }); + this.app.post('/93AtHome/super/cluster/kick', (req: Request, res: Response) => { + if (!Utilities.verifyAdmin(req, res, this.db)) return; + const clusterId = req.query.clusterId as string || ""; + const cluster = this.clusters.find(c => c.clusterId === clusterId); + if (!cluster) { + res.status(404).send(); // 集群不存在 + return; + } + cluster.doOffline("Operator kicked this cluster."); + this.db.update(cluster); + res.status(200).json(cluster.getJson(true, false)); + }); this.app.post('/93AtHome/super/cluster/profile', (req: Request, res: Response) => { if (!Utilities.verifyAdmin(req, res, this.db)) return; const userId = JwtHelper.getInstance().verifyToken(req.cookies.token, 'user') as { userId: number }; @@ -1035,6 +1048,7 @@ export class Server { } else if (cluster?.isBanned) { socket.send("This cluster is banned."); + cluster.doOffline("This cluster is banned."); } ack([null, false]); }