discos 1.0.0

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.
Files changed (94) hide show
  1. package/.github/PRIVACY_POLICY.md +29 -0
  2. package/.github/TERMS_OF_SERVICE.md +56 -0
  3. package/LICENSE +201 -0
  4. package/README.md +70 -0
  5. package/dist/common.d.ts +157 -0
  6. package/dist/common.d.ts.map +1 -0
  7. package/dist/common.js +226 -0
  8. package/dist/common.js.map +1 -0
  9. package/dist/config.d.ts +18 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +20 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/ext/langMap.d.ts +2 -0
  14. package/dist/ext/langMap.d.ts.map +1 -0
  15. package/dist/ext/langMap.js +275 -0
  16. package/dist/ext/langMap.js.map +1 -0
  17. package/dist/index.d.ts +3 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +21 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/modules/admin.d.ts +4 -0
  22. package/dist/modules/admin.d.ts.map +1 -0
  23. package/dist/modules/admin.js +281 -0
  24. package/dist/modules/admin.js.map +1 -0
  25. package/dist/modules/clear.d.ts +3 -0
  26. package/dist/modules/clear.d.ts.map +1 -0
  27. package/dist/modules/clear.js +82 -0
  28. package/dist/modules/clear.js.map +1 -0
  29. package/dist/modules/command.d.ts +5 -0
  30. package/dist/modules/command.d.ts.map +1 -0
  31. package/dist/modules/command.js +89 -0
  32. package/dist/modules/command.js.map +1 -0
  33. package/dist/modules/debug.d.ts +4 -0
  34. package/dist/modules/debug.d.ts.map +1 -0
  35. package/dist/modules/debug.js +47 -0
  36. package/dist/modules/debug.js.map +1 -0
  37. package/dist/modules/file.d.ts +7 -0
  38. package/dist/modules/file.d.ts.map +1 -0
  39. package/dist/modules/file.js +141 -0
  40. package/dist/modules/file.js.map +1 -0
  41. package/dist/modules/watch.d.ts +4 -0
  42. package/dist/modules/watch.d.ts.map +1 -0
  43. package/dist/modules/watch.js +63 -0
  44. package/dist/modules/watch.js.map +1 -0
  45. package/dist/shared/consts.d.ts +3 -0
  46. package/dist/shared/consts.d.ts.map +1 -0
  47. package/dist/shared/consts.js +6 -0
  48. package/dist/shared/consts.js.map +1 -0
  49. package/dist/shared/index.d.ts +3 -0
  50. package/dist/shared/index.d.ts.map +1 -0
  51. package/dist/shared/index.js +19 -0
  52. package/dist/shared/index.js.map +1 -0
  53. package/dist/shared/interfaces.d.ts +13 -0
  54. package/dist/shared/interfaces.d.ts.map +1 -0
  55. package/dist/shared/interfaces.js +3 -0
  56. package/dist/shared/interfaces.js.map +1 -0
  57. package/dist/slash-commands.d.ts +2 -0
  58. package/dist/slash-commands.d.ts.map +1 -0
  59. package/dist/slash-commands.js +242 -0
  60. package/dist/slash-commands.js.map +1 -0
  61. package/dist/startup.d.ts +2 -0
  62. package/dist/startup.d.ts.map +1 -0
  63. package/dist/startup.js +200 -0
  64. package/dist/startup.js.map +1 -0
  65. package/dist/tools/backend.d.ts +5 -0
  66. package/dist/tools/backend.d.ts.map +1 -0
  67. package/dist/tools/backend.js +155 -0
  68. package/dist/tools/backend.js.map +1 -0
  69. package/dist/tools/ipcServer.d.ts +4 -0
  70. package/dist/tools/ipcServer.d.ts.map +1 -0
  71. package/dist/tools/ipcServer.js +83 -0
  72. package/dist/tools/ipcServer.js.map +1 -0
  73. package/dist/tools/queue-utils.d.ts +9 -0
  74. package/dist/tools/queue-utils.d.ts.map +1 -0
  75. package/dist/tools/queue-utils.js +70 -0
  76. package/dist/tools/queue-utils.js.map +1 -0
  77. package/dist/tools/validateDb.d.ts +2 -0
  78. package/dist/tools/validateDb.d.ts.map +1 -0
  79. package/dist/tools/validateDb.js +111 -0
  80. package/dist/tools/validateDb.js.map +1 -0
  81. package/dist/tools/validateDotenv.d.ts +2 -0
  82. package/dist/tools/validateDotenv.d.ts.map +1 -0
  83. package/dist/tools/validateDotenv.js +117 -0
  84. package/dist/tools/validateDotenv.js.map +1 -0
  85. package/dist/types/db.d.ts +9 -0
  86. package/dist/types/db.d.ts.map +1 -0
  87. package/dist/types/db.js +3 -0
  88. package/dist/types/db.js.map +1 -0
  89. package/dist/types/queues.d.ts +6 -0
  90. package/dist/types/queues.d.ts.map +1 -0
  91. package/dist/types/queues.js +3 -0
  92. package/dist/types/queues.js.map +1 -0
  93. package/package.json +71 -0
  94. package/setup/install.sh +527 -0
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.validateDb = validateDb;
40
+ const fs_1 = __importDefault(require("fs"));
41
+ const COMMON = __importStar(require("../common"));
42
+ const config_1 = require("../config");
43
+ const isValidId = (id) => /^\d{17,}$/.test(id);
44
+ function validateDb() {
45
+ let db;
46
+ try {
47
+ const rawData = fs_1.default.readFileSync(process.env.DATABASE_PATH, 'utf-8');
48
+ db = JSON.parse(rawData);
49
+ }
50
+ catch {
51
+ console.error(COMMON.DB_ERR);
52
+ return false;
53
+ }
54
+ if (typeof db !== 'object' || db === null) {
55
+ console.error(COMMON.DB_ERR);
56
+ return false;
57
+ }
58
+ const { users, adminUsers, allowedChannels } = db;
59
+ if (typeof users !== 'object' || users === null) {
60
+ console.error(COMMON.DB_USER_ERR);
61
+ return false;
62
+ }
63
+ const userIds = Object.keys(users);
64
+ if (userIds.length === 0) {
65
+ console.warn(COMMON.DB_USERS_EMPTY);
66
+ }
67
+ if (userIds.some((id) => !isValidId(id))) {
68
+ console.error(COMMON.DB_USERS_INVALID);
69
+ return false;
70
+ }
71
+ if (!Array.isArray(adminUsers)) {
72
+ console.error(COMMON.DB_ADMIN_ERR);
73
+ return false;
74
+ }
75
+ if (adminUsers.length === 0) {
76
+ console.error(COMMON.DB_NO_ADMIN);
77
+ return false;
78
+ }
79
+ if (adminUsers.some((id) => !isValidId(id))) {
80
+ console.error(COMMON.DB_ADMIN_INVALID);
81
+ return false;
82
+ }
83
+ if (allowedChannels !== undefined) {
84
+ if (!Array.isArray(allowedChannels)) {
85
+ console.error(COMMON.DB_ALLOWED_CHANNELS_ARRAY);
86
+ return false;
87
+ }
88
+ if (allowedChannels.length === 0) {
89
+ console.warn(COMMON.DB_ALLOWED_CH_EMPTY);
90
+ }
91
+ if (allowedChannels.some((id) => !isValidId(id))) {
92
+ console.error(COMMON.DB_ALLOWED_CH_INVALID);
93
+ return false;
94
+ }
95
+ }
96
+ const booleanFields = ['standalone', 'safemode', 'lockdown'];
97
+ for (const key of booleanFields) {
98
+ if (typeof db[key] !== 'boolean') {
99
+ console.error(`${COMMON.DB_BOOLEAN_ERR} (${key})`);
100
+ return false;
101
+ }
102
+ }
103
+ config_1.Config.allowedUsers = userIds;
104
+ config_1.Config.adminUsers = adminUsers;
105
+ config_1.Config.allowedChannels = allowedChannels;
106
+ config_1.Config.standalone = db.standalone;
107
+ config_1.Config.safemode = db.safemode;
108
+ config_1.Config.lockdown = db.lockdown;
109
+ return true;
110
+ }
111
+ //# sourceMappingURL=validateDb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateDb.js","sourceRoot":"","sources":["../../src/tools/validateDb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function validateDotenv(): boolean;
2
+ //# sourceMappingURL=validateDotenv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateDotenv.d.ts","sourceRoot":"","sources":["../../src/tools/validateDotenv.ts"],"names":[],"mappings":"AAOA,wBAAgB,cAAc,IAAI,OAAO,CA+FxC"}
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.validateDotenv = validateDotenv;
40
+ const COMMON = __importStar(require("../common"));
41
+ const dotenv_1 = __importDefault(require("dotenv"));
42
+ const config_1 = require("../config");
43
+ dotenv_1.default.config({ quiet: true });
44
+ function validateDotenv() {
45
+ const requiredEnvVars = [
46
+ 'BOT_TOKEN',
47
+ 'APP_ID',
48
+ 'GUILD_IDS',
49
+ 'CMD_QUEUE_MAX_SIZE',
50
+ 'BACKEND',
51
+ 'DATABASE_PATH',
52
+ 'FILE_MAX_SIZE',
53
+ 'READ_BIN_OVERRIDE',
54
+ 'QUICK_VIEW',
55
+ 'QUICK_VIEW_MAX_LENGTH',
56
+ ];
57
+ const missingVars = requiredEnvVars.filter((envVar) => !process.env[envVar]);
58
+ if (missingVars.length > 0) {
59
+ console.error(COMMON.ENV_MISSING_VAR(missingVars));
60
+ return false;
61
+ }
62
+ if (process.env.BOT_TOKEN.length < 59) {
63
+ console.error(COMMON.ENV_TOKEN);
64
+ return false;
65
+ }
66
+ if (!/^\d{17,}$/.test(process.env.APP_ID)) {
67
+ console.error(COMMON.ENV_APPID);
68
+ return false;
69
+ }
70
+ const guildIds = process.env.GUILD_IDS.split(',').map((id) => id.trim());
71
+ if (guildIds.some((id) => !/^\d{17,}$/.test(id))) {
72
+ console.error(COMMON.ENV_GUILDS);
73
+ return false;
74
+ }
75
+ const cmdQueueMaxSize = parseInt(process.env.CMD_QUEUE_MAX_SIZE, 10);
76
+ if (isNaN(cmdQueueMaxSize) || cmdQueueMaxSize <= 0) {
77
+ console.error(COMMON.ENV_QUEUE_MAX);
78
+ return false;
79
+ }
80
+ config_1.Config.cmdQueueMaxSize = cmdQueueMaxSize;
81
+ if (!process.env.BACKEND || process.env.BACKEND.trim() === '') {
82
+ console.error(COMMON.ENV_BACKEND);
83
+ return false;
84
+ }
85
+ config_1.Config.backend = process.env.BACKEND;
86
+ if (!process.env.DATABASE_PATH || process.env.DATABASE_PATH.trim() === '') {
87
+ console.error('DiscOS ERROR: DATABASE_PATH must be a non-empty string.');
88
+ return false;
89
+ }
90
+ config_1.Config.databasePath = process.env.DATABASE_PATH;
91
+ const fileMaxSize = parseInt(process.env.FILE_MAX_SIZE, 10);
92
+ if (isNaN(fileMaxSize) || fileMaxSize <= 0 || fileMaxSize > 1000) {
93
+ console.error(COMMON.ENV_FILE_MAX);
94
+ return false;
95
+ }
96
+ config_1.Config.fileMaxSize = fileMaxSize;
97
+ const readBinOverride = process.env.READ_BIN_OVERRIDE.split(',').map((bin) => bin.trim());
98
+ if (readBinOverride.length === 0 || readBinOverride.some((bin) => bin === '')) {
99
+ console.error(COMMON.ENV_BIN_OVERRIDE);
100
+ return false;
101
+ }
102
+ config_1.Config.readBinOverride = readBinOverride;
103
+ const quickView = process.env.QUICK_VIEW.split(',').map((ext) => ext.trim());
104
+ if (quickView.length === 0 || quickView.some((ext) => ext === '' || ext === '?')) {
105
+ console.error(COMMON.ENV_QUICK_VIEW);
106
+ return false;
107
+ }
108
+ config_1.Config.quickView = quickView;
109
+ const quickViewMaxLength = parseInt(process.env.QUICK_VIEW_MAX_LENGTH, 10);
110
+ if (isNaN(quickViewMaxLength) || quickViewMaxLength <= 0 || quickViewMaxLength > 2000) {
111
+ console.error(COMMON.ENV_QUICK_VIEW_MAX_LENGTH);
112
+ return false;
113
+ }
114
+ config_1.Config.quickViewMaxLength = quickViewMaxLength;
115
+ return true;
116
+ }
117
+ //# sourceMappingURL=validateDotenv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateDotenv.js","sourceRoot":"","sources":["../../src/tools/validateDotenv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type DB = {
2
+ users: Record<string, string>;
3
+ adminUsers: string[];
4
+ allowedChannels: string[];
5
+ standalone: boolean;
6
+ safemode: boolean;
7
+ lockdown: boolean;
8
+ };
9
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/types/db.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,EAAE,GAAG;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/types/db.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { ICommandQueueItem } from '../shared/interfaces';
2
+ export interface CommandQueues {
3
+ readonly validationQueue: ICommandQueueItem[];
4
+ readonly duplicateQueue: ICommandQueueItem[];
5
+ }
6
+ //# sourceMappingURL=queues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queues.d.ts","sourceRoot":"","sources":["../../src/types/queues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,eAAe,EAAE,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,cAAc,EAAE,iBAAiB,EAAE,CAAC;CAC9C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=queues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queues.js","sourceRoot":"","sources":["../../src/types/queues.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "discos",
3
+ "version": "1.0.0",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "scripts": {
7
+ "build": "rm -f tsconfig.tsbuildinfo && npx tsc -b",
8
+ "setup": "node dist/slash-commands.js",
9
+ "start": "node dist/startup.js",
10
+ "dev": "npx tsc -b && node dist/startup.js",
11
+ "docker:build": "docker build -t discos:latest .",
12
+ "docker:up": "docker compose up -d",
13
+ "docker:down": "docker compose down",
14
+ "docker:prune": "docker system prune -a -f",
15
+ "release:docker": "node scripts/release-docker.js",
16
+ "release:npm": "rm -rf dist && rm -f tsconfig.tsbuildinfo && npm run build && npm publish --access public",
17
+ "release:all": "npm run release:npm && npm run release:docker",
18
+ "release:login": "docker login && npm login",
19
+ "format": "prettier --write \"**/*.{ts,json,md}\" --log-level silent",
20
+ "lint": "eslint . --ext .ts --cache",
21
+ "postinstall": "node -e \"if (process.env.NODE_ENV !== 'production') require('child_process').execSync('git config core.hooksPath .husky')\""
22
+ },
23
+ "keywords": [
24
+ "discord",
25
+ "discord-bot",
26
+ "linux",
27
+ "server",
28
+ "bot",
29
+ "ssh",
30
+ "remote-control",
31
+ "terminal",
32
+ "commands",
33
+ "remote",
34
+ "interaction",
35
+ "control",
36
+ "file",
37
+ "transfer"
38
+ ],
39
+ "author": "https://github.com/BrNi05",
40
+ "license": "Apache-2.0",
41
+ "description": "DiscOS is a secure interaction bridge between Discord and Linux servers",
42
+ "dependencies": {
43
+ "axios": "^1.11.0",
44
+ "discord.js": "^14.22.1",
45
+ "dotenv": "^17.2.1",
46
+ "file-type": "^21.0.0",
47
+ "shell-escape": "^0.2.0"
48
+ },
49
+ "devDependencies": {
50
+ "@eslint/js": "^9.33.0",
51
+ "@types/node": "^24.3.0",
52
+ "@types/shell-escape": "^0.2.3",
53
+ "eslint": "^9.33.0",
54
+ "eslint-config-prettier": "^10.1.8",
55
+ "eslint-plugin-node": "^11.1.0",
56
+ "eslint-plugin-prettier": "^5.5.3",
57
+ "husky": "^9.1.7",
58
+ "prettier": "^3.6.2",
59
+ "ts-node": "^10.9.2",
60
+ "typescript": "^5.8.3",
61
+ "typescript-eslint": "^8.41.0"
62
+ },
63
+ "files": [
64
+ "dist",
65
+ "LICENSE",
66
+ "README.md",
67
+ ".github/TERMS_OF_SERVICE.md",
68
+ ".github/PRIVACY_POLICY.md",
69
+ "setup/install.sh"
70
+ ]
71
+ }