discos 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/common.d.ts +28 -4
- package/dist/common.d.ts.map +1 -1
- package/dist/common.js +57 -11
- package/dist/common.js.map +1 -1
- package/dist/modules/admin.d.ts +3 -2
- package/dist/modules/admin.d.ts.map +1 -1
- package/dist/modules/admin.js +158 -24
- package/dist/modules/admin.js.map +1 -1
- package/dist/modules/command.d.ts.map +1 -1
- package/dist/modules/command.js +2 -2
- package/dist/modules/command.js.map +1 -1
- package/dist/modules/file.d.ts +3 -1
- package/dist/modules/file.d.ts.map +1 -1
- package/dist/modules/file.js +69 -8
- package/dist/modules/file.js.map +1 -1
- package/dist/modules/watch.d.ts.map +1 -1
- package/dist/modules/watch.js +2 -4
- package/dist/modules/watch.js.map +1 -1
- package/dist/shared/consts.d.ts +2 -0
- package/dist/shared/consts.d.ts.map +1 -1
- package/dist/shared/consts.js +3 -1
- package/dist/shared/consts.js.map +1 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/{types/db.d.ts → shared/types.d.ts} +1 -1
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/{types/db.js → shared/types.js} +1 -1
- package/dist/shared/types.js.map +1 -0
- package/dist/slash-commands.d.ts.map +1 -1
- package/dist/slash-commands.js +23 -6
- package/dist/slash-commands.js.map +1 -1
- package/dist/startup.d.ts.map +1 -1
- package/dist/startup.js +32 -5
- package/dist/startup.js.map +1 -1
- package/dist/tools/backend.d.ts +4 -0
- package/dist/tools/backend.d.ts.map +1 -1
- package/dist/tools/backend.js +46 -3
- package/dist/tools/backend.js.map +1 -1
- package/dist/tools/queue-utils.d.ts +1 -1
- package/dist/tools/queue-utils.d.ts.map +1 -1
- package/dist/tools/queue-utils.js +4 -2
- package/dist/tools/queue-utils.js.map +1 -1
- package/dist/tools/validateDb.d.ts +2 -1
- package/dist/tools/validateDb.d.ts.map +1 -1
- package/dist/tools/validateDb.js +4 -1
- package/dist/tools/validateDb.js.map +1 -1
- package/package.json +17 -4
- package/setup/install.sh +14 -1
- package/dist/types/db.d.ts.map +0 -1
- package/dist/types/db.js.map +0 -1
package/README.md
CHANGED
|
@@ -38,11 +38,11 @@ DiscOS is a secure interaction bridge between Discord and Linux servers, letting
|
|
|
38
38
|
- All user input are escaped, so the shell cannot be abused
|
|
39
39
|
- Users can decide if the reply for their command is ephemeral or visible for all server users (who have permission to view the channel)
|
|
40
40
|
- In external backend mode, you can use an IPC server to validate payloads with DiscOS
|
|
41
|
-
- The one and only secret DiscOS uses is the bot token
|
|
41
|
+
- The one and only secret DiscOS uses is the bot token - no others keys or secrets needed
|
|
42
42
|
- Minimal logging - users deserve privacy
|
|
43
43
|
- DiscOS is open-source - see what's under the hood
|
|
44
44
|
- No need for open ports - DiscOS will make a secure outbound connection to Discord servers
|
|
45
|
-
- Files are sent over HTTPS through Discord CDN
|
|
45
|
+
- Files are sent over HTTPS through Discord CDN, the URL is not recorded, so only you can see what was sent
|
|
46
46
|
- The Discord API and Discord.js are used by millions of bots and users - DiscOS is built on a solid and reliable foundation
|
|
47
47
|
|
|
48
48
|
## Limitations
|
package/dist/common.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const PLATFORM_ERR = "DiscOS CRITICAL ERROR: Only Linux is supported. Startup aborted.";
|
|
1
2
|
export declare function ENV_MISSING_VAR(missingVars: string[]): string;
|
|
2
3
|
export declare const ENV_TOKEN = "DiscOS ERROR: BOT_TOKEN must be at least 59 characters long.";
|
|
3
4
|
export declare const ENV_APPID = "DiscOS ERROR: APP_ID must be a numeric string with at least 17 characters.";
|
|
@@ -12,7 +13,7 @@ export declare const ENV_QUICK_VIEW_MAX_LENGTH = "DiscOS ERROR: QUICK_VIEW_MAX_L
|
|
|
12
13
|
export declare const DB_ERR = "DiscOS ERROR: Database file is invalid or missing.";
|
|
13
14
|
export declare const DB_USER_ERR = "DiscOS ERROR: users must be an object with numeric string keys (Discord UIDs) and string values (local users).";
|
|
14
15
|
export declare const DB_USERS_EMPTY = "DiscOS WARN: No users found in database.";
|
|
15
|
-
export declare const DB_USERS_INVALID = "User IDs must be numeric strings at least 17 characters long";
|
|
16
|
+
export declare const DB_USERS_INVALID = "User IDs must be numeric strings at least 17 characters long.";
|
|
16
17
|
export declare const DB_ADMIN_ERR = "DiscOS ERROR: adminUsers must be an array of numeric strings with at least 17 characters.";
|
|
17
18
|
export declare const DB_NO_ADMIN = "DiscOS ERROR: There must be at least one admin user in the database.";
|
|
18
19
|
export declare const DB_ADMIN_INVALID = "DiscOS ERROR: adminUsers must be a non-empty array of numeric strings with at least 17 characters.";
|
|
@@ -56,6 +57,11 @@ export declare const REPEAT = "repeat";
|
|
|
56
57
|
export declare const REPEAT_DESC = "Number of calls to make. Default: 20. Min: 1. Max: 100.";
|
|
57
58
|
export declare const DEBUG = "debug";
|
|
58
59
|
export declare const DEBUG_DESC = "Display various debug infos about the DiscOS instance.";
|
|
60
|
+
export declare const HELP = "help";
|
|
61
|
+
export declare const HELP_USER_DESC = "Display help for DiscOS commands.";
|
|
62
|
+
export declare const HELP_ADMIN_DESC = "Display help for AdmOS (admin) commands.";
|
|
63
|
+
export declare const HELP_USER = "[User commands](https://github.com/BrNi05/DiscOS/wiki/06.-Using-DiscOS-%E2%80%90-user)";
|
|
64
|
+
export declare const HELP_ADMIN: string;
|
|
59
65
|
export declare const DEFAULT_HIDDEN = true;
|
|
60
66
|
export declare const DEFAULT_LOOKBACK = -1;
|
|
61
67
|
export declare const DEFAULT_INTERVAL = 1000;
|
|
@@ -112,7 +118,7 @@ export declare const DUPLICATE_ERR = "Command (or similar one) is already being
|
|
|
112
118
|
export declare const DISCOS_GENERIC_ERR = "DiscOS ERROR:";
|
|
113
119
|
export declare const DISCOS_GENERIC_ERR2 = "DiscOS encountered an error. User: @";
|
|
114
120
|
export declare const DISCOS_CONN_FAIL = "Connection to Discord failed:";
|
|
115
|
-
export declare const LISTENING = "DiscOS IPC server is listening on
|
|
121
|
+
export declare const LISTENING = "DiscOS IPC server is listening on ";
|
|
116
122
|
export declare function CMD_EXEC_AS_MSG(userCmd: string, username: string): string;
|
|
117
123
|
export declare function CMD_EXEC_AS_MSG2(username: string): string;
|
|
118
124
|
export declare const WRITE_CMD: string;
|
|
@@ -135,11 +141,12 @@ export declare function READ_FILE_QUICK(path: string, username: string): string;
|
|
|
135
141
|
export declare const READ_FILE_QUICK_LENGTH = 50;
|
|
136
142
|
export declare function WRITE_FILE(path: string, username: string): string;
|
|
137
143
|
export declare function BACKEND_ERR_MSG(username: string, statusCode: number, resString: string): string;
|
|
144
|
+
export declare const NEW_FILE = "NEW FILE: ";
|
|
138
145
|
export declare function WATCH_CMD_BUILD(target: string, interval: number, i: number, repeat: number): string;
|
|
139
146
|
export declare const TOO_MANY_REQ = "Too many requests. Please try again later...";
|
|
140
147
|
export declare const WATCH_TERM = "Watch is terminated.";
|
|
141
148
|
export declare const UNKNOWN_USER = "Non-server member user";
|
|
142
|
-
export declare function MODE_REPLY(standalone: boolean): string;
|
|
149
|
+
export declare function MODE_REPLY(standalone: boolean, pingRes: string): string;
|
|
143
150
|
export declare function SAFEMODE_REPLY(safemode: boolean): string;
|
|
144
151
|
export declare function LOCKDOWN_REPLY(enabled: boolean): string;
|
|
145
152
|
export declare const CLEAR_ALL_USER = "?";
|
|
@@ -147,11 +154,28 @@ export declare const CLEAR_ALL_USER_REPLY = "ALL USERS";
|
|
|
147
154
|
export declare function AT_LEAST_ONE_ERR(type: string): string;
|
|
148
155
|
export declare function CH_OPERATION(channelName: string, op: boolean): string;
|
|
149
156
|
export declare function ADMIN_OPERATION(username: string, op: boolean): string;
|
|
150
|
-
export declare function ADMIN_OPS(username: string, localUser: string, op: boolean, overr: boolean): string;
|
|
157
|
+
export declare function ADMIN_OPS(username: string, localUser: string, op: boolean, overr: boolean, userDelete: boolean): string;
|
|
158
|
+
export declare function NOT_IN_USERLIST_ERR(user: string): string;
|
|
151
159
|
export declare const ADMIN = "admin";
|
|
160
|
+
export declare const PROPAGATE = "propagate";
|
|
161
|
+
export declare const PROPAGATE_DESC = "True: create / remove local user based on DiscOS operation. Default: true.";
|
|
162
|
+
export declare const DEFAULT_PROPAGATE = true;
|
|
163
|
+
export declare function COULDNT_PROPAGATE_ERR(localUser: string): string;
|
|
164
|
+
export declare const ADMIN_AS_WELL = "admin";
|
|
165
|
+
export declare const ADMIN_AS_WELL_DESC = "True: register the select user as admin as well. Default: false.";
|
|
166
|
+
export declare const DEFAULT_ADMIN_AS_WELL = false;
|
|
167
|
+
export declare const NEW_USER = "NEW USER: ";
|
|
168
|
+
export declare function USER_GREETING(user: string, localUser: string, guild: string): string;
|
|
169
|
+
export declare function USER_GOODBYE(user: string): string;
|
|
170
|
+
export declare function ADMIN_GREETING(user: string, localUser: string, guild: string): string;
|
|
171
|
+
export declare function ADMIN_GOODBYE(user: string): string;
|
|
172
|
+
export declare const UNAME_PREFIX = "discos";
|
|
152
173
|
export declare const SPAWN_ERR = "DiscOS CRITICAL ERROR: cmdex is broken.";
|
|
153
174
|
export declare const DIR_ERR = "The provided path is an existing directory.";
|
|
154
175
|
export declare const PERM_ERR = "No permission to write to the file (or to enter the directories).";
|
|
155
176
|
export declare const DOWNLOAD_ERR = "Failed to download file from Discord CDN.";
|
|
156
177
|
export declare const SET_PERM_ERR = "Failed to set file permissions.";
|
|
178
|
+
export declare const PING_FAILED = "Ping failed: ";
|
|
179
|
+
export declare const EXTERNAL_OK = "External backend is online and responded to the health check ping.";
|
|
180
|
+
export declare const EXTERNAL_NORESPONSE = "WARNING! The external backend did not respond to the health check ping. It may be offline or unreachable.";
|
|
157
181
|
//# sourceMappingURL=common.d.ts.map
|
package/dist/common.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AACA,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7D;AACD,eAAO,MAAM,SAAS,iEAAiE,CAAC;AACxF,eAAO,MAAM,SAAS,+EAA+E,CAAC;AACtG,eAAO,MAAM,UAAU,iGAAiG,CAAC;AACzH,eAAO,MAAM,OAAO,oFAAoF,CAAC;AACzG,eAAO,MAAM,aAAa,iEAAiE,CAAC;AAC5F,eAAO,MAAM,WAAW,sDAAsD,CAAC;AAC/E,eAAO,MAAM,YAAY,uFAAuF,CAAC;AACjH,eAAO,MAAM,gBAAgB,0FAA0F,CAAC;AACxH,eAAO,MAAM,cAAc,2HAC+F,CAAC;AAC3H,eAAO,MAAM,yBAAyB,uFAAuF,CAAC;AAG9H,eAAO,MAAM,MAAM,uDAAuD,CAAC;AAC3E,eAAO,MAAM,WAAW,mHAAmH,CAAC;AAC5I,eAAO,MAAM,cAAc,6CAA6C,CAAC;AACzE,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
|
package/dist/common.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
3
|
+
exports.WATCH_DESC = exports.WATCH = exports.PATH_DESC_WRITE = exports.FILE_DESC = exports.FILE = exports.WRITE_DESC = exports.WRITE = exports.PATH_DESC_READ = exports.PATH = exports.READ_DESC = exports.READ = exports.LOOKBACK_DESC = exports.LOOKBACK = exports.CLEAR_DESC = exports.CLEAR = exports.CMD_DESC = exports.CMD = exports.EXEC_DESC = exports.EXEC = exports.VERBOSE = exports.HIDE_REPLY = exports.SUCCESS_VERBOSE = exports.HIDE = exports.DCOS_DESC = exports.DCOS = exports.CMD_REG_ERR = exports.CMD_REG_2 = exports.CMD_REG_1 = exports.DB_BOOLEAN_ERR = exports.DB_ALLOWED_CH_INVALID = exports.DB_ALLOWED_CH_EMPTY = exports.DB_ALLOWED_CHANNELS_ARRAY = exports.DB_ADMIN_INVALID = exports.DB_NO_ADMIN = exports.DB_ADMIN_ERR = exports.DB_USERS_INVALID = exports.DB_USERS_EMPTY = exports.DB_USER_ERR = exports.DB_ERR = exports.ENV_QUICK_VIEW_MAX_LENGTH = exports.ENV_QUICK_VIEW = exports.ENV_BIN_OVERRIDE = exports.ENV_FILE_MAX = exports.ENV_BACKEND = exports.ENV_QUEUE_MAX = exports.ENV_VER = exports.ENV_GUILDS = exports.ENV_APPID = exports.ENV_TOKEN = exports.PLATFORM_ERR = void 0;
|
|
4
|
+
exports.CHANNEL = exports.CH_MGMT_DESC = exports.CH_MGMT = exports.LSA_DESC = exports.LSA = exports.LSU_DESC = exports.LSU = exports.LOCAL_USER_DESC = exports.LOCAL_USER = exports.OPERATION = exports.USER = exports.ADMIN_MGMT_DESC = exports.ADMIN_MGMT = exports.USER_MGMT_DESC = exports.USER_MGMT = exports.CLEAR_USER_DESC = exports.CLEAR_USER = exports.ADMIN_CLEAR_DESC = exports.CMD_VAL_DESC = exports.CMD_VAL = exports.SAFEMODE_DESC = exports.SAFEMODE = exports.STANDALONE_DESC = exports.STANDALONE = exports.MODE_DESC = exports.MODE = exports.SHUTDOWN_MSG = exports.KILL_DESC = exports.KILL = exports.ADMOS_DESC = exports.ADMOS = exports.FALLBACK_CMD = exports.DEFAULT_DEBUG_VERBOSE = exports.DEFAULT_REPEAT = exports.DEFAULT_INTERVAL = exports.DEFAULT_LOOKBACK = exports.DEFAULT_HIDDEN = exports.HELP_ADMIN = exports.HELP_USER = exports.HELP_ADMIN_DESC = exports.HELP_USER_DESC = exports.HELP = exports.DEBUG_DESC = exports.DEBUG = exports.REPEAT_DESC = exports.REPEAT = exports.INTERVAL_DESC = exports.INTERVAL = exports.TARGET_DESC = exports.TARGET = void 0;
|
|
5
|
+
exports.DOWNLOAD_ERR = exports.PERM_ERR = exports.DIR_ERR = exports.SPAWN_ERR = exports.UNAME_PREFIX = exports.NEW_USER = exports.DEFAULT_ADMIN_AS_WELL = exports.ADMIN_AS_WELL_DESC = exports.ADMIN_AS_WELL = exports.DEFAULT_PROPAGATE = exports.PROPAGATE_DESC = exports.PROPAGATE = exports.ADMIN = exports.CLEAR_ALL_USER_REPLY = exports.CLEAR_ALL_USER = exports.UNKNOWN_USER = exports.WATCH_TERM = exports.TOO_MANY_REQ = exports.NEW_FILE = exports.READ_FILE_QUICK_LENGTH = exports.MSG_CLR_POST = exports.MSG_CLR_PRE = exports.MSG_CLR_FOR = exports.FETCH_ERR = exports.UNKNOWN_ERR = exports.BACKEND_EXEC_ERR_OVERRIDE = exports.BACKEND_EXEC_ERR = exports.WATCH_CMD = exports.READ_CMD = exports.WRITE_CMD = exports.LISTENING = exports.DISCOS_CONN_FAIL = exports.DISCOS_GENERIC_ERR2 = exports.DISCOS_GENERIC_ERR = exports.DUPLICATE_ERR = exports.DISCOS_NON_ADMIN = exports.LOCKDOWN_ERR = exports.DISCOS_OVERLOADED = exports.USER_ERR = exports.CHANNEL_ERR = exports.GUILD_ERR = exports.USER_SEL = exports.ADDRM = exports.ROOT_DESC = exports.ROOT = exports.LOCKDOWN_ENABLED = exports.ENABLED = exports.LOCKDOWN_DESC = exports.LOCKDOWN = exports.CHANNEL_DESC = void 0;
|
|
6
|
+
exports.EXTERNAL_NORESPONSE = exports.EXTERNAL_OK = exports.PING_FAILED = exports.SET_PERM_ERR = void 0;
|
|
6
7
|
exports.ENV_MISSING_VAR = ENV_MISSING_VAR;
|
|
7
8
|
exports.CMD_EXEC_AS_MSG = CMD_EXEC_AS_MSG;
|
|
8
9
|
exports.CMD_EXEC_AS_MSG2 = CMD_EXEC_AS_MSG2;
|
|
@@ -23,6 +24,13 @@ exports.AT_LEAST_ONE_ERR = AT_LEAST_ONE_ERR;
|
|
|
23
24
|
exports.CH_OPERATION = CH_OPERATION;
|
|
24
25
|
exports.ADMIN_OPERATION = ADMIN_OPERATION;
|
|
25
26
|
exports.ADMIN_OPS = ADMIN_OPS;
|
|
27
|
+
exports.NOT_IN_USERLIST_ERR = NOT_IN_USERLIST_ERR;
|
|
28
|
+
exports.COULDNT_PROPAGATE_ERR = COULDNT_PROPAGATE_ERR;
|
|
29
|
+
exports.USER_GREETING = USER_GREETING;
|
|
30
|
+
exports.USER_GOODBYE = USER_GOODBYE;
|
|
31
|
+
exports.ADMIN_GREETING = ADMIN_GREETING;
|
|
32
|
+
exports.ADMIN_GOODBYE = ADMIN_GOODBYE;
|
|
33
|
+
exports.PLATFORM_ERR = 'DiscOS CRITICAL ERROR: Only Linux is supported. Startup aborted.';
|
|
26
34
|
function ENV_MISSING_VAR(missingVars) {
|
|
27
35
|
return `DiscOS ERROR: Missing environment variables: ${missingVars.join(', ')}`;
|
|
28
36
|
}
|
|
@@ -39,7 +47,7 @@ exports.ENV_QUICK_VIEW_MAX_LENGTH = 'DiscOS ERROR: QUICK_VIEW_MAX_LENGTH must be
|
|
|
39
47
|
exports.DB_ERR = 'DiscOS ERROR: Database file is invalid or missing.';
|
|
40
48
|
exports.DB_USER_ERR = 'DiscOS ERROR: users must be an object with numeric string keys (Discord UIDs) and string values (local users).';
|
|
41
49
|
exports.DB_USERS_EMPTY = 'DiscOS WARN: No users found in database.';
|
|
42
|
-
exports.DB_USERS_INVALID = 'User IDs must be numeric strings at least 17 characters long';
|
|
50
|
+
exports.DB_USERS_INVALID = 'User IDs must be numeric strings at least 17 characters long.';
|
|
43
51
|
exports.DB_ADMIN_ERR = 'DiscOS ERROR: adminUsers must be an array of numeric strings with at least 17 characters.';
|
|
44
52
|
exports.DB_NO_ADMIN = 'DiscOS ERROR: There must be at least one admin user in the database.';
|
|
45
53
|
exports.DB_ADMIN_INVALID = 'DiscOS ERROR: adminUsers must be a non-empty array of numeric strings with at least 17 characters.';
|
|
@@ -83,6 +91,13 @@ exports.REPEAT = 'repeat';
|
|
|
83
91
|
exports.REPEAT_DESC = 'Number of calls to make. Default: 20. Min: 1. Max: 100.';
|
|
84
92
|
exports.DEBUG = 'debug';
|
|
85
93
|
exports.DEBUG_DESC = 'Display various debug infos about the DiscOS instance.';
|
|
94
|
+
exports.HELP = 'help';
|
|
95
|
+
exports.HELP_USER_DESC = 'Display help for DiscOS commands.';
|
|
96
|
+
exports.HELP_ADMIN_DESC = 'Display help for AdmOS (admin) commands.';
|
|
97
|
+
exports.HELP_USER = '[User commands](https://github.com/BrNi05/DiscOS/wiki/06.-Using-DiscOS-%E2%80%90-user)';
|
|
98
|
+
exports.HELP_ADMIN = '[Admin commands](https://github.com/BrNi05/DiscOS/wiki/07.-Using-DiscOS-%E2%80%90-admin)' +
|
|
99
|
+
'\n' +
|
|
100
|
+
'[User commands](https://github.com/BrNi05/DiscOS/wiki/06.-Using-DiscOS-%E2%80%90-user)';
|
|
86
101
|
exports.DEFAULT_HIDDEN = true;
|
|
87
102
|
exports.DEFAULT_LOOKBACK = -1;
|
|
88
103
|
exports.DEFAULT_INTERVAL = 1000;
|
|
@@ -139,7 +154,7 @@ exports.DUPLICATE_ERR = 'Command (or similar one) is already being processed for
|
|
|
139
154
|
exports.DISCOS_GENERIC_ERR = 'DiscOS ERROR:';
|
|
140
155
|
exports.DISCOS_GENERIC_ERR2 = 'DiscOS encountered an error. User: @';
|
|
141
156
|
exports.DISCOS_CONN_FAIL = 'Connection to Discord failed:';
|
|
142
|
-
exports.LISTENING = 'DiscOS IPC server is listening on
|
|
157
|
+
exports.LISTENING = 'DiscOS IPC server is listening on ';
|
|
143
158
|
function CMD_EXEC_AS_MSG(userCmd, username) {
|
|
144
159
|
return `Command: "${userCmd}" executed as @${username}:\n\n`;
|
|
145
160
|
}
|
|
@@ -163,7 +178,7 @@ exports.MSG_CLR_FOR = 'Cleared all messages for @';
|
|
|
163
178
|
exports.MSG_CLR_PRE = 'Cleared the last ';
|
|
164
179
|
exports.MSG_CLR_POST = ' messages for ';
|
|
165
180
|
function FILE_CORRUPT_ERR(username) {
|
|
166
|
-
return `DiscOS ERROR: The file is corrupted, too large to send, has
|
|
181
|
+
return `DiscOS ERROR: The file is corrupted, too large to send, has unknown extension or unreadable (as @${username}). Check the file path, extension, size and permissions.`;
|
|
167
182
|
}
|
|
168
183
|
function FILE_SIZE_ERR(maxSize) {
|
|
169
184
|
return `DiscOS ERROR: Target file is larger than FILE_MAX_SIZE (${maxSize} MB). Requested as @`;
|
|
@@ -184,14 +199,15 @@ function WRITE_FILE(path, username) {
|
|
|
184
199
|
function BACKEND_ERR_MSG(username, statusCode, resString) {
|
|
185
200
|
return `BACKEND ERROR as @${username}.\nHTTP status code: ${statusCode}.\nMessage: ${resString}`;
|
|
186
201
|
}
|
|
202
|
+
exports.NEW_FILE = 'NEW FILE: ';
|
|
187
203
|
function WATCH_CMD_BUILD(target, interval, i, repeat) {
|
|
188
204
|
return `echo "Watching <${target}> at ${interval}ms intervals. Tick: ${i + 1} / ${repeat}." && echo && ${target}`;
|
|
189
205
|
}
|
|
190
206
|
exports.TOO_MANY_REQ = 'Too many requests. Please try again later...';
|
|
191
207
|
exports.WATCH_TERM = 'Watch is terminated.';
|
|
192
208
|
exports.UNKNOWN_USER = 'Non-server member user';
|
|
193
|
-
function MODE_REPLY(standalone) {
|
|
194
|
-
return `DiscOS is now running in ${standalone ? 'standalone' : 'external backend'} mode
|
|
209
|
+
function MODE_REPLY(standalone, pingRes) {
|
|
210
|
+
return `DiscOS is now running in ${standalone ? 'standalone' : 'external backend'} mode.` + '\n' + pingRes;
|
|
195
211
|
}
|
|
196
212
|
function SAFEMODE_REPLY(safemode) {
|
|
197
213
|
return 'Command validation is now ' + (safemode ? 'enabled' : 'disabled') + '.';
|
|
@@ -212,15 +228,45 @@ function ADMIN_OPERATION(username, op) {
|
|
|
212
228
|
const extra = op ? '' : 'not ';
|
|
213
229
|
return `User @${username} is/was ${extra}allowed to use admin commands.`;
|
|
214
230
|
}
|
|
215
|
-
function ADMIN_OPS(username, localUser, op, overr) {
|
|
231
|
+
function ADMIN_OPS(username, localUser, op, overr, userDelete) {
|
|
216
232
|
const extra = op ? 'added' : 'removed';
|
|
217
|
-
const override = overr ? '
|
|
218
|
-
|
|
233
|
+
const override = overr ? '\nPrevious local user setting was overwritten.' : '';
|
|
234
|
+
const deleteMsg = userDelete ? '\nA local user was removed as well.' : '';
|
|
235
|
+
return `User @${username} (as ${localUser} on server) is/was ${extra} as a DiscOS user.` + override + deleteMsg;
|
|
236
|
+
}
|
|
237
|
+
function NOT_IN_USERLIST_ERR(user) {
|
|
238
|
+
return `AdmOS ERROR: @${user} is not a DiscOS user.\nUse the /admos usermgmt slash command, which can (while registering the user) add an admin user.`;
|
|
219
239
|
}
|
|
220
240
|
exports.ADMIN = 'admin';
|
|
241
|
+
exports.PROPAGATE = 'propagate';
|
|
242
|
+
exports.PROPAGATE_DESC = 'True: create / remove local user based on DiscOS operation. Default: true.';
|
|
243
|
+
exports.DEFAULT_PROPAGATE = true;
|
|
244
|
+
function COULDNT_PROPAGATE_ERR(localUser) {
|
|
245
|
+
return `AdmOS ERROR: Local user "${localUser}" is non-existent and propagation is turned off. Operation aborted.`;
|
|
246
|
+
}
|
|
247
|
+
exports.ADMIN_AS_WELL = 'admin';
|
|
248
|
+
exports.ADMIN_AS_WELL_DESC = 'True: register the select user as admin as well. Default: false.';
|
|
249
|
+
exports.DEFAULT_ADMIN_AS_WELL = false;
|
|
250
|
+
exports.NEW_USER = 'NEW USER: ';
|
|
251
|
+
function USER_GREETING(user, localUser, guild) {
|
|
252
|
+
return `Hello @${user},\n\nYou have been registered to use DiscOS commands (as ${localUser}) on Discord server: ${guild}.\nUse /${exports.DCOS} ${exports.HELP} to see available commands.`;
|
|
253
|
+
}
|
|
254
|
+
function USER_GOODBYE(user) {
|
|
255
|
+
return `Goodbye @${user},\n\nYour DiscOS user has been removed and you can no longer use DiscOS commands.\nIf this was a mistake, please contact an admin.`;
|
|
256
|
+
}
|
|
257
|
+
function ADMIN_GREETING(user, localUser, guild) {
|
|
258
|
+
return `Hello @${user},\n\nYou have been registered as a DiscOS admin on Discord server: ${guild}. Now you can use AdmOS commands.\nYou are also registered to use DiscOS commands on the host as: ${localUser}.\nUse /${exports.DCOS} ${exports.HELP} to see available user commands and /${exports.ADMOS} ${exports.HELP} to see available admin commands.`;
|
|
259
|
+
}
|
|
260
|
+
function ADMIN_GOODBYE(user) {
|
|
261
|
+
return `Hello @${user},\n\nYour DiscOS admin rights have been revoked and you can no longer use AdmOS commands.\nIf this was a mistake, please contact an admin.`;
|
|
262
|
+
}
|
|
263
|
+
exports.UNAME_PREFIX = 'discos';
|
|
221
264
|
exports.SPAWN_ERR = 'DiscOS CRITICAL ERROR: cmdex is broken.';
|
|
222
265
|
exports.DIR_ERR = 'The provided path is an existing directory.';
|
|
223
266
|
exports.PERM_ERR = 'No permission to write to the file (or to enter the directories).';
|
|
224
267
|
exports.DOWNLOAD_ERR = 'Failed to download file from Discord CDN.';
|
|
225
268
|
exports.SET_PERM_ERR = 'Failed to set file permissions.';
|
|
269
|
+
exports.PING_FAILED = 'Ping failed: ';
|
|
270
|
+
exports.EXTERNAL_OK = 'External backend is online and responded to the health check ping.';
|
|
271
|
+
exports.EXTERNAL_NORESPONSE = 'WARNING! The external backend did not respond to the health check ping. It may be offline or unreachable.';
|
|
226
272
|
//# sourceMappingURL=common.js.map
|
package/dist/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
|
package/dist/modules/admin.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ChatInputCommandInteraction, CacheType } from 'discord.js';
|
|
1
|
+
import type { ChatInputCommandInteraction, AutocompleteInteraction, CacheType, Client } from 'discord.js';
|
|
2
2
|
import type { CommandQueues } from '../types/queues';
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function localUserAutocomplete(interaction: AutocompleteInteraction<CacheType>, queues: CommandQueues): Promise<void>;
|
|
4
|
+
export declare function handleAdmin(interaction: ChatInputCommandInteraction<CacheType>, subcommand: string, username: string, queues: CommandQueues, client: Client): Promise<void>;
|
|
4
5
|
//# sourceMappingURL=admin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/modules/admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAS,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/modules/admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,SAAS,EAAS,MAAM,EAAE,MAAM,YAAY,CAAC;AAcjH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAkDrD,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,uBAAuB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCjI;AAoFD,wBAAsB,WAAW,CAC/B,WAAW,EAAE,2BAA2B,CAAC,SAAS,CAAC,EACnD,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsSf"}
|
package/dist/modules/admin.js
CHANGED
|
@@ -36,10 +36,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.localUserAutocomplete = localUserAutocomplete;
|
|
39
40
|
exports.handleAdmin = handleAdmin;
|
|
40
41
|
const command_1 = require("./command");
|
|
41
42
|
const ipcServer_1 = require("../tools/ipcServer");
|
|
42
43
|
const queueUtils = __importStar(require("../tools/queue-utils"));
|
|
44
|
+
const backend_1 = require("../tools/backend");
|
|
45
|
+
const shell_escape_1 = __importDefault(require("shell-escape"));
|
|
43
46
|
const COMMON = __importStar(require("../common"));
|
|
44
47
|
const consts_1 = require("../shared/consts");
|
|
45
48
|
const config_1 = require("../config");
|
|
@@ -70,11 +73,96 @@ async function dbPrep(interaction) {
|
|
|
70
73
|
return false;
|
|
71
74
|
}
|
|
72
75
|
}
|
|
73
|
-
function dbClose(db) {
|
|
76
|
+
function dbClose(db, queues) {
|
|
74
77
|
fs_1.default.writeFileSync(config_1.Config.databasePath, JSON.stringify(db, null, 2), 'utf-8');
|
|
75
|
-
(0, validateDb_1.validateDb)();
|
|
78
|
+
(0, validateDb_1.validateDb)(queues);
|
|
76
79
|
}
|
|
77
|
-
async function
|
|
80
|
+
async function localUserAutocomplete(interaction, queues) {
|
|
81
|
+
if (!interaction.guild || !config_1.Config.allowedChannels.includes(interaction.channelId) || !config_1.Config.allowedUsers.includes(interaction.user.id)) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const focusedValue = interaction.options.getFocused();
|
|
85
|
+
const payload = {
|
|
86
|
+
user: consts_1.ROOT_UID,
|
|
87
|
+
cmd: `grep -vE ':(/usr/sbin/nologin|/bin/false|/sbin/nologin)$' /etc/passwd | cut -d: -f1 | grep -F -- "${(0, shell_escape_1.default)([focusedValue])}" | head -n 5`,
|
|
88
|
+
};
|
|
89
|
+
queueUtils.addToAll(queues, payload);
|
|
90
|
+
const res = await (0, backend_1.post)(payload, false);
|
|
91
|
+
queueUtils.removeFromAll(queues, payload);
|
|
92
|
+
const items = res.data
|
|
93
|
+
.toString('utf-8')
|
|
94
|
+
.split('\n')
|
|
95
|
+
.filter((item) => item.trim());
|
|
96
|
+
if (items.length === 0) {
|
|
97
|
+
items.push(focusedValue);
|
|
98
|
+
}
|
|
99
|
+
const prefix = String(res.data).trim().length === 0 ? COMMON.NEW_USER : '';
|
|
100
|
+
await interaction.respond(items.map((choice) => ({
|
|
101
|
+
name: prefix + choice,
|
|
102
|
+
value: choice,
|
|
103
|
+
})));
|
|
104
|
+
}
|
|
105
|
+
async function sendDM(client, userId, content) {
|
|
106
|
+
const user = await client.users.fetch(userId);
|
|
107
|
+
void user.send(content);
|
|
108
|
+
}
|
|
109
|
+
const LOCAL_USER_FAILED = 'false';
|
|
110
|
+
const LOCAL_USER_SUCCESS = 'true';
|
|
111
|
+
async function localUserHandler(localUser, propagate, operation, queue) {
|
|
112
|
+
if (operation) {
|
|
113
|
+
const payload = {
|
|
114
|
+
user: consts_1.ROOT_UID,
|
|
115
|
+
cmd: `id -u ${(0, shell_escape_1.default)([localUser])}`,
|
|
116
|
+
};
|
|
117
|
+
queueUtils.addToAll(queue, payload);
|
|
118
|
+
const res = await (0, backend_1.post)(payload, false);
|
|
119
|
+
queueUtils.removeFromAll(queue, payload);
|
|
120
|
+
let userExists = true;
|
|
121
|
+
if (res.data.toString('utf-8').trim().startsWith('id: ')) {
|
|
122
|
+
userExists = false;
|
|
123
|
+
}
|
|
124
|
+
if (propagate) {
|
|
125
|
+
if (!userExists) {
|
|
126
|
+
const payload = {
|
|
127
|
+
user: consts_1.ROOT_UID,
|
|
128
|
+
cmd: `useradd -m ${(0, shell_escape_1.default)([localUser])}`,
|
|
129
|
+
};
|
|
130
|
+
queueUtils.addToAll(queue, payload);
|
|
131
|
+
await (0, backend_1.post)(payload, false);
|
|
132
|
+
queueUtils.removeFromAll(queue, payload);
|
|
133
|
+
return LOCAL_USER_SUCCESS;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
if (!userExists) {
|
|
138
|
+
return LOCAL_USER_FAILED;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
if (propagate) {
|
|
144
|
+
const payload = {
|
|
145
|
+
user: consts_1.ROOT_UID,
|
|
146
|
+
cmd: `id -u ${(0, shell_escape_1.default)([localUser])} >/dev/null 2>&1 && userdel -r ${(0, shell_escape_1.default)([localUser])} >/dev/null 2>&1`,
|
|
147
|
+
};
|
|
148
|
+
queueUtils.addToAll(queue, payload);
|
|
149
|
+
void (0, backend_1.post)(payload, false);
|
|
150
|
+
queueUtils.removeFromAll(queue, payload);
|
|
151
|
+
}
|
|
152
|
+
return LOCAL_USER_SUCCESS;
|
|
153
|
+
}
|
|
154
|
+
return LOCAL_USER_SUCCESS;
|
|
155
|
+
}
|
|
156
|
+
function truncUname(input) {
|
|
157
|
+
const MAX_LEN = 32;
|
|
158
|
+
input = input.toLowerCase().trim();
|
|
159
|
+
input = input.replace(/[^a-z0-9_.]/g, '');
|
|
160
|
+
if (input.length > MAX_LEN) {
|
|
161
|
+
return input.substring(0, MAX_LEN);
|
|
162
|
+
}
|
|
163
|
+
return input;
|
|
164
|
+
}
|
|
165
|
+
async function handleAdmin(interaction, subcommand, username, queues, client) {
|
|
78
166
|
await interaction.deferReply({ flags: 64 });
|
|
79
167
|
const guild = interaction.guild;
|
|
80
168
|
switch (subcommand) {
|
|
@@ -100,7 +188,7 @@ async function handleAdmin(interaction, subcommand, username, queues) {
|
|
|
100
188
|
break;
|
|
101
189
|
}
|
|
102
190
|
case COMMON.USER_MGMT: {
|
|
103
|
-
await userMgmt(interaction);
|
|
191
|
+
await userMgmt(interaction, client);
|
|
104
192
|
break;
|
|
105
193
|
}
|
|
106
194
|
case COMMON.LSU: {
|
|
@@ -108,7 +196,7 @@ async function handleAdmin(interaction, subcommand, username, queues) {
|
|
|
108
196
|
break;
|
|
109
197
|
}
|
|
110
198
|
case COMMON.ADMIN_MGMT: {
|
|
111
|
-
await adminMgmt(interaction);
|
|
199
|
+
await adminMgmt(interaction, client);
|
|
112
200
|
break;
|
|
113
201
|
}
|
|
114
202
|
case COMMON.LSA: {
|
|
@@ -127,6 +215,10 @@ async function handleAdmin(interaction, subcommand, username, queues) {
|
|
|
127
215
|
await rootCommand(interaction);
|
|
128
216
|
break;
|
|
129
217
|
}
|
|
218
|
+
case COMMON.HELP: {
|
|
219
|
+
await interaction.editReply({ content: COMMON.HELP_ADMIN });
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
130
222
|
}
|
|
131
223
|
async function kill(interaction) {
|
|
132
224
|
await interaction.editReply({
|
|
@@ -136,6 +228,10 @@ async function handleAdmin(interaction, subcommand, username, queues) {
|
|
|
136
228
|
}
|
|
137
229
|
async function mode(interaction) {
|
|
138
230
|
const standalone = interaction.options.getBoolean(COMMON.STANDALONE, true);
|
|
231
|
+
let pingRes = '';
|
|
232
|
+
if (!standalone) {
|
|
233
|
+
pingRes = await (0, backend_1.ping)();
|
|
234
|
+
}
|
|
139
235
|
if (config_1.Config.standalone && !standalone) {
|
|
140
236
|
config_1.Config.ipcServer = (0, ipcServer_1.startIPCServer)(queues);
|
|
141
237
|
}
|
|
@@ -147,9 +243,9 @@ async function handleAdmin(interaction, subcommand, username, queues) {
|
|
|
147
243
|
if (!db)
|
|
148
244
|
return;
|
|
149
245
|
db.standalone = standalone;
|
|
150
|
-
dbClose(db);
|
|
246
|
+
dbClose(db, queues);
|
|
151
247
|
await interaction.editReply({
|
|
152
|
-
content: COMMON.MODE_REPLY(standalone),
|
|
248
|
+
content: COMMON.MODE_REPLY(standalone, pingRes),
|
|
153
249
|
});
|
|
154
250
|
}
|
|
155
251
|
async function safemode(interaction) {
|
|
@@ -158,27 +254,46 @@ async function handleAdmin(interaction, subcommand, username, queues) {
|
|
|
158
254
|
if (!db)
|
|
159
255
|
return;
|
|
160
256
|
db.safemode = enabled;
|
|
161
|
-
dbClose(db);
|
|
257
|
+
dbClose(db, queues);
|
|
162
258
|
await interaction.editReply({
|
|
163
259
|
content: COMMON.SAFEMODE_REPLY(enabled),
|
|
164
260
|
});
|
|
165
261
|
}
|
|
166
|
-
async function userMgmt(interaction) {
|
|
262
|
+
async function userMgmt(interaction, client) {
|
|
167
263
|
const userObj = interaction.options.getUser(COMMON.USER, true);
|
|
168
|
-
const
|
|
169
|
-
const targetUser =
|
|
264
|
+
const guildName = interaction.guild.name;
|
|
265
|
+
const targetUser = userObj.username;
|
|
170
266
|
const userId = userObj.id;
|
|
171
|
-
const localProfile = interaction.options.getString(COMMON.LOCAL_USER, true);
|
|
172
267
|
const operation = interaction.options.getBoolean(COMMON.OPERATION, true);
|
|
268
|
+
let localUser = interaction.options.getString(COMMON.LOCAL_USER, false)?.trim() ?? userObj.username;
|
|
269
|
+
const propagate = interaction.options.getBoolean(COMMON.PROPAGATE, false) ?? COMMON.DEFAULT_PROPAGATE;
|
|
270
|
+
const adminAsWell = interaction.options.getBoolean(COMMON.ADMIN_AS_WELL, false) ?? COMMON.DEFAULT_ADMIN_AS_WELL;
|
|
271
|
+
let deleteUser = false;
|
|
173
272
|
const db = await dbPrep(interaction);
|
|
174
273
|
if (!db)
|
|
175
274
|
return;
|
|
176
275
|
if (operation) {
|
|
276
|
+
if (!interaction.options.getString(COMMON.LOCAL_USER, false)?.trim())
|
|
277
|
+
localUser = truncUname(COMMON.UNAME_PREFIX + '_' + targetUser);
|
|
278
|
+
const res = await localUserHandler(localUser, propagate, operation, queues);
|
|
279
|
+
if (res === LOCAL_USER_FAILED) {
|
|
280
|
+
await interaction.editReply({
|
|
281
|
+
content: COMMON.COULDNT_PROPAGATE_ERR(localUser),
|
|
282
|
+
});
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
177
285
|
const existed = db.users[userId] !== undefined;
|
|
178
|
-
db.users[userId] =
|
|
286
|
+
db.users[userId] = localUser;
|
|
179
287
|
await interaction.editReply({
|
|
180
|
-
content: COMMON.ADMIN_OPS(targetUser,
|
|
288
|
+
content: COMMON.ADMIN_OPS(targetUser, localUser, true, existed, false),
|
|
181
289
|
});
|
|
290
|
+
if (!adminAsWell)
|
|
291
|
+
await sendDM(client, userId, COMMON.USER_GREETING(targetUser, localUser, guildName));
|
|
292
|
+
else {
|
|
293
|
+
dbClose(db, queues);
|
|
294
|
+
await new Promise((r) => setTimeout(r, 2000));
|
|
295
|
+
await adminMgmt(interaction, client);
|
|
296
|
+
}
|
|
182
297
|
}
|
|
183
298
|
else {
|
|
184
299
|
if (Object.keys(db.users).length === 1) {
|
|
@@ -188,27 +303,45 @@ async function handleAdmin(interaction, subcommand, username, queues) {
|
|
|
188
303
|
return;
|
|
189
304
|
}
|
|
190
305
|
else {
|
|
191
|
-
if (userId in db.users)
|
|
306
|
+
if (userId in db.users) {
|
|
307
|
+
if (db.adminUsers.includes(userId)) {
|
|
308
|
+
db.adminUsers = db.adminUsers.filter((u) => u !== userId);
|
|
309
|
+
await sendDM(client, userId, COMMON.ADMIN_GOODBYE(targetUser));
|
|
310
|
+
}
|
|
311
|
+
deleteUser = Object.values(db.users).filter((lu) => lu === db.users[userId]).length === 1 && propagate;
|
|
312
|
+
if (deleteUser)
|
|
313
|
+
await localUserHandler(db.users[userId], true, operation, queues);
|
|
192
314
|
delete db.users[userId];
|
|
315
|
+
await sendDM(client, userId, COMMON.USER_GOODBYE(targetUser));
|
|
316
|
+
}
|
|
193
317
|
await interaction.editReply({
|
|
194
|
-
content: COMMON.ADMIN_OPS(targetUser,
|
|
318
|
+
content: COMMON.ADMIN_OPS(targetUser, localUser, false, false, deleteUser),
|
|
195
319
|
});
|
|
196
320
|
}
|
|
197
321
|
}
|
|
198
|
-
|
|
322
|
+
if (!adminAsWell)
|
|
323
|
+
dbClose(db, queues);
|
|
199
324
|
}
|
|
200
|
-
async function adminMgmt(interaction) {
|
|
325
|
+
async function adminMgmt(interaction, client) {
|
|
201
326
|
const userObj = interaction.options.getUser(COMMON.USER, true);
|
|
202
|
-
const
|
|
203
|
-
const targetUser =
|
|
327
|
+
const guildName = interaction.guild.name;
|
|
328
|
+
const targetUser = userObj.username;
|
|
204
329
|
const userId = userObj.id;
|
|
205
330
|
const operation = interaction.options.getBoolean(COMMON.OPERATION, true);
|
|
331
|
+
if (!config_1.Config.allowedUsers.includes(userId)) {
|
|
332
|
+
await interaction.editReply({
|
|
333
|
+
content: COMMON.NOT_IN_USERLIST_ERR(targetUser),
|
|
334
|
+
});
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
206
337
|
const db = await dbPrep(interaction);
|
|
207
338
|
if (!db)
|
|
208
339
|
return;
|
|
209
340
|
if (operation) {
|
|
210
|
-
if (!db.adminUsers.includes(userId))
|
|
341
|
+
if (!db.adminUsers.includes(userId)) {
|
|
211
342
|
db.adminUsers.push(userId);
|
|
343
|
+
await sendDM(client, userId, COMMON.ADMIN_GREETING(targetUser, db.users[userId], guildName));
|
|
344
|
+
}
|
|
212
345
|
await interaction.editReply({
|
|
213
346
|
content: COMMON.ADMIN_OPERATION(targetUser, true),
|
|
214
347
|
});
|
|
@@ -225,9 +358,10 @@ async function handleAdmin(interaction, subcommand, username, queues) {
|
|
|
225
358
|
await interaction.editReply({
|
|
226
359
|
content: COMMON.ADMIN_OPERATION(targetUser, false),
|
|
227
360
|
});
|
|
361
|
+
await sendDM(client, userId, COMMON.ADMIN_GOODBYE(targetUser));
|
|
228
362
|
}
|
|
229
363
|
}
|
|
230
|
-
dbClose(db);
|
|
364
|
+
dbClose(db, queues);
|
|
231
365
|
}
|
|
232
366
|
async function chMgmt(interaction) {
|
|
233
367
|
const channel = interaction.options.getChannel(COMMON.CHANNEL, true);
|
|
@@ -258,7 +392,7 @@ async function handleAdmin(interaction, subcommand, username, queues) {
|
|
|
258
392
|
});
|
|
259
393
|
}
|
|
260
394
|
}
|
|
261
|
-
dbClose(db);
|
|
395
|
+
dbClose(db, queues);
|
|
262
396
|
}
|
|
263
397
|
async function lockdown(interaction) {
|
|
264
398
|
const enabled = interaction.options.getBoolean(COMMON.ENABLED, true);
|
|
@@ -266,7 +400,7 @@ async function handleAdmin(interaction, subcommand, username, queues) {
|
|
|
266
400
|
if (!db)
|
|
267
401
|
return;
|
|
268
402
|
db.lockdown = enabled;
|
|
269
|
-
dbClose(db);
|
|
403
|
+
dbClose(db, queues);
|
|
270
404
|
await interaction.editReply({
|
|
271
405
|
content: COMMON.LOCKDOWN_REPLY(enabled),
|
|
272
406
|
});
|