UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

77 lines (76 loc) 7.88 kB
"use strict"; Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } }); const require_runtime = require("../_virtual/_rolldown/runtime.cjs.cjs"); const require_utils_cwd = require("../utils/cwd.cjs.cjs"); let node_fs = require("node:fs"); node_fs = require_runtime.__toESM(node_fs, 1); let confbox = require("confbox"); //#region src/ban/BanManager.ts var FILE_NAME = "banned-players.json"; /** * Ban manager. */ var BanManager = class { server; banned = /* @__PURE__ */ new Map(); constructor(server) { this.server = server; } /** * On enable hook. * @group Lifecycle */ async enable() { await this.parseBanned(); } /** * On disable hook. * @group Lifecycle */ async disable() { this.banned.clear(); } async parseBanned() { try { const dir = require_utils_cwd.withCwd(FILE_NAME); if (!node_fs.default.existsSync(dir)) { this.server.getLogger().warn(`Failed to load ban list!`); node_fs.default.writeFileSync(dir, "[]"); } const banned = (0, confbox.parseJSON5)((await node_fs.default.promises.readFile(dir)).toString()); for (const player of banned) this.banned.set(player.name, player); } catch (error) { this.server.getLogger().error(error); } } async setBanned(username, reason = "") { this.banned.set(username, { reason }); await node_fs.default.promises.writeFile(require_utils_cwd.withCwd(FILE_NAME), JSON.stringify(Array.from(this.banned).map((entry) => ({ name: entry[0], reason: entry[1].reason })), null, 4)); return true; } async setUnbanned(username) { this.banned.delete(username); await node_fs.default.promises.writeFile(require_utils_cwd.withCwd(FILE_NAME), JSON.stringify(Array.from(this.banned).map((entry) => ({ name: entry[0], reason: entry[1].reason })), null, 4)); } /** * Check if player is banned. * @param {Player} player - Player to check. * @returns {string | boolean} Reason if banned, false if not banned. */ isBanned(player) { if (this.banned.has(player.getName())) return this.banned.get(player.getName())?.reason || true; return false; } }; //#endregion exports.default = BanManager; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFuTWFuYWdlci5janMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYW4vQmFuTWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnbm9kZTpmcyc7XG5cbmltcG9ydCB7IHBhcnNlSlNPTjUgfSBmcm9tICdjb25mYm94JztcbmltcG9ydCB0eXBlIFBsYXllciBmcm9tICcuLi9QbGF5ZXInO1xuaW1wb3J0IHR5cGUgU2VydmVyIGZyb20gJy4uL1NlcnZlcic7XG5pbXBvcnQgeyB3aXRoQ3dkIH0gZnJvbSAnLi4vdXRpbHMvY3dkJztcblxuZXhwb3J0IHR5cGUgQmFubmVkUGxheWVyRW50cnkgPSB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHJlYXNvbjogc3RyaW5nIHwgJyc7XG59O1xuXG5jb25zdCBGSUxFX05BTUUgPSAnYmFubmVkLXBsYXllcnMuanNvbic7XG5cbi8qKlxuICogQmFuIG1hbmFnZXIuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhbk1hbmFnZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmVyOiBTZXJ2ZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBiYW5uZWQ6IE1hcDxzdHJpbmcsIE9taXQ8QmFubmVkUGxheWVyRW50cnksICduYW1lJz4+ID0gbmV3IE1hcCgpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHNlcnZlcjogU2VydmVyKSB7XG4gICAgICAgIHRoaXMuc2VydmVyID0gc2VydmVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGVuYWJsZSBob29rLlxuICAgICAqIEBncm91cCBMaWZlY3ljbGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgZW5hYmxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBhcnNlQmFubmVkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gZGlzYWJsZSBob29rLlxuICAgICAqIEBncm91cCBMaWZlY3ljbGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgZGlzYWJsZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5iYW5uZWQuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHBhcnNlQmFubmVkKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGlyID0gd2l0aEN3ZChGSUxFX05BTUUpO1xuICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGRpcikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcnZlci5nZXRMb2dnZXIoKS53YXJuKGBGYWlsZWQgdG8gbG9hZCBiYW4gbGlzdCFgKTtcbiAgICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGRpciwgJ1tdJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGJhbm5lZDogQmFubmVkUGxheWVyRW50cnlbXSA9IHBhcnNlSlNPTjUoKGF3YWl0IGZzLnByb21pc2VzLnJlYWRGaWxlKGRpcikpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBwbGF5ZXIgb2YgYmFubmVkKSB0aGlzLmJhbm5lZC5zZXQocGxheWVyLm5hbWUsIHBsYXllcik7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgICAgICB0aGlzLnNlcnZlci5nZXRMb2dnZXIoKS5lcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2V0QmFubmVkKHVzZXJuYW1lOiBzdHJpbmcsIHJlYXNvbiA9ICcnKSB7XG4gICAgICAgIHRoaXMuYmFubmVkLnNldCh1c2VybmFtZSwge1xuICAgICAgICAgICAgcmVhc29uXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShcbiAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG92ZXJ3cml0ZXMgY29tbWVudHMgaW4gdGhlIGZpbGUuXG4gICAgICAgICAgICB3aXRoQ3dkKEZJTEVfTkFNRSksXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICBBcnJheS5mcm9tKHRoaXMuYmFubmVkKS5tYXAoKGVudHJ5KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBlbnRyeVswXSxcbiAgICAgICAgICAgICAgICAgICAgcmVhc29uOiBlbnRyeVsxXS5yZWFzb25cbiAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZXRVbmJhbm5lZCh1c2VybmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYmFubmVkLmRlbGV0ZSh1c2VybmFtZSk7XG5cbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKFxuICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgb3ZlcndyaXRlcyBjb21tZW50cyBpbiB0aGUgZmlsZS5cbiAgICAgICAgICAgIHdpdGhDd2QoRklMRV9OQU1FKSxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIEFycmF5LmZyb20odGhpcy5iYW5uZWQpLm1hcCgoZW50cnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGVudHJ5WzBdLFxuICAgICAgICAgICAgICAgICAgICByZWFzb246IGVudHJ5WzFdLnJlYXNvblxuICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIDRcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBwbGF5ZXIgaXMgYmFubmVkLlxuICAgICAqIEBwYXJhbSB7UGxheWVyfSBwbGF5ZXIgLSBQbGF5ZXIgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge3N0cmluZyB8IGJvb2xlYW59IFJlYXNvbiBpZiBiYW5uZWQsIGZhbHNlIGlmIG5vdCBiYW5uZWQuXG4gICAgICovXG4gICAgcHVibGljIGlzQmFubmVkKHBsYXllcjogUGxheWVyKTogc3RyaW5nIHwgYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmJhbm5lZC5oYXMocGxheWVyLmdldE5hbWUoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJhbm5lZC5nZXQocGxheWVyLmdldE5hbWUoKSk/LnJlYXNvbiB8fCB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFZQSxJQUFNLFlBQVk7Ozs7QUFLbEIsSUFBcUIsYUFBckIsTUFBZ0M7Q0FDNUI7Q0FDQSx5QkFBd0UsSUFBSSxJQUFJO0NBRWhGLFlBQW1CLFFBQWdCO0VBQy9CLEtBQUssU0FBUztDQUNsQjs7Ozs7Q0FNQSxNQUFhLFNBQXdCO0VBQ2pDLE1BQU0sS0FBSyxZQUFZO0NBQzNCOzs7OztDQU1BLE1BQWEsVUFBeUI7RUFDbEMsS0FBSyxPQUFPLE1BQU07Q0FDdEI7Q0FFQSxNQUFjLGNBQWM7RUFDeEIsSUFBSTtHQUNBLE1BQU0sTUFBTSxrQkFBQSxRQUFRLFNBQVM7R0FDN0IsSUFBSSxDQUFDLFFBQUEsUUFBRyxXQUFXLEdBQUcsR0FBRztJQUNyQixLQUFLLE9BQU8sVUFBVSxFQUFFLEtBQUssMEJBQTBCO0lBQ3ZELFFBQUEsUUFBRyxjQUFjLEtBQUssSUFBSTtHQUM5QjtHQUVBLE1BQU0sVUFBQSxHQUFBLFFBQUEsYUFBMEMsTUFBTSxRQUFBLFFBQUcsU0FBUyxTQUFTLEdBQUcsR0FBRyxTQUFTLENBQUM7R0FDM0YsS0FBSyxNQUFNLFVBQVUsUUFBUSxLQUFLLE9BQU8sSUFBSSxPQUFPLE1BQU0sTUFBTTtFQUNwRSxTQUFTLE9BQWdCO0dBQ3JCLEtBQUssT0FBTyxVQUFVLEVBQUUsTUFBTSxLQUFLO0VBQ3ZDO0NBQ0o7Q0FFQSxNQUFhLFVBQVUsVUFBa0IsU0FBUyxJQUFJO0VBQ2xELEtBQUssT0FBTyxJQUFJLFVBQVUsRUFDdEIsT0FDSixDQUFDO0VBRUQsTUFBTSxRQUFBLFFBQUcsU0FBUyxVQUVkLGtCQUFBLFFBQVEsU0FBUyxHQUNqQixLQUFLLFVBQ0QsTUFBTSxLQUFLLEtBQUssTUFBTSxFQUFFLEtBQUssV0FBVztHQUNwQyxNQUFNLE1BQU07R0FDWixRQUFRLE1BQU0sR0FBRztFQUNyQixFQUFFLEdBQ0YsTUFDQSxDQUNKLENBQ0o7RUFDQSxPQUFPO0NBQ1g7Q0FFQSxNQUFhLFlBQVksVUFBa0I7RUFDdkMsS0FBSyxPQUFPLE9BQU8sUUFBUTtFQUUzQixNQUFNLFFBQUEsUUFBRyxTQUFTLFVBRWQsa0JBQUEsUUFBUSxTQUFTLEdBQ2pCLEtBQUssVUFDRCxNQUFNLEtBQUssS0FBSyxNQUFNLEVBQUUsS0FBSyxXQUFXO0dBQ3BDLE1BQU0sTUFBTTtHQUNaLFFBQVEsTUFBTSxHQUFHO0VBQ3JCLEVBQUUsR0FDRixNQUNBLENBQ0osQ0FDSjtDQUNKOzs7Ozs7Q0FPQSxTQUFnQixRQUFrQztFQUM5QyxJQUFJLEtBQUssT0FBTyxJQUFJLE9BQU8sUUFBUSxDQUFDLEdBQ2hDLE9BQU8sS0FBSyxPQUFPLElBQUksT0FBTyxRQUFRLENBQUMsR0FBRyxVQUFVO0VBR3hELE9BQU87Q0FDWDtBQUNKIn0=