discos 1.1.6 → 2.0.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.
Files changed (108) hide show
  1. package/.github/PRIVACY_POLICY.md +3 -1
  2. package/.github/TERMS_OF_SERVICE.md +1 -0
  3. package/README.md +2 -2
  4. package/dist/common.d.ts +57 -36
  5. package/dist/common.d.ts.map +1 -1
  6. package/dist/common.js +88 -39
  7. package/dist/common.js.map +1 -1
  8. package/dist/{config.d.ts → config/config.d.ts} +2 -1
  9. package/dist/config/config.d.ts.map +1 -0
  10. package/dist/{config.js → config/config.js} +1 -0
  11. package/dist/config/config.js.map +1 -0
  12. package/dist/config/validateDb.d.ts +3 -0
  13. package/dist/config/validateDb.d.ts.map +1 -0
  14. package/dist/{tools → config}/validateDb.js +16 -15
  15. package/dist/config/validateDb.js.map +1 -0
  16. package/dist/config/validateDotenv.d.ts +2 -0
  17. package/dist/config/validateDotenv.d.ts.map +1 -0
  18. package/dist/{tools → config}/validateDotenv.js +30 -20
  19. package/dist/config/validateDotenv.js.map +1 -0
  20. package/dist/{tools → exec}/backend.d.ts +4 -3
  21. package/dist/exec/backend.d.ts.map +1 -0
  22. package/dist/exec/backend.js +131 -0
  23. package/dist/exec/backend.js.map +1 -0
  24. package/dist/exec/terminal-manager.d.ts +9 -0
  25. package/dist/exec/terminal-manager.d.ts.map +1 -0
  26. package/dist/exec/terminal-manager.js +112 -0
  27. package/dist/exec/terminal-manager.js.map +1 -0
  28. package/dist/exec/username.d.ts +5 -0
  29. package/dist/exec/username.d.ts.map +1 -0
  30. package/dist/exec/username.js +31 -0
  31. package/dist/exec/username.js.map +1 -0
  32. package/dist/interfaces/queues.d.ts.map +1 -0
  33. package/dist/{types → interfaces}/queues.js.map +1 -1
  34. package/dist/logging/logger.d.ts +4 -0
  35. package/dist/logging/logger.d.ts.map +1 -0
  36. package/dist/logging/logger.js +22 -0
  37. package/dist/logging/logger.js.map +1 -0
  38. package/dist/models/user.d.ts +14 -0
  39. package/dist/models/user.d.ts.map +1 -0
  40. package/dist/models/user.js +61 -0
  41. package/dist/models/user.js.map +1 -0
  42. package/dist/modules/admin.d.ts +1 -1
  43. package/dist/modules/admin.d.ts.map +1 -1
  44. package/dist/modules/admin.js +56 -31
  45. package/dist/modules/admin.js.map +1 -1
  46. package/dist/modules/clear.d.ts.map +1 -1
  47. package/dist/modules/clear.js +7 -8
  48. package/dist/modules/clear.js.map +1 -1
  49. package/dist/modules/command.d.ts +1 -1
  50. package/dist/modules/command.d.ts.map +1 -1
  51. package/dist/modules/command.js +5 -5
  52. package/dist/modules/command.js.map +1 -1
  53. package/dist/modules/debug.d.ts +1 -1
  54. package/dist/modules/debug.d.ts.map +1 -1
  55. package/dist/modules/debug.js +3 -2
  56. package/dist/modules/debug.js.map +1 -1
  57. package/dist/modules/file.d.ts +3 -2
  58. package/dist/modules/file.d.ts.map +1 -1
  59. package/dist/modules/file.js +36 -13
  60. package/dist/modules/file.js.map +1 -1
  61. package/dist/modules/watch.d.ts +1 -1
  62. package/dist/modules/watch.d.ts.map +1 -1
  63. package/dist/modules/watch.js +4 -3
  64. package/dist/modules/watch.js.map +1 -1
  65. package/dist/security/ipcServer.d.ts +4 -0
  66. package/dist/security/ipcServer.d.ts.map +1 -0
  67. package/dist/{tools → security}/ipcServer.js +6 -5
  68. package/dist/security/ipcServer.js.map +1 -0
  69. package/dist/{tools → security}/queue-utils.d.ts +2 -1
  70. package/dist/security/queue-utils.d.ts.map +1 -0
  71. package/dist/{tools → security}/queue-utils.js +4 -1
  72. package/dist/security/queue-utils.js.map +1 -0
  73. package/dist/shared/consts.d.ts +6 -0
  74. package/dist/shared/consts.d.ts.map +1 -1
  75. package/dist/shared/consts.js +7 -1
  76. package/dist/shared/consts.js.map +1 -1
  77. package/dist/shared/interfaces.d.ts +1 -0
  78. package/dist/shared/interfaces.d.ts.map +1 -1
  79. package/dist/shared/types.d.ts.map +1 -1
  80. package/dist/slash-commands.d.ts +1 -1
  81. package/dist/slash-commands.d.ts.map +1 -1
  82. package/dist/slash-commands.js +17 -10
  83. package/dist/slash-commands.js.map +1 -1
  84. package/dist/startup.d.ts +1 -1
  85. package/dist/startup.d.ts.map +1 -1
  86. package/dist/startup.js +57 -37
  87. package/dist/startup.js.map +1 -1
  88. package/package.json +19 -16
  89. package/setup/install.sh +45 -132
  90. package/dist/config.d.ts.map +0 -1
  91. package/dist/config.js.map +0 -1
  92. package/dist/tools/backend.d.ts.map +0 -1
  93. package/dist/tools/backend.js +0 -166
  94. package/dist/tools/backend.js.map +0 -1
  95. package/dist/tools/ipcServer.d.ts +0 -4
  96. package/dist/tools/ipcServer.d.ts.map +0 -1
  97. package/dist/tools/ipcServer.js.map +0 -1
  98. package/dist/tools/queue-utils.d.ts.map +0 -1
  99. package/dist/tools/queue-utils.js.map +0 -1
  100. package/dist/tools/validateDb.d.ts +0 -3
  101. package/dist/tools/validateDb.d.ts.map +0 -1
  102. package/dist/tools/validateDb.js.map +0 -1
  103. package/dist/tools/validateDotenv.d.ts +0 -2
  104. package/dist/tools/validateDotenv.d.ts.map +0 -1
  105. package/dist/tools/validateDotenv.js.map +0 -1
  106. package/dist/types/queues.d.ts.map +0 -1
  107. /package/dist/{types → interfaces}/queues.d.ts +0 -0
  108. /package/dist/{types → interfaces}/queues.js +0 -0
package/dist/startup.js CHANGED
@@ -1,46 +1,53 @@
1
1
  import { Client, GatewayIntentBits, Events } from 'discord.js';
2
- import { validateDotenv } from './tools/validateDotenv.js';
3
- import { validateDb } from './tools/validateDb.js';
4
- import { startIPCServer } from './tools/ipcServer.js';
5
- import * as queueUtils from './tools/queue-utils.js';
6
- import { ping } from './tools/backend.js';
7
- import { Config } from './config.js';
2
+ import { validateDotenv } from './config/validateDotenv.js';
3
+ import { validateDb } from './config/validateDb.js';
4
+ import { Config } from './config/config.js';
5
+ import { startIPCServer } from './security/ipcServer.js';
6
+ import * as queueUtils from './security/queue-utils.js';
7
+ import { ping } from './exec/backend.js';
8
+ import { discordUsername } from './exec/username.js';
9
+ import { destroyTerminalForUser, initTerminalsFromConfig } from './exec/terminal-manager.js';
10
+ import logger from './logging/logger.js';
8
11
  import * as COMMON from './common.js';
9
12
  import { registerSlashCommands } from './slash-commands.js';
10
13
  import { execCommand } from './modules/command.js';
11
14
  import { clearHistory } from './modules/clear.js';
12
- import { read, write, absPath, pathAutocomplete } from './modules/file.js';
15
+ import { read, write, absPath, pathAutocomplete, cwdPath } from './modules/file.js';
13
16
  import { watch } from './modules/watch.js';
14
17
  import { debug } from './modules/debug.js';
15
18
  import { handleAdmin, localUserAutocomplete } from './modules/admin.js';
16
- import { fileURLToPath } from 'url';
17
- export function startDiscOS() {
19
+ import { fileURLToPath } from 'node:url';
20
+ import dns from 'node:dns';
21
+ dns.setDefaultResultOrder('ipv4first');
22
+ dns.setServers(['1.1.1.1', '8.8.8.8', '1.0.0.1', '8.8.4.4']);
23
+ export async function startDiscOS() {
18
24
  if (process.platform !== 'linux') {
19
- console.error(COMMON.PLATFORM_ERR);
25
+ logger.error(COMMON.PLATFORM_ERR);
20
26
  process.exit(1);
21
27
  }
22
- if (!validateDotenv()) {
28
+ if (!(await validateDotenv())) {
23
29
  process.exit(1);
24
30
  }
25
31
  const queues = {
26
32
  validationQueue: [],
27
33
  duplicateQueue: [],
28
34
  };
29
- if (!validateDb(queues)) {
35
+ if (!validateDb(queues))
30
36
  process.exit(1);
31
- }
37
+ if (Config.standalone)
38
+ await initTerminalsFromConfig(queues);
39
+ if (process.env.PTY_TEST_MODE)
40
+ logger.warn(COMMON.PTY_TEST_MODE_WARN);
32
41
  Config.ipcServer = Config.standalone ? null : startIPCServer(queues);
33
42
  const client = new Client({
34
43
  intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent],
35
44
  });
36
- if (!Config.standalone) {
45
+ if (!Config.standalone)
37
46
  void ping();
38
- }
39
47
  client.on(Events.InteractionCreate, async (interaction) => {
40
48
  if (interaction.isAutocomplete()) {
41
49
  const subcommand = interaction.options.getSubcommand();
42
- if ((interaction.commandName === COMMON.DCOS || interaction.commandName === COMMON.ADMOS) &&
43
- (subcommand === COMMON.READ || subcommand === COMMON.WRITE)) {
50
+ if (interaction.commandName === COMMON.DCOS && (subcommand === COMMON.READ || subcommand === COMMON.WRITE)) {
44
51
  return pathAutocomplete(interaction, queues);
45
52
  }
46
53
  else if ((interaction.commandName === COMMON.DCOS || interaction.commandName === COMMON.ADMOS) && subcommand === COMMON.USER_MGMT) {
@@ -63,15 +70,9 @@ export function startDiscOS() {
63
70
  await interaction.reply({ content: COMMON.USER_ERR, flags: 64 });
64
71
  return;
65
72
  }
66
- if (queues.duplicateQueue.length >= Number(Config.cmdQueueMaxSize)) {
67
- await interaction.reply({ content: COMMON.DISCOS_OVERLOADED, flags: 64 });
68
- return;
69
- }
70
73
  const subcommand = interaction.options.getSubcommand();
71
74
  const userId = interaction.user.id;
72
- const username = interaction.member && 'nickname' in interaction.member
73
- ? (interaction.member.nickname ?? interaction.user.username)
74
- : (interaction.user.displayName ?? interaction.user.username);
75
+ const username = discordUsername(interaction);
75
76
  const isAdminUser = Config.adminUsers.includes(userId);
76
77
  if (Config.lockdown && !isAdminUser) {
77
78
  await interaction.reply({ content: COMMON.LOCKDOWN_ERR, flags: 64 });
@@ -79,15 +80,20 @@ export function startDiscOS() {
79
80
  }
80
81
  if (interaction.commandName === COMMON.ADMOS) {
81
82
  if (!isAdminUser) {
82
- await interaction.reply({
83
- content: COMMON.DISCOS_NON_ADMIN,
84
- flags: 64,
85
- });
83
+ await interaction.reply({ content: COMMON.DISCOS_NON_ADMIN, flags: 64 });
86
84
  return;
87
85
  }
88
86
  await handleAdmin(interaction, subcommand, username, queues, client);
89
87
  return;
90
88
  }
89
+ if (queueUtils.countUserCommandsInQueue(queues.duplicateQueue, interaction.user.id) >= Config.userRateLimit) {
90
+ await interaction.reply({ content: COMMON.USER_RATE_LIMIT, flags: 64 });
91
+ return;
92
+ }
93
+ if (queues.duplicateQueue.length >= Number(Config.cmdQueueMaxSize)) {
94
+ await interaction.reply({ content: COMMON.DISCOS_OVERLOADED, flags: 64 });
95
+ return;
96
+ }
91
97
  let queuedCmd = '';
92
98
  const hideReply = interaction.options.getBoolean(COMMON.HIDE, false) ?? COMMON.DEFAULT_HIDDEN;
93
99
  let lookback = COMMON.DEFAULT_LOOKBACK;
@@ -98,7 +104,7 @@ export function startDiscOS() {
98
104
  let sendSuccessMsg = COMMON.DEFAULT_DEBUG_VERBOSE;
99
105
  switch (subcommand) {
100
106
  case COMMON.EXEC: {
101
- const linuxCmd = interaction.options.getString(COMMON.CMD, true)?.trim() || COMMON.FALLBACK_CMD;
107
+ const linuxCmd = interaction.options.getString(COMMON.CMD, false)?.trim() || '';
102
108
  queuedCmd = linuxCmd;
103
109
  break;
104
110
  }
@@ -115,7 +121,7 @@ export function startDiscOS() {
115
121
  }
116
122
  case COMMON.WRITE: {
117
123
  file = interaction.options.getAttachment(COMMON.FILE, true);
118
- path = await absPath(interaction.options.getString(COMMON.PATH, false) ?? file.name, userId, queues);
124
+ path = await absPath(file.name, interaction.options.getString(COMMON.PATH, false) ?? (await cwdPath(file.name, userId, queues)), userId, queues);
119
125
  queuedCmd = `dcos write to ${path}`;
120
126
  break;
121
127
  }
@@ -123,23 +129,26 @@ export function startDiscOS() {
123
129
  path = interaction.options.getString(COMMON.TARGET, true);
124
130
  interval = interaction.options.getInteger(COMMON.INTERVAL, false) ?? interval;
125
131
  repeat = interaction.options.getInteger(COMMON.REPEAT, false) ?? repeat;
126
- queuedCmd = `dcos watch ${path} ${userId}`;
132
+ queuedCmd = `dcos watch ${userId}`;
127
133
  break;
128
134
  }
129
135
  case COMMON.DEBUG: {
130
136
  queuedCmd = 'dcos debug';
131
137
  break;
132
138
  }
139
+ case COMMON.RESET: {
140
+ queuedCmd = 'dcos reset';
141
+ break;
142
+ }
133
143
  case COMMON.HELP: {
134
144
  queuedCmd = 'dcos help';
135
145
  break;
136
146
  }
137
147
  }
138
- if (await queueUtils.handleDuplicate(interaction, username, queues.duplicateQueue, { user: userId, cmd: queuedCmd })) {
148
+ const payload = { user: userId, username: discordUsername(interaction), cmd: queuedCmd };
149
+ if (await queueUtils.handleDuplicate(interaction, username, queues.duplicateQueue, payload))
139
150
  return;
140
- }
141
151
  await interaction.deferReply({ flags: hideReply ? 64 : undefined });
142
- const payload = { user: userId, cmd: queuedCmd };
143
152
  queueUtils.addToAll(queues, payload);
144
153
  try {
145
154
  switch (subcommand) {
@@ -167,6 +176,11 @@ export function startDiscOS() {
167
176
  await debug(interaction, username, userId, queues, client);
168
177
  break;
169
178
  }
179
+ case COMMON.RESET: {
180
+ destroyTerminalForUser(interaction.user.id);
181
+ await interaction.editReply({ content: COMMON.PTY_RESET_SUCCESS });
182
+ break;
183
+ }
170
184
  case COMMON.HELP: {
171
185
  await interaction.editReply({ content: COMMON.HELP_USER });
172
186
  break;
@@ -181,12 +195,18 @@ export function startDiscOS() {
181
195
  }
182
196
  });
183
197
  void client.login(process.env.BOT_TOKEN).catch((err) => {
184
- console.error(COMMON.DISCOS_CONN_FAIL, err);
198
+ logger.error(COMMON.DISCOS_CONN_FAIL, err);
185
199
  process.exit(1);
186
200
  });
201
+ client.on(Events.Error, (err) => {
202
+ logger.error(COMMON.DISCOS_CLIENT_ERR, err);
203
+ });
187
204
  }
188
205
  if (process.argv[1] === fileURLToPath(import.meta.url)) {
189
- registerSlashCommands();
190
- startDiscOS();
206
+ await registerSlashCommands();
207
+ startDiscOS().catch(() => {
208
+ logger.error(COMMON.DISCOS_STARTUP_ERR);
209
+ process.exit(1);
210
+ });
191
211
  }
192
212
  //# sourceMappingURL=startup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startup.js","sourceRoot":"","sources":["../src/startup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "discos",
3
- "version": "1.1.6",
3
+ "version": "2.0.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
7
7
  "scripts": {
8
- "build": "rm -f tsconfig.tsbuildinfo && npx tsc -b",
8
+ "build": "npm run lint && rm -f tsconfig.tsbuildinfo && npx tsc -b",
9
9
  "setup": "node dist/slash-commands.js",
10
10
  "start": "node dist/startup.js",
11
11
  "docker:build": "docker build -t discos:latest .",
@@ -19,7 +19,7 @@
19
19
  "pack": "rm -rf dist && rm -f tsconfig.tsbuildinfo && npm run build && npm pack",
20
20
  "format": "prettier --write \"**/*.{ts,json,md}\" --log-level silent",
21
21
  "lint": "eslint . --ext .ts --cache",
22
- "postinstall": "node -e \"if (process.env.NODE_ENV !== 'production') require('child_process').execSync('git config core.hooksPath .husky')\"",
22
+ "safe": "git config core.hooksPath .husky",
23
23
  "unsafe": "git config --unset core.hooksPath",
24
24
  "test": "echo \"No tests specified.\" && exit 0"
25
25
  },
@@ -54,26 +54,29 @@
54
54
  "node": ">=20.0.0"
55
55
  },
56
56
  "dependencies": {
57
- "axios": "^1.11.0",
58
- "discord.js": "^14.22.1",
59
- "dotenv": "^17.2.1",
60
- "file-type": "^21.0.0",
61
- "shell-escape": "^0.2.0"
57
+ "axios": "^1.13.2",
58
+ "discord.js": "^14.25.1",
59
+ "dotenv": "^17.2.3",
60
+ "file-type": "^21.1.1",
61
+ "node-pty": "^1.1.0-beta43",
62
+ "shell-escape": "^0.2.0",
63
+ "strip-ansi": "^7.1.2",
64
+ "winston": "^3.19.0"
62
65
  },
63
66
  "devDependencies": {
64
- "@eslint/js": "^9.33.0",
65
- "@types/node": "^24.3.0",
67
+ "@eslint/js": "^9.39.2",
68
+ "@types/node": "^25.0.3",
66
69
  "@types/shell-escape": "^0.2.3",
67
- "eslint": "^9.33.0",
70
+ "eslint": "^9.39.2",
68
71
  "eslint-config-prettier": "^10.1.8",
69
72
  "eslint-plugin-node": "^11.1.0",
70
- "eslint-plugin-prettier": "^5.5.3",
73
+ "eslint-plugin-prettier": "^5.5.4",
71
74
  "husky": "^9.1.7",
72
- "jiti": "^2.5.1",
73
- "prettier": "^3.6.2",
75
+ "jiti": "^2.6.1",
76
+ "prettier": "^3.7.4",
74
77
  "ts-node": "^10.9.2",
75
- "typescript": "^5.8.3",
76
- "typescript-eslint": "^8.41.0"
78
+ "typescript": "^5.9.3",
79
+ "typescript-eslint": "^8.50.0"
77
80
  },
78
81
  "files": [
79
82
  "dist",
package/setup/install.sh CHANGED
@@ -69,9 +69,9 @@ echo -e "\nInstalling dependencies..."
69
69
  # Install deps for this script
70
70
  need sed
71
71
  need awk
72
- need grep
72
+ need grep # DiscOS deps as well
73
73
  need git
74
- need curl
74
+ need curl # DiscOS deps as well
75
75
  need tee
76
76
  need tail
77
77
 
@@ -81,7 +81,6 @@ need base64
81
81
  need dos2unix
82
82
  need realpath
83
83
  need head
84
- need grep # installed as script deps as well
85
84
 
86
85
  echo -e "All dependencies installed."
87
86
 
@@ -90,7 +89,7 @@ echo -e "All dependencies installed."
90
89
  echo -e "\nCloning DiscOS repository into a temporary directory..."
91
90
 
92
91
  TEMP_DIR=$(mktemp -d)
93
- chmod 777 "$TEMP_DIR" # discos user (Systemd install) can access it
92
+ chmod 770 "$TEMP_DIR" # only root should access the temp dir
94
93
 
95
94
  if ! git clone --branch main --single-branch --depth 1 https://github.com/BrNi05/DiscOS.git "$TEMP_DIR" &>/dev/null; then
96
95
  echo "Failed to clone DiscOS repository."
@@ -104,7 +103,7 @@ cd "$TEMP_DIR" || (echo "Failed to enter temp directory." && exit 1)
104
103
  setup_dotenv() {
105
104
  local OPERATOR="$1"
106
105
 
107
- echo -e "\nSetting up .env file..."
106
+ echo -e "\n\nSetting up .env file..."
108
107
 
109
108
  read -rp "If not already, set up your bot. Refer to the docs: https://github.com/BrNi05/DiscOS/wiki/03.-Creating-your-bot. Press any key to continue..."
110
109
 
@@ -133,9 +132,9 @@ setup_dotenv() {
133
132
 
134
133
  if [ "$OPERATOR" = "write" ]; then
135
134
  # Copy .env from CWD to discos home
136
- cp "$DOTENV" "$DISCOS_HOME/.env"
137
- chown discos:discos "$DISCOS_HOME/.env"
138
- chmod 660 "$DISCOS_HOME/.env"
135
+ cp "$DOTENV" "$DISCOS_DIR/.env"
136
+ chown root:root "$DISCOS_DIR/.env"
137
+ chmod 660 "$DISCOS_DIR/.env"
139
138
  elif [ "$OPERATOR" = "disp" ]; then
140
139
  echo -e "\nGenerated .env content:\n"
141
140
  cat "$DOTENV"
@@ -158,7 +157,7 @@ setup_dotenv() {
158
157
  setup_db() {
159
158
  local OPERATOR="$1"
160
159
 
161
- echo -e "\nCreating the initial database..."
160
+ echo -e "\n\nCreating the initial database..."
162
161
 
163
162
  echo -e "You will be added as a DiscOS admin.\n"
164
163
 
@@ -166,6 +165,10 @@ setup_db() {
166
165
  read -rp "Enter the local username that you want to use as the given Discord user: " LOCAL_USERNAME
167
166
  read -rp "Enter a single channel ID which DiscOS has already joined: " CHANNEL_ID
168
167
 
168
+ # Disable standalone mode by default for Docker releases
169
+ echo -e "\nIf you plan to run DiscOS in a Docker container in EB mode, modify the DB, so that the container is started in standalone mode!"
170
+ echo "Otherwise, if the prevoiusly set local user does not exist, DiscOS will fail to start."
171
+
169
172
  DB="$TEMP_DIR/setup/db.json"
170
173
 
171
174
  sed -i "s/DC_UID/$DISCORD_UID/g" "$DB"
@@ -174,9 +177,9 @@ setup_db() {
174
177
 
175
178
  if [ "$OPERATOR" = "write" ]; then
176
179
  # Copy db.json from CWD to discos home
177
- cp "$DB" "$DISCOS_HOME/db.json"
178
- chown discos:discos "$DISCOS_HOME/db.json"
179
- chmod 660 "$DISCOS_HOME/db.json"
180
+ cp "$DB" "$DISCOS_DIR/db.json"
181
+ chown root:root "$DISCOS_DIR/db.json"
182
+ chmod 660 "$DISCOS_DIR/db.json"
180
183
  elif [ "$OPERATOR" = "disp" ]; then
181
184
  echo -e "\nManually create the db.json file where needed."
182
185
  echo -e "Generated db.json content:\n"
@@ -207,55 +210,11 @@ setup_db() {
207
210
  }
208
211
 
209
212
 
210
- ############### Node.js LTS updater ###############
211
- setup_node_updater() {
212
- echo -e "\nAn updater script will be installed and a Systemd service will be created to keep Node.js up to date."
213
- echo "NOTE: old Node.js versions will NOTE be removed automatically."
214
-
215
- SCRIPT_PATH='/usr/local/bin/update-node.sh'
216
- printf '%s\n' '#!/bin/bash' \
217
- 'export NVM_DIR="$HOME/.nvm"' \
218
- '[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"' \
219
- '' \
220
- 'nvm install --lts' > "$SCRIPT_PATH"
221
-
222
- chown discos:discos "$SCRIPT_PATH"
223
- chmod 770 "$SCRIPT_PATH"
224
-
225
- printf '%s\n' \
226
- '[Unit]' \
227
- 'Description=Update Node.js LTS for discos user' \
228
- '' \
229
- '[Service]' \
230
- 'Type=oneshot' \
231
- 'User=discos' \
232
- "ExecStart=$SCRIPT_PATH" \
233
- > /etc/systemd/system/discos-node-updater.service
234
-
235
- printf '%s\n' \
236
- '[Unit]' \
237
- 'Description=Run Node.js LTS update daily' \
238
- '' \
239
- '[Timer]' \
240
- 'OnCalendar=daily' \
241
- 'Persistent=true' \
242
- '' \
243
- '[Install]' \
244
- 'WantedBy=timers.target' \
245
- > /etc/systemd/system/discos-node-updater.timer
246
-
247
- systemctl daemon-reload
248
- systemctl enable --now discos-node-updater.timer
249
-
250
- echo -e "Node.js updater script and service installed."
251
- }
252
-
253
-
254
213
  ############### Compose setup ###############
255
214
  setup_compose() {
256
215
  echo -e "\nSetting up compose file...\n"
257
216
 
258
- echo "The latest DiscOS image will be used. Feel free to pin to a specific version if you want manual updates."
217
+ echo "The latest DiscOS image will be used. In case of an update, be sure to manually pull the new image."
259
218
 
260
219
  read -rp "Container name (default DiscOS): " CONTAINER_NAME
261
220
  sed -i "s/SERVICE_NAME/${CONTAINER_NAME:-DiscOS}/g" "$COMPOSE_FILE"
@@ -271,71 +230,35 @@ setup_compose() {
271
230
  }
272
231
 
273
232
 
274
- ############### cmdex setup ###############
275
-
276
- setup_cmdex() {
277
- echo -e "\nSetting up command executor..."
278
-
279
- echo -e "\nYou can specify one user that is allowed to use command executor. This is the user as which your external backend (if used) or parent process (if npm install) will run."
280
- read -rp "Enter the local username (default: root): " CMD_USER
281
- CMD_USER=${CMD_USER:-root}
282
- echo
283
-
284
- cp "$TEMP_DIR/src/.sh/cmd-executor.sh" "/usr/local/bin/cmdex.sh"
285
- chown discos:"$CMD_USER" "/usr/local/bin/cmdex.sh" || chown discos:discos "/usr/local/bin/cmdex.sh" || chown root:root "/usr/local/bin/cmdex.sh"
286
- chmod 770 "/usr/local/bin/cmdex.sh"
287
- ln -s "/usr/local/bin/cmdex.sh" "/usr/local/bin/cmdex" >/dev/null 2>&1 || echo "Symlink for cmdex already exists."
288
-
289
- # Sudoers change
290
- echo "discos ALL=(ALL) NOPASSWD: /usr/local/bin/cmdex.sh, /usr/local/bin/cmdex" | tee /etc/sudoers.d/cmdex >/dev/null
291
- chmod 440 /etc/sudoers.d/cmdex
292
-
293
- if [[ "$CMD_USER" != "root" && $(id -u "$CMD_USER" >/dev/null 2>&1; echo $?) -eq 0 ]]; then
294
- echo "$CMD_USER ALL=(ALL) NOPASSWD: /usr/local/bin/cmdex.sh, /usr/local/bin/cmdex" | tee /etc/sudoers.d/cmdex-user-"$CMD_USER" >/dev/null
295
- chmod 440 /etc/sudoers.d/cmdex-user-"$CMD_USER"
296
- fi
297
-
298
- echo -e "Command executor setup completed."
299
- }
300
-
301
-
302
233
  ############### Systemd release ###############
303
234
  install_systemd() {
304
235
  echo -e "\nStarting Systemd release installation..."
305
236
 
306
- if ! id -u discos &>/dev/null; then
307
- useradd --system -m -s "$(command -v nologin)" discos
308
- echo "Created system user: discos."
309
- fi
310
-
311
- DISCOS_HOME=$(getent passwd discos | cut -d: -f6)
312
-
313
- DISCOS_DIR="$DISCOS_HOME/DiscOS"
237
+ DISCOS_DIR="/opt/DiscOS"
238
+ echo "DiscOS will be installed to: $DISCOS_DIR"
239
+ mkdir -p "$DISCOS_DIR"
314
240
 
315
241
  if [[ "$1" != "update" ]]; then
316
242
  echo -e "\nSetting up Node.js..."
317
243
  read -rp "Do you have a global / user-scoped Node.js install (y/n)? " NODE_ANSWER
318
244
  if [[ "$NODE_ANSWER" = "y" || "$NODE_ANSWER" = "Y" ]]; then
319
- if ! sudo -u discos bash -euo pipefail -c '
320
- export NVM_DIR="$HOME/.nvm"
321
- [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
322
- command -v node
323
- ' >/dev/null 2>&1; then
245
+ export NVM_DIR="$HOME/.nvm"
246
+ [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
247
+
248
+ if ! command -v node >/dev/null 2>&1; then
324
249
  echo "ERROR: Node.js not found."
325
250
  exit 1
326
251
  fi
327
252
  else
328
253
  echo -e "\nInstalling Node.js via nvm..."
329
- sudo -u discos bash -euo pipefail -c '
254
+
330
255
  export NVM_DIR="$HOME/.nvm"
331
256
  curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
332
257
  [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
333
258
  nvm install --lts
334
259
  nvm use --lts
335
- '
336
260
 
337
- echo -e "Node.js installed."
338
- setup_node_updater
261
+ echo -e "Node.js installed. Version: $(node -v). Make sure to update it regularly for security and performance improvements!"
339
262
  fi
340
263
 
341
264
  # .env setup
@@ -344,48 +267,44 @@ install_systemd() {
344
267
  # DB setup
345
268
  setup_db "write"
346
269
 
347
- # Command executor setup
348
- setup_cmdex
270
+ # Set up ownership and permissions
271
+ chown -R root:root "$DISCOS_DIR"
272
+ chmod -R 770 "$DISCOS_DIR"
273
+
274
+ read -rp "Press any key to continue with DiscOS installation..."
349
275
  else
350
276
  # Stop the service for before the update process
351
- systemctl stop discos.service || echo "DiscOS service could not be stopped."
277
+ (systemctl stop discos.service && echo "DiscOS service stopped.") || echo "DiscOS service could not be stopped."
352
278
  fi
353
279
 
354
280
  # Compile DiscOS
355
281
  echo -e "\nCompiling DiscOS..."
356
- DISCOS_DIR="$DISCOS_HOME"
357
-
358
- sudo -u discos bash -euo pipefail -c "
359
- TEMP_DIR=\"$TEMP_DIR\"
360
- DISCOS_DIR=\"$DISCOS_DIR\"
361
282
 
362
283
  # Source nvm
363
- export NVM_DIR=\"\$HOME/.nvm\"
364
- [ -s \"\$NVM_DIR/nvm.sh\" ] && source \"\$NVM_DIR/nvm.sh\"
284
+ export NVM_DIR="$HOME/.nvm"
285
+ [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
365
286
 
366
287
  # Build in the temp dir
367
- cd \"\$TEMP_DIR\" || { echo 'Failed to enter temp download directory.'; exit 1; }
368
- echo \"CWD: \$TEMP_DIR\"
288
+ cd "$TEMP_DIR" || { echo 'Failed to enter temp download directory.'; exit 1; }
289
+ echo "CWD: $TEMP_DIR"
369
290
  echo 'Installing dependencies...'
370
- npm ci --silent --ignore-scripts
291
+ npm ci --omit=optional --silent
371
292
  npm run build
372
293
 
373
294
  # Copy dist and install only prod deps
374
- mkdir -p \"\$DISCOS_DIR\"
375
- rm -rf \"\$DISCOS_DIR/dist\"
376
- cp -r \"\$TEMP_DIR/dist\" \"\$DISCOS_DIR\"
377
- cp \"\$TEMP_DIR/package.json\" \"\$DISCOS_DIR\"
378
- cp \"\$TEMP_DIR/package-lock.json\" \"\$DISCOS_DIR\"
379
- chmod -R 770 \"\$DISCOS_DIR\"
380
-
381
- cd \"\$DISCOS_DIR\" || { echo 'Failed to enter DiscOS directory.'; exit 1; }
295
+ mkdir -p "$DISCOS_DIR"
296
+ rm -rf "$DISCOS_DIR/dist"
297
+ cp -r "$TEMP_DIR/dist" "$DISCOS_DIR"
298
+ cp "$TEMP_DIR/package.json" "$DISCOS_DIR"
299
+ cp "$TEMP_DIR/package-lock.json" "$DISCOS_DIR"
300
+
301
+ cd "$DISCOS_DIR" || { echo 'Failed to enter DiscOS directory.'; exit 1; }
382
302
  npm ci --silent --omit=dev --omit=optional
383
303
 
384
304
  # Remove package.json and package-lock.json
385
305
  rm -f package*.json
386
- "
387
306
 
388
- echo -e "\nDiscOS compiled successfully."
307
+ echo -e "DiscOS compiled successfully."
389
308
 
390
309
  if [[ "$1" != "update" ]]; then
391
310
  # Systemd service and timer setup
@@ -433,7 +352,7 @@ install_npm() {
433
352
  if [[ "$IN_DOCKER" = "y" || "$IN_DOCKER" = "Y" ]]; then
434
353
  COMPOSE_FILE="$TEMP_DIR/setup/docker-compose.yaml"
435
354
  setup_compose
436
- echo -e "Compose file will be displayed below. Now rewrite it according to your needs but make sure mounts and env var settings are kept.\n"
355
+ echo -e "Compose file will be displayed below. Now, rewrite it according to your needs but make sure mounts and env var settings are kept.\n"
437
356
  cat "$COMPOSE_FILE"
438
357
  echo
439
358
  else
@@ -450,9 +369,6 @@ install_npm() {
450
369
  read -rp "Press any key to continue with database generation. It will only be displayed, copy it where needed."
451
370
  setup_db "disp"
452
371
 
453
- # Command executor setup
454
- setup_cmdex
455
-
456
372
  echo -e "\nnpm release installation process completed."
457
373
  }
458
374
 
@@ -496,9 +412,6 @@ install_docker() {
496
412
  read -rp "Press any key to continue with database generation. It will be located in the compose file dir."
497
413
  setup_db "$COMPOSE_PATH"
498
414
 
499
- # Command executor setup
500
- setup_cmdex
501
-
502
415
  echo -e "\nDocker release installation process completed."
503
416
  }
504
417
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,eAAO,MAAM,MAAM,EAAE;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CAgBnB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAef;IACF,eAAe,EAAE,CAAC;IAClB,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,EAAE;IAChB,WAAW,EAAE,CAAC;IACd,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE,EAAE;IACb,kBAAkB,EAAE,IAAI;IACxB,YAAY,EAAE,EAAE;IAChB,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;CAChB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/tools/backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAM3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGpF,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAS7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAoHzD,wBAAsB,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAe3G;AAED,wBAAsB,GAAG,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAgBlF;AAGD,wBAAsB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CA4B5C;AAGD,wBAAsB,6BAA6B,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBtG"}