@minecraft-docker/mcctl 1.6.0 → 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/application/index.d.ts +2 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +5 -0
- package/dist/application/index.js.map +1 -0
- package/dist/commands/backup.d.ts +16 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +182 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/ban.d.ts +14 -0
- package/dist/commands/ban.d.ts.map +1 -0
- package/dist/commands/ban.js +418 -0
- package/dist/commands/ban.js.map +1 -0
- package/dist/commands/config.d.ts +18 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +106 -0
- package/dist/commands/config.js.map +1 -0
- 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 +22 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +86 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/delete.d.ts +17 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +74 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/exec.d.ts +10 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +29 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/index.d.ts +21 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +23 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +218 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/kick.d.ts +12 -0
- package/dist/commands/kick.d.ts.map +1 -0
- package/dist/commands/kick.js +71 -0
- package/dist/commands/kick.js.map +1 -0
- package/dist/commands/migrate.d.ts +18 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +470 -0
- package/dist/commands/migrate.js.map +1 -0
- 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/op.d.ts +12 -0
- package/dist/commands/op.d.ts.map +1 -0
- package/dist/commands/op.js +220 -0
- package/dist/commands/op.js.map +1 -0
- package/dist/commands/player-online.d.ts +11 -0
- package/dist/commands/player-online.d.ts.map +1 -0
- package/dist/commands/player-online.js +153 -0
- package/dist/commands/player-online.js.map +1 -0
- package/dist/commands/player.d.ts +18 -0
- package/dist/commands/player.d.ts.map +1 -0
- package/dist/commands/player.js +352 -0
- package/dist/commands/player.js.map +1 -0
- package/dist/commands/server-backup.d.ts +36 -0
- package/dist/commands/server-backup.d.ts.map +1 -0
- package/dist/commands/server-backup.js +320 -0
- package/dist/commands/server-backup.js.map +1 -0
- package/dist/commands/server-restore.d.ts +13 -0
- package/dist/commands/server-restore.d.ts.map +1 -0
- package/dist/commands/server-restore.js +294 -0
- package/dist/commands/server-restore.js.map +1 -0
- package/dist/commands/status.d.ts +13 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +325 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/whitelist.d.ts +12 -0
- package/dist/commands/whitelist.d.ts.map +1 -0
- package/dist/commands/whitelist.js +316 -0
- package/dist/commands/whitelist.js.map +1 -0
- package/dist/commands/world.d.ts +18 -0
- package/dist/commands/world.d.ts.map +1 -0
- package/dist/commands/world.js +238 -0
- package/dist/commands/world.js.map +1 -0
- package/dist/domain/index.d.ts +2 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +7 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +766 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts +30 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.d.ts.map +1 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.js +430 -0
- package/dist/infrastructure/adapters/ClackPromptAdapter.js.map +1 -0
- 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 +4 -0
- package/dist/infrastructure/adapters/index.d.ts.map +1 -0
- package/dist/infrastructure/adapters/index.js +6 -0
- package/dist/infrastructure/adapters/index.js.map +1 -0
- package/dist/infrastructure/di/container.d.ts +47 -0
- package/dist/infrastructure/di/container.d.ts.map +1 -0
- package/dist/infrastructure/di/container.js +140 -0
- package/dist/infrastructure/di/container.js.map +1 -0
- package/dist/infrastructure/di/index.d.ts +2 -0
- package/dist/infrastructure/di/index.d.ts.map +1 -0
- package/dist/infrastructure/di/index.js +2 -0
- package/dist/infrastructure/di/index.js.map +1 -0
- package/dist/infrastructure/index.d.ts +5 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +8 -0
- package/dist/infrastructure/index.js.map +1 -0
- 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/mojang-api.d.ts +51 -0
- package/dist/lib/mojang-api.d.ts.map +1 -0
- package/dist/lib/mojang-api.js +136 -0
- package/dist/lib/mojang-api.js.map +1 -0
- package/dist/lib/player-cache.d.ts +79 -0
- package/dist/lib/player-cache.d.ts.map +1 -0
- package/dist/lib/player-cache.js +302 -0
- package/dist/lib/player-cache.js.map +1 -0
- package/dist/lib/player-json.d.ts +69 -0
- package/dist/lib/player-json.d.ts.map +1 -0
- package/dist/lib/player-json.js +96 -0
- package/dist/lib/player-json.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/action-select.d.ts +23 -0
- package/dist/lib/prompts/action-select.d.ts.map +1 -0
- package/dist/lib/prompts/action-select.js +124 -0
- package/dist/lib/prompts/action-select.js.map +1 -0
- package/dist/lib/prompts/index.d.ts +7 -0
- package/dist/lib/prompts/index.d.ts.map +1 -0
- package/dist/lib/prompts/index.js +7 -0
- package/dist/lib/prompts/index.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/prompts/player-select.d.ts +25 -0
- package/dist/lib/prompts/player-select.d.ts.map +1 -0
- package/dist/lib/prompts/player-select.js +122 -0
- package/dist/lib/prompts/player-select.js.map +1 -0
- package/dist/lib/prompts/server-select.d.ts +26 -0
- package/dist/lib/prompts/server-select.d.ts.map +1 -0
- package/dist/lib/prompts/server-select.js +99 -0
- package/dist/lib/prompts/server-select.js.map +1 -0
- package/dist/lib/rcon.d.ts +53 -0
- package/dist/lib/rcon.d.ts.map +1 -0
- package/dist/lib/rcon.js +131 -0
- package/dist/lib/rcon.js.map +1 -0
- package/dist/lib/shell.d.ts +111 -0
- package/dist/lib/shell.d.ts.map +1 -0
- package/dist/lib/shell.js +321 -0
- package/dist/lib/shell.js.map +1 -0
- 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,273 @@
|
|
|
1
|
+
import { Paths, log, colors, getRunningMcContainers } from '@minecraft-docker/shared';
|
|
2
|
+
import { ShellExecutor } from '../lib/shell.js';
|
|
3
|
+
import { execRconWithOutput, getContainerName } from '../lib/rcon.js';
|
|
4
|
+
import * as p from '@clack/prompts';
|
|
5
|
+
/**
|
|
6
|
+
* Send message to players
|
|
7
|
+
*/
|
|
8
|
+
export async function msgCommand(options) {
|
|
9
|
+
const paths = new Paths(options.root);
|
|
10
|
+
if (!paths.isInitialized()) {
|
|
11
|
+
log.error('Platform not initialized. Run: mcctl init');
|
|
12
|
+
return 1;
|
|
13
|
+
}
|
|
14
|
+
// If --all flag with message, broadcast to all servers
|
|
15
|
+
if (options.all && options.message) {
|
|
16
|
+
if (options.player) {
|
|
17
|
+
// Find player across all servers and send private message
|
|
18
|
+
return await sendToPlayerAcrossServers(options.player, options.message);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
// Broadcast to all servers
|
|
22
|
+
return await broadcastToAllServers(options.message);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// If server specified with message
|
|
26
|
+
if (options.server && options.message) {
|
|
27
|
+
const shell = new ShellExecutor(paths);
|
|
28
|
+
const config = shell.readConfig(options.server);
|
|
29
|
+
if (config === null) {
|
|
30
|
+
log.error(`Server '${options.server}' not found`);
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
const containerName = getContainerName(options.server);
|
|
34
|
+
if (options.player) {
|
|
35
|
+
// Send private message to specific player
|
|
36
|
+
return await sendPrivateMessage(containerName, options.player, options.message);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// Broadcast to all players on server
|
|
40
|
+
return await broadcastToServer(containerName, options.server, options.message);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Interactive mode
|
|
44
|
+
return await interactiveMode(paths);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Interactive mode for sending messages
|
|
48
|
+
*/
|
|
49
|
+
async function interactiveMode(paths) {
|
|
50
|
+
const containers = getRunningMcContainers();
|
|
51
|
+
if (containers.length === 0) {
|
|
52
|
+
log.error('No running servers found');
|
|
53
|
+
return 1;
|
|
54
|
+
}
|
|
55
|
+
p.intro(colors.cyan('Send Message'));
|
|
56
|
+
// Select target scope
|
|
57
|
+
const scope = await p.select({
|
|
58
|
+
message: 'Select target scope',
|
|
59
|
+
options: [
|
|
60
|
+
{ value: 'server', label: 'Specific server' },
|
|
61
|
+
{ value: 'all', label: 'All servers' },
|
|
62
|
+
],
|
|
63
|
+
});
|
|
64
|
+
if (p.isCancel(scope)) {
|
|
65
|
+
p.cancel('Cancelled');
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
let targetServer;
|
|
69
|
+
let targetContainer;
|
|
70
|
+
if (scope === 'server') {
|
|
71
|
+
// Select server
|
|
72
|
+
const serverOptions = containers.map((c) => ({
|
|
73
|
+
value: c,
|
|
74
|
+
label: c.replace(/^mc-/, ''),
|
|
75
|
+
}));
|
|
76
|
+
const server = await p.select({
|
|
77
|
+
message: 'Select server',
|
|
78
|
+
options: serverOptions,
|
|
79
|
+
});
|
|
80
|
+
if (p.isCancel(server)) {
|
|
81
|
+
p.cancel('Cancelled');
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
targetContainer = server;
|
|
85
|
+
targetServer = targetContainer.replace(/^mc-/, '');
|
|
86
|
+
}
|
|
87
|
+
// Select target type
|
|
88
|
+
const targetType = await p.select({
|
|
89
|
+
message: 'Send to',
|
|
90
|
+
options: [
|
|
91
|
+
{ value: 'all', label: 'All players (broadcast)' },
|
|
92
|
+
{ value: 'player', label: 'Specific player (private message)' },
|
|
93
|
+
],
|
|
94
|
+
});
|
|
95
|
+
if (p.isCancel(targetType)) {
|
|
96
|
+
p.cancel('Cancelled');
|
|
97
|
+
return 0;
|
|
98
|
+
}
|
|
99
|
+
let targetPlayer;
|
|
100
|
+
if (targetType === 'player') {
|
|
101
|
+
// Get online players
|
|
102
|
+
const onlinePlayers = await getOnlinePlayersForSelection(scope === 'all' ? containers : [targetContainer]);
|
|
103
|
+
if (onlinePlayers.length === 0) {
|
|
104
|
+
log.warn('No players online');
|
|
105
|
+
p.outro('No players to message');
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
108
|
+
const playerOptions = onlinePlayers.map((sp) => ({
|
|
109
|
+
value: sp,
|
|
110
|
+
label: scope === 'all' ? `${sp.player} (${sp.server})` : sp.player,
|
|
111
|
+
}));
|
|
112
|
+
const selectedPlayer = await p.select({
|
|
113
|
+
message: 'Select player',
|
|
114
|
+
options: playerOptions,
|
|
115
|
+
});
|
|
116
|
+
if (p.isCancel(selectedPlayer)) {
|
|
117
|
+
p.cancel('Cancelled');
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
const selected = selectedPlayer;
|
|
121
|
+
targetPlayer = selected.player;
|
|
122
|
+
if (scope === 'all') {
|
|
123
|
+
targetContainer = selected.container;
|
|
124
|
+
targetServer = selected.server;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Enter message
|
|
128
|
+
const message = await p.text({
|
|
129
|
+
message: 'Enter message',
|
|
130
|
+
placeholder: 'Hello!',
|
|
131
|
+
validate: (value) => {
|
|
132
|
+
if (!value || value.trim().length === 0) {
|
|
133
|
+
return 'Message cannot be empty';
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
if (p.isCancel(message)) {
|
|
139
|
+
p.cancel('Cancelled');
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
const messageText = message;
|
|
143
|
+
// Send message
|
|
144
|
+
if (targetType === 'player' && targetPlayer && targetContainer) {
|
|
145
|
+
const result = await sendPrivateMessage(targetContainer, targetPlayer, messageText);
|
|
146
|
+
if (result === 0) {
|
|
147
|
+
p.outro(colors.green(`Message sent to ${targetPlayer}`));
|
|
148
|
+
}
|
|
149
|
+
return result;
|
|
150
|
+
}
|
|
151
|
+
else if (scope === 'all') {
|
|
152
|
+
const result = await broadcastToAllServers(messageText);
|
|
153
|
+
if (result === 0) {
|
|
154
|
+
p.outro(colors.green('Message broadcast to all servers'));
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
else if (targetContainer && targetServer) {
|
|
159
|
+
const result = await broadcastToServer(targetContainer, targetServer, messageText);
|
|
160
|
+
if (result === 0) {
|
|
161
|
+
p.outro(colors.green(`Message broadcast to ${targetServer}`));
|
|
162
|
+
}
|
|
163
|
+
return result;
|
|
164
|
+
}
|
|
165
|
+
return 1;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get online players for selection
|
|
169
|
+
*/
|
|
170
|
+
async function getOnlinePlayersForSelection(containers) {
|
|
171
|
+
const players = [];
|
|
172
|
+
for (const container of containers) {
|
|
173
|
+
const serverName = container.replace(/^mc-/, '');
|
|
174
|
+
const result = await execRconWithOutput(container, ['list']);
|
|
175
|
+
if (result.code === 0) {
|
|
176
|
+
const output = result.output.trim();
|
|
177
|
+
const playersMatch = output.match(/:\s*(.+)$/);
|
|
178
|
+
if (playersMatch && playersMatch[1]) {
|
|
179
|
+
const playerNames = playersMatch[1]
|
|
180
|
+
.split(',')
|
|
181
|
+
.map((s) => s.trim())
|
|
182
|
+
.filter(Boolean);
|
|
183
|
+
for (const playerName of playerNames) {
|
|
184
|
+
players.push({
|
|
185
|
+
server: serverName,
|
|
186
|
+
container,
|
|
187
|
+
player: playerName,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return players;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Send private message to a player
|
|
197
|
+
*/
|
|
198
|
+
async function sendPrivateMessage(container, player, message) {
|
|
199
|
+
const result = await execRconWithOutput(container, ['tell', player, message]);
|
|
200
|
+
if (result.code !== 0) {
|
|
201
|
+
log.error(`Failed to send message: ${result.output}`);
|
|
202
|
+
return 1;
|
|
203
|
+
}
|
|
204
|
+
console.log(colors.green(`[${container.replace(/^mc-/, '')}] `) + `Whispered to ${player}: ${message}`);
|
|
205
|
+
return 0;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Broadcast message to all players on a server
|
|
209
|
+
*/
|
|
210
|
+
async function broadcastToServer(container, serverName, message) {
|
|
211
|
+
const result = await execRconWithOutput(container, ['say', message]);
|
|
212
|
+
if (result.code !== 0) {
|
|
213
|
+
log.error(`Failed to broadcast: ${result.output}`);
|
|
214
|
+
return 1;
|
|
215
|
+
}
|
|
216
|
+
console.log(colors.green(`[${serverName}] `) + `Broadcast: ${message}`);
|
|
217
|
+
return 0;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Broadcast message to all running servers
|
|
221
|
+
*/
|
|
222
|
+
async function broadcastToAllServers(message) {
|
|
223
|
+
const containers = getRunningMcContainers();
|
|
224
|
+
if (containers.length === 0) {
|
|
225
|
+
log.error('No running servers found');
|
|
226
|
+
return 1;
|
|
227
|
+
}
|
|
228
|
+
let successCount = 0;
|
|
229
|
+
let failCount = 0;
|
|
230
|
+
for (const container of containers) {
|
|
231
|
+
const serverName = container.replace(/^mc-/, '');
|
|
232
|
+
const result = await execRconWithOutput(container, ['say', message]);
|
|
233
|
+
if (result.code === 0) {
|
|
234
|
+
console.log(colors.green(`[${serverName}] `) + `Broadcast: ${message}`);
|
|
235
|
+
successCount++;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
log.error(`[${serverName}] Failed to broadcast`);
|
|
239
|
+
failCount++;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
console.log('');
|
|
243
|
+
console.log(colors.bold(`Broadcast complete: `) +
|
|
244
|
+
colors.green(`${successCount} success`) +
|
|
245
|
+
(failCount > 0 ? `, ${colors.red(`${failCount} failed`)}` : ''));
|
|
246
|
+
return failCount > 0 ? 1 : 0;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Find player across all servers and send private message
|
|
250
|
+
*/
|
|
251
|
+
async function sendToPlayerAcrossServers(player, message) {
|
|
252
|
+
const containers = getRunningMcContainers();
|
|
253
|
+
if (containers.length === 0) {
|
|
254
|
+
log.error('No running servers found');
|
|
255
|
+
return 1;
|
|
256
|
+
}
|
|
257
|
+
// Find player
|
|
258
|
+
for (const container of containers) {
|
|
259
|
+
const result = await execRconWithOutput(container, ['list']);
|
|
260
|
+
if (result.code === 0) {
|
|
261
|
+
const output = result.output.trim().toLowerCase();
|
|
262
|
+
if (output.includes(player.toLowerCase())) {
|
|
263
|
+
// Found player on this server
|
|
264
|
+
const serverName = container.replace(/^mc-/, '');
|
|
265
|
+
console.log(colors.dim(`Found ${player} on ${serverName}`));
|
|
266
|
+
return await sendPrivateMessage(container, player, message);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
log.error(`Player '${player}' not found on any server`);
|
|
271
|
+
return 1;
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=msg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msg.js","sourceRoot":"","sources":["../../src/commands/msg.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface OpCommandOptions {
|
|
2
|
+
root?: string;
|
|
3
|
+
serverName?: string;
|
|
4
|
+
subCommand?: 'add' | 'remove' | 'list';
|
|
5
|
+
playerName?: string;
|
|
6
|
+
json?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Manage server operators
|
|
10
|
+
*/
|
|
11
|
+
export declare function opCommand(options: OpCommandOptions): Promise<number>;
|
|
12
|
+
//# sourceMappingURL=op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"op.d.ts","sourceRoot":"","sources":["../../src/commands/op.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4D1E"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { Paths, log, colors } from '@minecraft-docker/shared';
|
|
2
|
+
import { ShellExecutor } from '../lib/shell.js';
|
|
3
|
+
import { isContainerRunning, execRconWithOutput, getContainerName } from '../lib/rcon.js';
|
|
4
|
+
/**
|
|
5
|
+
* Manage server operators
|
|
6
|
+
*/
|
|
7
|
+
export async function opCommand(options) {
|
|
8
|
+
const paths = new Paths(options.root);
|
|
9
|
+
if (!paths.isInitialized()) {
|
|
10
|
+
log.error('Platform not initialized. Run: mcctl init');
|
|
11
|
+
return 1;
|
|
12
|
+
}
|
|
13
|
+
if (!options.serverName) {
|
|
14
|
+
log.error('Server name is required');
|
|
15
|
+
log.info('Usage: mcctl op <server> <add|remove|list> [player]');
|
|
16
|
+
return 1;
|
|
17
|
+
}
|
|
18
|
+
if (!options.subCommand) {
|
|
19
|
+
log.error('Action is required: add, remove, or list');
|
|
20
|
+
log.info('Usage: mcctl op <server> <add|remove|list> [player]');
|
|
21
|
+
return 1;
|
|
22
|
+
}
|
|
23
|
+
const shell = new ShellExecutor(paths);
|
|
24
|
+
const config = shell.readConfig(options.serverName);
|
|
25
|
+
if (config === null) {
|
|
26
|
+
log.error(`Server '${options.serverName}' not found`);
|
|
27
|
+
return 1;
|
|
28
|
+
}
|
|
29
|
+
const containerName = getContainerName(options.serverName);
|
|
30
|
+
const isRunning = await isContainerRunning(containerName);
|
|
31
|
+
switch (options.subCommand) {
|
|
32
|
+
case 'list': {
|
|
33
|
+
return await listOps(shell, options, config, containerName, isRunning);
|
|
34
|
+
}
|
|
35
|
+
case 'add': {
|
|
36
|
+
if (!options.playerName) {
|
|
37
|
+
log.error('Player name is required for add');
|
|
38
|
+
log.info('Usage: mcctl op <server> add <player>');
|
|
39
|
+
return 1;
|
|
40
|
+
}
|
|
41
|
+
return await addOp(shell, options, config, containerName, isRunning);
|
|
42
|
+
}
|
|
43
|
+
case 'remove': {
|
|
44
|
+
if (!options.playerName) {
|
|
45
|
+
log.error('Player name is required for remove');
|
|
46
|
+
log.info('Usage: mcctl op <server> remove <player>');
|
|
47
|
+
return 1;
|
|
48
|
+
}
|
|
49
|
+
return await removeOp(shell, options, config, containerName, isRunning);
|
|
50
|
+
}
|
|
51
|
+
default:
|
|
52
|
+
log.error(`Unknown action: ${options.subCommand}`);
|
|
53
|
+
log.info('Valid actions: add, remove, list');
|
|
54
|
+
return 1;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* List current operators
|
|
59
|
+
*/
|
|
60
|
+
async function listOps(shell, options, config, containerName, isRunning) {
|
|
61
|
+
// Get OPs from config.env
|
|
62
|
+
const configOps = config['OPS'] ? config['OPS'].split(',').map((s) => s.trim()).filter(Boolean) : [];
|
|
63
|
+
if (options.json) {
|
|
64
|
+
console.log(JSON.stringify({
|
|
65
|
+
server: options.serverName,
|
|
66
|
+
running: isRunning,
|
|
67
|
+
operators: configOps,
|
|
68
|
+
source: 'config.env',
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.log(colors.bold(`\nOperators for ${options.serverName}:\n`));
|
|
73
|
+
if (configOps.length === 0) {
|
|
74
|
+
console.log(' (none)');
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
for (const op of configOps) {
|
|
78
|
+
console.log(` ${colors.cyan(op)}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
console.log('');
|
|
82
|
+
if (!isRunning) {
|
|
83
|
+
log.warn('Server is not running. Showing operators from config.env');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return 0;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Add an operator
|
|
90
|
+
*/
|
|
91
|
+
async function addOp(shell, options, config, containerName, isRunning) {
|
|
92
|
+
const playerName = options.playerName;
|
|
93
|
+
// Get current OPs from config
|
|
94
|
+
const currentOps = config['OPS']
|
|
95
|
+
? config['OPS'].split(',').map((s) => s.trim()).filter(Boolean)
|
|
96
|
+
: [];
|
|
97
|
+
// Check if already an OP
|
|
98
|
+
if (currentOps.some((op) => op.toLowerCase() === playerName.toLowerCase())) {
|
|
99
|
+
if (options.json) {
|
|
100
|
+
console.log(JSON.stringify({
|
|
101
|
+
success: false,
|
|
102
|
+
error: 'already_op',
|
|
103
|
+
player: playerName,
|
|
104
|
+
server: options.serverName,
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
log.warn(`${playerName} is already an operator`);
|
|
109
|
+
}
|
|
110
|
+
return 0;
|
|
111
|
+
}
|
|
112
|
+
let rconSuccess = false;
|
|
113
|
+
let rconMessage = '';
|
|
114
|
+
// Execute RCON if server is running
|
|
115
|
+
if (isRunning) {
|
|
116
|
+
const result = await execRconWithOutput(containerName, ['op', playerName]);
|
|
117
|
+
rconSuccess = result.code === 0;
|
|
118
|
+
rconMessage = result.output.trim();
|
|
119
|
+
}
|
|
120
|
+
// Update config.env
|
|
121
|
+
const newOps = [...currentOps, playerName].join(',');
|
|
122
|
+
const configSuccess = shell.writeConfigValue(options.serverName, 'OPS', newOps);
|
|
123
|
+
if (options.json) {
|
|
124
|
+
console.log(JSON.stringify({
|
|
125
|
+
success: true,
|
|
126
|
+
player: playerName,
|
|
127
|
+
server: options.serverName,
|
|
128
|
+
rcon: isRunning ? { success: rconSuccess, message: rconMessage } : null,
|
|
129
|
+
config: { success: configSuccess },
|
|
130
|
+
running: isRunning,
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
if (isRunning && rconSuccess) {
|
|
135
|
+
console.log(colors.green(`✓ ${playerName} is now an operator (applied immediately)`));
|
|
136
|
+
}
|
|
137
|
+
else if (isRunning && !rconSuccess) {
|
|
138
|
+
console.log(colors.yellow(`⚠ RCON failed: ${rconMessage}`));
|
|
139
|
+
if (configSuccess) {
|
|
140
|
+
console.log(colors.green(`✓ Config updated. Will apply on server restart.`));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
console.log(colors.yellow(`⚠ Server is not running.`));
|
|
145
|
+
if (configSuccess) {
|
|
146
|
+
console.log(colors.green(`✓ Config updated. Changes will apply on next start.`));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return 0;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Remove an operator
|
|
154
|
+
*/
|
|
155
|
+
async function removeOp(shell, options, config, containerName, isRunning) {
|
|
156
|
+
const playerName = options.playerName;
|
|
157
|
+
// Get current OPs from config
|
|
158
|
+
const currentOps = config['OPS']
|
|
159
|
+
? config['OPS'].split(',').map((s) => s.trim()).filter(Boolean)
|
|
160
|
+
: [];
|
|
161
|
+
// Check if is an OP
|
|
162
|
+
const opIndex = currentOps.findIndex((op) => op.toLowerCase() === playerName.toLowerCase());
|
|
163
|
+
if (opIndex === -1) {
|
|
164
|
+
if (options.json) {
|
|
165
|
+
console.log(JSON.stringify({
|
|
166
|
+
success: false,
|
|
167
|
+
error: 'not_an_op',
|
|
168
|
+
player: playerName,
|
|
169
|
+
server: options.serverName,
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
log.warn(`${playerName} is not an operator`);
|
|
174
|
+
}
|
|
175
|
+
return 0;
|
|
176
|
+
}
|
|
177
|
+
let rconSuccess = false;
|
|
178
|
+
let rconMessage = '';
|
|
179
|
+
// Execute RCON if server is running
|
|
180
|
+
if (isRunning) {
|
|
181
|
+
const result = await execRconWithOutput(containerName, ['deop', playerName]);
|
|
182
|
+
rconSuccess = result.code === 0;
|
|
183
|
+
rconMessage = result.output.trim();
|
|
184
|
+
}
|
|
185
|
+
// Update config.env
|
|
186
|
+
currentOps.splice(opIndex, 1);
|
|
187
|
+
const newOps = currentOps.join(',');
|
|
188
|
+
const configSuccess = newOps
|
|
189
|
+
? shell.writeConfigValue(options.serverName, 'OPS', newOps)
|
|
190
|
+
: shell.writeConfigValue(options.serverName, 'OPS', '');
|
|
191
|
+
if (options.json) {
|
|
192
|
+
console.log(JSON.stringify({
|
|
193
|
+
success: true,
|
|
194
|
+
player: playerName,
|
|
195
|
+
server: options.serverName,
|
|
196
|
+
rcon: isRunning ? { success: rconSuccess, message: rconMessage } : null,
|
|
197
|
+
config: { success: configSuccess },
|
|
198
|
+
running: isRunning,
|
|
199
|
+
}));
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
if (isRunning && rconSuccess) {
|
|
203
|
+
console.log(colors.green(`✓ ${playerName} is no longer an operator (applied immediately)`));
|
|
204
|
+
}
|
|
205
|
+
else if (isRunning && !rconSuccess) {
|
|
206
|
+
console.log(colors.yellow(`⚠ RCON failed: ${rconMessage}`));
|
|
207
|
+
if (configSuccess) {
|
|
208
|
+
console.log(colors.green(`✓ Config updated. Will apply on server restart.`));
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
console.log(colors.yellow(`⚠ Server is not running.`));
|
|
213
|
+
if (configSuccess) {
|
|
214
|
+
console.log(colors.green(`✓ Config updated. Changes will apply on next start.`));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return 0;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=op.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"op.js","sourceRoot":"","sources":["../../src/commands/op.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface PlayerOnlineCommandOptions {
|
|
2
|
+
root?: string;
|
|
3
|
+
serverName?: string;
|
|
4
|
+
all?: boolean;
|
|
5
|
+
json?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Show online players
|
|
9
|
+
*/
|
|
10
|
+
export declare function playerOnlineCommand(options: PlayerOnlineCommandOptions): Promise<number>;
|
|
11
|
+
//# sourceMappingURL=player-online.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"player-online.d.ts","sourceRoot":"","sources":["../../src/commands/player-online.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAeD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAmE9F"}
|