@minecraft-docker/mcctl 1.6.1 → 1.6.2
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/dist/commands/console/api.d.ts +19 -0
- package/dist/commands/console/api.d.ts.map +1 -0
- package/dist/commands/console/api.js +399 -0
- package/dist/commands/console/api.js.map +1 -0
- package/dist/commands/console/index.d.ts +10 -0
- package/dist/commands/console/index.d.ts.map +1 -0
- package/dist/commands/console/index.js +12 -0
- package/dist/commands/console/index.js.map +1 -0
- package/dist/commands/console/init.d.ts +47 -0
- package/dist/commands/console/init.d.ts.map +1 -0
- package/dist/commands/console/init.js +491 -0
- package/dist/commands/console/init.js.map +1 -0
- package/dist/commands/console/remove.d.ts +25 -0
- package/dist/commands/console/remove.d.ts.map +1 -0
- package/dist/commands/console/remove.js +189 -0
- package/dist/commands/console/remove.js.map +1 -0
- package/dist/commands/console/service.d.ts +40 -0
- package/dist/commands/console/service.d.ts.map +1 -0
- package/dist/commands/console/service.js +321 -0
- package/dist/commands/console/service.js.map +1 -0
- package/dist/commands/console/user.d.ts +17 -0
- package/dist/commands/console/user.d.ts.map +1 -0
- package/dist/commands/console/user.js +431 -0
- package/dist/commands/console/user.js.map +1 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +4 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/delete.d.ts.map +1 -1
- package/dist/commands/delete.js +4 -1
- package/dist/commands/delete.js.map +1 -1
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +5 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +58 -26
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mod.d.ts +19 -0
- package/dist/commands/mod.d.ts.map +1 -0
- package/dist/commands/mod.js +441 -0
- package/dist/commands/mod.js.map +1 -0
- package/dist/commands/msg.d.ts +12 -0
- package/dist/commands/msg.d.ts.map +1 -0
- package/dist/commands/msg.js +273 -0
- package/dist/commands/msg.js.map +1 -0
- package/dist/commands/player-online.js +4 -2
- package/dist/commands/player-online.js.map +1 -1
- package/dist/commands/world.d.ts +2 -0
- package/dist/commands/world.d.ts.map +1 -1
- package/dist/commands/world.js +104 -1
- package/dist/commands/world.js.map +1 -1
- package/dist/index.js +162 -5
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts +2 -1
- package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts.map +1 -1
- package/dist/infrastructure/adapters/ClackPromptAdapter.js +11 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.js.map +1 -1
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts +78 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js +391 -0
- package/dist/infrastructure/adapters/Pm2ServiceManagerAdapter.js.map +1 -0
- package/dist/infrastructure/adapters/index.d.ts +1 -0
- package/dist/infrastructure/adapters/index.d.ts.map +1 -1
- package/dist/infrastructure/adapters/index.js +2 -1
- package/dist/infrastructure/adapters/index.js.map +1 -1
- package/dist/infrastructure/index.d.ts +1 -0
- package/dist/infrastructure/index.d.ts.map +1 -1
- package/dist/infrastructure/index.js +2 -1
- package/dist/infrastructure/index.js.map +1 -1
- package/dist/lib/admin-config.d.ts +66 -0
- package/dist/lib/admin-config.d.ts.map +1 -0
- package/dist/lib/admin-config.js +130 -0
- package/dist/lib/admin-config.js.map +1 -0
- package/dist/lib/pm2-utils.d.ts +71 -0
- package/dist/lib/pm2-utils.d.ts.map +1 -0
- package/dist/lib/pm2-utils.js +155 -0
- package/dist/lib/pm2-utils.js.map +1 -0
- package/dist/lib/prompts/ip-select.d.ts +25 -0
- package/dist/lib/prompts/ip-select.d.ts.map +1 -0
- package/dist/lib/prompts/ip-select.js +255 -0
- package/dist/lib/prompts/ip-select.js.map +1 -0
- package/dist/lib/shell.d.ts +2 -0
- package/dist/lib/shell.d.ts.map +1 -1
- package/dist/lib/shell.js +7 -4
- package/dist/lib/shell.js.map +1 -1
- package/dist/lib/sudo-utils.d.ts +14 -0
- package/dist/lib/sudo-utils.d.ts.map +1 -0
- package/dist/lib/sudo-utils.js +53 -0
- package/dist/lib/sudo-utils.js.map +1 -0
- package/package.json +8 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Console API command options
|
|
4
|
+
*/
|
|
5
|
+
export interface ConsoleApiCommandOptions {
|
|
6
|
+
json?: boolean;
|
|
7
|
+
force?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export type AdminApiCommandOptions = ConsoleApiCommandOptions;
|
|
10
|
+
/**
|
|
11
|
+
* Access modes for the API
|
|
12
|
+
*/
|
|
13
|
+
export type AccessMode = 'internal' | 'api-key' | 'ip-whitelist' | 'api-key-ip' | 'open';
|
|
14
|
+
/**
|
|
15
|
+
* Create console api command
|
|
16
|
+
*/
|
|
17
|
+
export declare function consoleApiCommand(): Command;
|
|
18
|
+
export declare const adminApiCommand: typeof consoleApiCommand;
|
|
19
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/commands/console/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;AAwWzF;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CA+F3C;AAGD,eAAO,MAAM,eAAe,0BAAoB,CAAC"}
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import * as p from '@clack/prompts';
|
|
3
|
+
import { Paths, colors } from '@minecraft-docker/shared';
|
|
4
|
+
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
import { randomBytes } from 'node:crypto';
|
|
7
|
+
/**
|
|
8
|
+
* Get the API config file path
|
|
9
|
+
*/
|
|
10
|
+
function getConfigPath() {
|
|
11
|
+
const paths = new Paths();
|
|
12
|
+
return resolve(paths.platform, 'api-config.json');
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Load API configuration
|
|
16
|
+
*/
|
|
17
|
+
function loadConfig() {
|
|
18
|
+
const configPath = getConfigPath();
|
|
19
|
+
if (!existsSync(configPath)) {
|
|
20
|
+
// Return default config
|
|
21
|
+
return {
|
|
22
|
+
accessMode: 'internal',
|
|
23
|
+
apiKey: generateApiKey(),
|
|
24
|
+
port: 3001,
|
|
25
|
+
ipWhitelist: [],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const content = readFileSync(configPath, 'utf-8');
|
|
30
|
+
return JSON.parse(content);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return {
|
|
34
|
+
accessMode: 'internal',
|
|
35
|
+
apiKey: generateApiKey(),
|
|
36
|
+
port: 3001,
|
|
37
|
+
ipWhitelist: [],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Save API configuration
|
|
43
|
+
*/
|
|
44
|
+
function saveConfig(config) {
|
|
45
|
+
const configPath = getConfigPath();
|
|
46
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Generate a new API key
|
|
50
|
+
*/
|
|
51
|
+
function generateApiKey() {
|
|
52
|
+
const bytes = randomBytes(32);
|
|
53
|
+
return `mctk_${bytes.toString('hex')}`;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Mask API key for display
|
|
57
|
+
*/
|
|
58
|
+
function maskApiKey(key) {
|
|
59
|
+
if (key.length <= 12)
|
|
60
|
+
return key;
|
|
61
|
+
const prefix = key.slice(0, 8);
|
|
62
|
+
const suffix = key.slice(-4);
|
|
63
|
+
return `${prefix}...${suffix}`;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Validate CIDR notation
|
|
67
|
+
*/
|
|
68
|
+
function isValidCidr(value) {
|
|
69
|
+
// Simple IP validation (IPv4)
|
|
70
|
+
const ipPattern = /^(\d{1,3}\.){3}\d{1,3}(\/\d{1,2})?$/;
|
|
71
|
+
if (!ipPattern.test(value))
|
|
72
|
+
return false;
|
|
73
|
+
const parts = value.split('/');
|
|
74
|
+
const ip = parts[0];
|
|
75
|
+
const cidr = parts[1] ? parseInt(parts[1], 10) : 32;
|
|
76
|
+
// Validate IP octets
|
|
77
|
+
const octets = ip.split('.').map(Number);
|
|
78
|
+
if (octets.some((o) => o < 0 || o > 255))
|
|
79
|
+
return false;
|
|
80
|
+
// Validate CIDR range
|
|
81
|
+
if (cidr < 0 || cidr > 32)
|
|
82
|
+
return false;
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Show API status
|
|
87
|
+
*/
|
|
88
|
+
async function showStatus(options) {
|
|
89
|
+
const config = loadConfig();
|
|
90
|
+
if (options.json) {
|
|
91
|
+
console.log(JSON.stringify({
|
|
92
|
+
accessMode: config.accessMode,
|
|
93
|
+
port: config.port,
|
|
94
|
+
apiKey: maskApiKey(config.apiKey),
|
|
95
|
+
ipWhitelist: config.ipWhitelist,
|
|
96
|
+
}, null, 2));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
console.log();
|
|
100
|
+
console.log(colors.bold('API Configuration'));
|
|
101
|
+
console.log();
|
|
102
|
+
console.log(` Access Mode: ${colors.cyan(config.accessMode)}`);
|
|
103
|
+
console.log(` Port: ${colors.cyan(config.port.toString())}`);
|
|
104
|
+
console.log(` API Key: ${colors.dim(maskApiKey(config.apiKey))}`);
|
|
105
|
+
console.log();
|
|
106
|
+
if (config.ipWhitelist.length > 0) {
|
|
107
|
+
console.log(' IP Whitelist:');
|
|
108
|
+
for (const ip of config.ipWhitelist) {
|
|
109
|
+
console.log(` • ${ip}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
console.log(' IP Whitelist: ' + colors.dim('(empty)'));
|
|
114
|
+
}
|
|
115
|
+
console.log();
|
|
116
|
+
// Show mode description
|
|
117
|
+
const modeDescriptions = {
|
|
118
|
+
internal: 'Docker network only (most secure)',
|
|
119
|
+
'api-key': 'External access with X-API-Key header',
|
|
120
|
+
'ip-whitelist': 'IP-based access control',
|
|
121
|
+
'api-key-ip': 'Both API key and IP required',
|
|
122
|
+
open: colors.red('No authentication (development only!)'),
|
|
123
|
+
};
|
|
124
|
+
console.log(` Mode: ${modeDescriptions[config.accessMode]}`);
|
|
125
|
+
if (config.accessMode === 'open') {
|
|
126
|
+
console.log();
|
|
127
|
+
console.log(colors.red(' ⚠️ WARNING: API is open without authentication!'));
|
|
128
|
+
console.log(colors.red(' Do not use this mode in production!'));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Regenerate API key
|
|
133
|
+
*/
|
|
134
|
+
async function regenerateKey(options) {
|
|
135
|
+
const config = loadConfig();
|
|
136
|
+
if (!options.force) {
|
|
137
|
+
const confirmed = await p.confirm({
|
|
138
|
+
message: 'Are you sure you want to regenerate the API key? All existing clients will need to be updated.',
|
|
139
|
+
});
|
|
140
|
+
if (p.isCancel(confirmed) || !confirmed) {
|
|
141
|
+
p.cancel('Operation cancelled.');
|
|
142
|
+
process.exit(0);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
config.apiKey = generateApiKey();
|
|
146
|
+
saveConfig(config);
|
|
147
|
+
console.log(colors.green('API key regenerated successfully.'));
|
|
148
|
+
console.log();
|
|
149
|
+
console.log(`New API Key: ${colors.cyan(config.apiKey)}`);
|
|
150
|
+
console.log();
|
|
151
|
+
console.log(colors.yellow('Please update all clients with the new API key.'));
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Change access mode
|
|
155
|
+
*/
|
|
156
|
+
async function changeMode(mode, options) {
|
|
157
|
+
const config = loadConfig();
|
|
158
|
+
const validModes = ['internal', 'api-key', 'ip-whitelist', 'api-key-ip', 'open'];
|
|
159
|
+
let newMode;
|
|
160
|
+
if (mode) {
|
|
161
|
+
if (!validModes.includes(mode)) {
|
|
162
|
+
console.error(colors.red(`Invalid mode: ${mode}`));
|
|
163
|
+
console.error(`Valid modes: ${validModes.join(', ')}`);
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
newMode = mode;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
// Interactive mode
|
|
170
|
+
const result = await p.select({
|
|
171
|
+
message: 'Select access mode:',
|
|
172
|
+
initialValue: config.accessMode,
|
|
173
|
+
options: [
|
|
174
|
+
{ value: 'internal', label: 'internal - Docker network only (most secure)' },
|
|
175
|
+
{ value: 'api-key', label: 'api-key - External access with X-API-Key header' },
|
|
176
|
+
{ value: 'ip-whitelist', label: 'ip-whitelist - IP-based access control' },
|
|
177
|
+
{ value: 'api-key-ip', label: 'api-key-ip - Both API key and IP required' },
|
|
178
|
+
{ value: 'open', label: 'open - No authentication (development only!)' },
|
|
179
|
+
],
|
|
180
|
+
});
|
|
181
|
+
if (p.isCancel(result)) {
|
|
182
|
+
p.cancel('Operation cancelled.');
|
|
183
|
+
process.exit(0);
|
|
184
|
+
}
|
|
185
|
+
newMode = result;
|
|
186
|
+
}
|
|
187
|
+
// Warn about open mode
|
|
188
|
+
if (newMode === 'open' && !options.force) {
|
|
189
|
+
console.log();
|
|
190
|
+
console.log(colors.red('⚠️ WARNING: Setting access mode to "open" disables all authentication!'));
|
|
191
|
+
console.log(colors.red(' This mode should only be used for development purposes.'));
|
|
192
|
+
console.log();
|
|
193
|
+
const confirmed = await p.confirm({
|
|
194
|
+
message: 'Are you sure you want to proceed?',
|
|
195
|
+
});
|
|
196
|
+
if (p.isCancel(confirmed) || !confirmed) {
|
|
197
|
+
p.cancel('Operation cancelled.');
|
|
198
|
+
process.exit(0);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
config.accessMode = newMode;
|
|
202
|
+
saveConfig(config);
|
|
203
|
+
console.log(colors.green(`Access mode changed to: ${newMode}`));
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Manage IP whitelist
|
|
207
|
+
*/
|
|
208
|
+
async function manageWhitelist(action, ip, options) {
|
|
209
|
+
const config = loadConfig();
|
|
210
|
+
if (!action) {
|
|
211
|
+
action = 'list';
|
|
212
|
+
}
|
|
213
|
+
switch (action) {
|
|
214
|
+
case 'list': {
|
|
215
|
+
if (options.json) {
|
|
216
|
+
console.log(JSON.stringify(config.ipWhitelist, null, 2));
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
console.log();
|
|
220
|
+
console.log(colors.bold('IP Whitelist'));
|
|
221
|
+
console.log();
|
|
222
|
+
if (config.ipWhitelist.length === 0) {
|
|
223
|
+
console.log(colors.dim(' (empty)'));
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
for (const entry of config.ipWhitelist) {
|
|
227
|
+
console.log(` • ${entry}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
console.log();
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
case 'add': {
|
|
234
|
+
if (!ip) {
|
|
235
|
+
// Interactive mode
|
|
236
|
+
const result = await p.text({
|
|
237
|
+
message: 'Enter IP address or CIDR range:',
|
|
238
|
+
placeholder: '192.168.1.100 or 10.0.0.0/8',
|
|
239
|
+
validate: (value) => {
|
|
240
|
+
if (!value || value.trim().length === 0) {
|
|
241
|
+
return 'IP address is required';
|
|
242
|
+
}
|
|
243
|
+
if (!isValidCidr(value)) {
|
|
244
|
+
return 'Invalid IP address or CIDR notation';
|
|
245
|
+
}
|
|
246
|
+
return undefined;
|
|
247
|
+
},
|
|
248
|
+
});
|
|
249
|
+
if (p.isCancel(result)) {
|
|
250
|
+
p.cancel('Operation cancelled.');
|
|
251
|
+
process.exit(0);
|
|
252
|
+
}
|
|
253
|
+
ip = result;
|
|
254
|
+
}
|
|
255
|
+
if (!isValidCidr(ip)) {
|
|
256
|
+
console.error(colors.red(`Invalid IP address or CIDR notation: ${ip}`));
|
|
257
|
+
process.exit(1);
|
|
258
|
+
}
|
|
259
|
+
if (config.ipWhitelist.includes(ip)) {
|
|
260
|
+
console.log(colors.yellow(`IP ${ip} is already in the whitelist.`));
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
config.ipWhitelist.push(ip);
|
|
264
|
+
saveConfig(config);
|
|
265
|
+
console.log(colors.green(`Added ${ip} to IP whitelist.`));
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
case 'remove': {
|
|
269
|
+
if (!ip) {
|
|
270
|
+
if (config.ipWhitelist.length === 0) {
|
|
271
|
+
console.error(colors.red('IP whitelist is empty.'));
|
|
272
|
+
process.exit(1);
|
|
273
|
+
}
|
|
274
|
+
// Interactive mode
|
|
275
|
+
const result = await p.select({
|
|
276
|
+
message: 'Select IP to remove:',
|
|
277
|
+
options: config.ipWhitelist.map((entry) => ({
|
|
278
|
+
value: entry,
|
|
279
|
+
label: entry,
|
|
280
|
+
})),
|
|
281
|
+
});
|
|
282
|
+
if (p.isCancel(result)) {
|
|
283
|
+
p.cancel('Operation cancelled.');
|
|
284
|
+
process.exit(0);
|
|
285
|
+
}
|
|
286
|
+
ip = result;
|
|
287
|
+
}
|
|
288
|
+
const index = config.ipWhitelist.indexOf(ip);
|
|
289
|
+
if (index === -1) {
|
|
290
|
+
console.error(colors.red(`IP ${ip} is not in the whitelist.`));
|
|
291
|
+
process.exit(1);
|
|
292
|
+
}
|
|
293
|
+
config.ipWhitelist.splice(index, 1);
|
|
294
|
+
saveConfig(config);
|
|
295
|
+
console.log(colors.green(`Removed ${ip} from IP whitelist.`));
|
|
296
|
+
break;
|
|
297
|
+
}
|
|
298
|
+
default:
|
|
299
|
+
console.error(colors.red(`Unknown whitelist action: ${action}`));
|
|
300
|
+
console.error('Valid actions: list, add, remove');
|
|
301
|
+
process.exit(1);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Create console api command
|
|
306
|
+
*/
|
|
307
|
+
export function consoleApiCommand() {
|
|
308
|
+
const cmd = new Command('api')
|
|
309
|
+
.description('Manage API configuration')
|
|
310
|
+
.addHelpText('after', `
|
|
311
|
+
Examples:
|
|
312
|
+
$ mcctl console api status Show API configuration
|
|
313
|
+
$ mcctl console api status --json JSON output
|
|
314
|
+
$ mcctl console api key regenerate Regenerate API key
|
|
315
|
+
$ mcctl console api mode api-key Change access mode
|
|
316
|
+
$ mcctl console api mode Interactive mode selection
|
|
317
|
+
$ mcctl console api whitelist list List IP whitelist
|
|
318
|
+
$ mcctl console api whitelist add 192.168.1.100
|
|
319
|
+
$ mcctl console api whitelist add 10.0.0.0/8
|
|
320
|
+
$ mcctl console api whitelist remove 192.168.1.100
|
|
321
|
+
|
|
322
|
+
Access Modes:
|
|
323
|
+
internal Docker network only (default, most secure)
|
|
324
|
+
api-key External access with X-API-Key header
|
|
325
|
+
ip-whitelist IP-based access control
|
|
326
|
+
api-key-ip Both API key and IP required
|
|
327
|
+
open No authentication (development only!)
|
|
328
|
+
`);
|
|
329
|
+
// status subcommand
|
|
330
|
+
cmd
|
|
331
|
+
.command('status')
|
|
332
|
+
.description('Show API configuration')
|
|
333
|
+
.option('--json', 'Output in JSON format')
|
|
334
|
+
.action(async (options) => {
|
|
335
|
+
try {
|
|
336
|
+
await showStatus(options);
|
|
337
|
+
}
|
|
338
|
+
catch (error) {
|
|
339
|
+
console.error(colors.red(`Error: ${error.message}`));
|
|
340
|
+
process.exit(1);
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
// key subcommand
|
|
344
|
+
const keyCmd = cmd
|
|
345
|
+
.command('key')
|
|
346
|
+
.description('API key management');
|
|
347
|
+
keyCmd
|
|
348
|
+
.command('regenerate')
|
|
349
|
+
.description('Regenerate API key')
|
|
350
|
+
.option('--force', 'Skip confirmation')
|
|
351
|
+
.action(async (options) => {
|
|
352
|
+
try {
|
|
353
|
+
await regenerateKey(options);
|
|
354
|
+
}
|
|
355
|
+
catch (error) {
|
|
356
|
+
console.error(colors.red(`Error: ${error.message}`));
|
|
357
|
+
process.exit(1);
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
// mode subcommand
|
|
361
|
+
cmd
|
|
362
|
+
.command('mode [mode]')
|
|
363
|
+
.description('Change access mode')
|
|
364
|
+
.option('--force', 'Skip confirmation for dangerous modes')
|
|
365
|
+
.action(async (mode, options) => {
|
|
366
|
+
try {
|
|
367
|
+
await changeMode(mode, options);
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
console.error(colors.red(`Error: ${error.message}`));
|
|
371
|
+
process.exit(1);
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
// whitelist subcommand
|
|
375
|
+
const whitelistCmd = cmd
|
|
376
|
+
.command('whitelist [action] [ip]')
|
|
377
|
+
.description('Manage IP whitelist')
|
|
378
|
+
.option('--json', 'Output in JSON format')
|
|
379
|
+
.action(async (action, ip, options) => {
|
|
380
|
+
try {
|
|
381
|
+
await manageWhitelist(action, ip, options);
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
console.error(colors.red(`Error: ${error.message}`));
|
|
385
|
+
process.exit(1);
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
// Add explicit whitelist subcommands for better help
|
|
389
|
+
whitelistCmd.addHelpText('after', `
|
|
390
|
+
Actions:
|
|
391
|
+
list List all whitelisted IPs
|
|
392
|
+
add <ip> Add IP or CIDR range to whitelist
|
|
393
|
+
remove <ip> Remove IP from whitelist
|
|
394
|
+
`);
|
|
395
|
+
return cmd;
|
|
396
|
+
}
|
|
397
|
+
// Backward compatibility alias
|
|
398
|
+
export const adminApiCommand = consoleApiCommand;
|
|
399
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/commands/console/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { consoleInitCommand, deleteAdminImages, checkNodeVersion, type ConsoleInitOptions, } from './init.js';
|
|
2
|
+
export { consoleServiceCommand, deleteAdminImages as deleteConsoleImages, type ConsoleServiceOptions, } from './service.js';
|
|
3
|
+
export { consoleUserCommand, type ConsoleUserCommandOptions } from './user.js';
|
|
4
|
+
export { consoleApiCommand, type ConsoleApiCommandOptions } from './api.js';
|
|
5
|
+
export { consoleRemoveCommand, type ConsoleRemoveOptions } from './remove.js';
|
|
6
|
+
export { adminInitCommand, type AdminInitOptions } from './init.js';
|
|
7
|
+
export { adminServiceCommand, type AdminServiceOptions } from './service.js';
|
|
8
|
+
export { adminUserCommand, type AdminUserCommandOptions } from './user.js';
|
|
9
|
+
export { adminApiCommand, type AdminApiCommandOptions } from './api.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/console/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,kBAAkB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,IAAI,mBAAmB,EACxC,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,KAAK,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAG9E,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Primary exports (new names)
|
|
2
|
+
export { consoleInitCommand, deleteAdminImages, checkNodeVersion, } from './init.js';
|
|
3
|
+
export { consoleServiceCommand, deleteAdminImages as deleteConsoleImages, } from './service.js';
|
|
4
|
+
export { consoleUserCommand } from './user.js';
|
|
5
|
+
export { consoleApiCommand } from './api.js';
|
|
6
|
+
export { consoleRemoveCommand } from './remove.js';
|
|
7
|
+
// Backward compatibility aliases (deprecated)
|
|
8
|
+
export { adminInitCommand } from './init.js';
|
|
9
|
+
export { adminServiceCommand } from './service.js';
|
|
10
|
+
export { adminUserCommand } from './user.js';
|
|
11
|
+
export { adminApiCommand } from './api.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/console/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,GAEjB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,IAAI,mBAAmB,GAEzC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAkC,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAiC,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAA6B,MAAM,aAAa,CAAC;AAE9E,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAyB,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAA4B,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAgC,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,eAAe,EAA+B,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Console init command options
|
|
3
|
+
*/
|
|
4
|
+
export interface ConsoleInitOptions {
|
|
5
|
+
root?: string;
|
|
6
|
+
force?: boolean;
|
|
7
|
+
apiPort?: number;
|
|
8
|
+
consolePort?: number;
|
|
9
|
+
}
|
|
10
|
+
export type AdminInitOptions = ConsoleInitOptions;
|
|
11
|
+
/**
|
|
12
|
+
* Check Node.js version meets requirements
|
|
13
|
+
* @returns Object with version check result
|
|
14
|
+
*/
|
|
15
|
+
export declare function checkNodeVersion(): {
|
|
16
|
+
valid: boolean;
|
|
17
|
+
version: string;
|
|
18
|
+
required: number;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Delete admin images (legacy - now a no-op for backward compatibility)
|
|
22
|
+
* @deprecated Use PM2 process management instead
|
|
23
|
+
*/
|
|
24
|
+
export declare function deleteAdminImages(): {
|
|
25
|
+
success: boolean;
|
|
26
|
+
deleted: string[];
|
|
27
|
+
errors: string[];
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Execute console init command
|
|
31
|
+
*
|
|
32
|
+
* Interactive flow:
|
|
33
|
+
* 1. Check Node.js version (>= 18)
|
|
34
|
+
* 2. Check PM2 installation
|
|
35
|
+
* 3. Check if already initialized
|
|
36
|
+
* 4. If exists: prompt for reinitialize confirmation (unless --force)
|
|
37
|
+
* 5. Cleanup existing config if reinitializing
|
|
38
|
+
* 6. Prompt for admin username
|
|
39
|
+
* 7. Prompt for admin password (with confirmation)
|
|
40
|
+
* 8. Prompt for API access mode
|
|
41
|
+
* 9. Generate API key if needed
|
|
42
|
+
* 10. Generate ecosystem.config.cjs
|
|
43
|
+
* 11. Save configuration and user
|
|
44
|
+
*/
|
|
45
|
+
export declare function consoleInitCommand(options: ConsoleInitOptions): Promise<number>;
|
|
46
|
+
export declare const adminInitCommand: typeof consoleInitCommand;
|
|
47
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/console/init.ts"],"names":[],"mappings":"AAsBA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAOlD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CASA;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAQA;AAkID;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CAqXjB;AAGD,eAAO,MAAM,gBAAgB,2BAAqB,CAAC"}
|