@minecraft-docker/mcctl-api 1.7.6

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 (82) hide show
  1. package/README.md +142 -0
  2. package/dist/app.d.ts +7 -0
  3. package/dist/app.d.ts.map +1 -0
  4. package/dist/app.js +83 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/config/index.d.ts +32 -0
  7. package/dist/config/index.d.ts.map +1 -0
  8. package/dist/config/index.js +124 -0
  9. package/dist/config/index.js.map +1 -0
  10. package/dist/index.d.ts +3 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +20 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/lib/rcon.d.ts +35 -0
  15. package/dist/lib/rcon.d.ts.map +1 -0
  16. package/dist/lib/rcon.js +90 -0
  17. package/dist/lib/rcon.js.map +1 -0
  18. package/dist/plugins/auth.d.ts +32 -0
  19. package/dist/plugins/auth.d.ts.map +1 -0
  20. package/dist/plugins/auth.js +194 -0
  21. package/dist/plugins/auth.js.map +1 -0
  22. package/dist/plugins/swagger.d.ts +170 -0
  23. package/dist/plugins/swagger.d.ts.map +1 -0
  24. package/dist/plugins/swagger.js +211 -0
  25. package/dist/plugins/swagger.js.map +1 -0
  26. package/dist/routes/auth.d.ts +12 -0
  27. package/dist/routes/auth.d.ts.map +1 -0
  28. package/dist/routes/auth.js +144 -0
  29. package/dist/routes/auth.js.map +1 -0
  30. package/dist/routes/backup.d.ts +9 -0
  31. package/dist/routes/backup.d.ts.map +1 -0
  32. package/dist/routes/backup.js +271 -0
  33. package/dist/routes/backup.js.map +1 -0
  34. package/dist/routes/console.d.ts +6 -0
  35. package/dist/routes/console.d.ts.map +1 -0
  36. package/dist/routes/console.js +90 -0
  37. package/dist/routes/console.js.map +1 -0
  38. package/dist/routes/players.d.ts +9 -0
  39. package/dist/routes/players.d.ts.map +1 -0
  40. package/dist/routes/players.js +353 -0
  41. package/dist/routes/players.js.map +1 -0
  42. package/dist/routes/router.d.ts +10 -0
  43. package/dist/routes/router.d.ts.map +1 -0
  44. package/dist/routes/router.js +55 -0
  45. package/dist/routes/router.js.map +1 -0
  46. package/dist/routes/servers/actions.d.ts +6 -0
  47. package/dist/routes/servers/actions.d.ts.map +1 -0
  48. package/dist/routes/servers/actions.js +65 -0
  49. package/dist/routes/servers/actions.js.map +1 -0
  50. package/dist/routes/servers.d.ts +10 -0
  51. package/dist/routes/servers.d.ts.map +1 -0
  52. package/dist/routes/servers.js +403 -0
  53. package/dist/routes/servers.js.map +1 -0
  54. package/dist/routes/worlds.d.ts +10 -0
  55. package/dist/routes/worlds.d.ts.map +1 -0
  56. package/dist/routes/worlds.js +341 -0
  57. package/dist/routes/worlds.js.map +1 -0
  58. package/dist/schemas/backup.d.ts +47 -0
  59. package/dist/schemas/backup.d.ts.map +1 -0
  60. package/dist/schemas/backup.js +43 -0
  61. package/dist/schemas/backup.js.map +1 -0
  62. package/dist/schemas/player.d.ts +46 -0
  63. package/dist/schemas/player.d.ts.map +1 -0
  64. package/dist/schemas/player.js +46 -0
  65. package/dist/schemas/player.js.map +1 -0
  66. package/dist/schemas/router.d.ts +42 -0
  67. package/dist/schemas/router.d.ts.map +1 -0
  68. package/dist/schemas/router.js +26 -0
  69. package/dist/schemas/router.js.map +1 -0
  70. package/dist/schemas/server.d.ts +139 -0
  71. package/dist/schemas/server.d.ts.map +1 -0
  72. package/dist/schemas/server.js +124 -0
  73. package/dist/schemas/server.js.map +1 -0
  74. package/dist/schemas/world.d.ts +142 -0
  75. package/dist/schemas/world.d.ts.map +1 -0
  76. package/dist/schemas/world.js +124 -0
  77. package/dist/schemas/world.js.map +1 -0
  78. package/dist/utils/docker-compose.d.ts +23 -0
  79. package/dist/utils/docker-compose.d.ts.map +1 -0
  80. package/dist/utils/docker-compose.js +100 -0
  81. package/dist/utils/docker-compose.js.map +1 -0
  82. package/package.json +69 -0
@@ -0,0 +1,403 @@
1
+ import fp from 'fastify-plugin';
2
+ import { getAllServers, getServerInfoFromConfig, getServerDetailedInfo, getContainerLogs, containerExists, serverExists, getContainerStatus, stopContainer, } from '@minecraft-docker/shared';
3
+ import { ServerListResponseSchema, ServerDetailResponseSchema, ExecCommandResponseSchema, ExecCommandRequestSchema, LogsResponseSchema, LogsQuerySchema, ErrorResponseSchema, ServerNameParamsSchema, CreateServerRequestSchema, CreateServerResponseSchema, DeleteServerResponseSchema, DeleteServerQuerySchema, } from '../schemas/server.js';
4
+ import { config } from '../config/index.js';
5
+ import { exec } from 'child_process';
6
+ import { promisify } from 'util';
7
+ import { join } from 'path';
8
+ import { existsSync } from 'fs';
9
+ const execPromise = promisify(exec);
10
+ /**
11
+ * Server routes plugin
12
+ * Provides REST API for Minecraft server management
13
+ */
14
+ const serversPlugin = async (fastify) => {
15
+ /**
16
+ * GET /api/servers
17
+ * List all Minecraft servers
18
+ */
19
+ fastify.get('/api/servers', {
20
+ schema: {
21
+ response: {
22
+ 200: ServerListResponseSchema,
23
+ 500: ErrorResponseSchema,
24
+ },
25
+ },
26
+ }, async (_request, reply) => {
27
+ try {
28
+ // Get all servers (both configured and running containers)
29
+ const serverNames = getAllServers();
30
+ const servers = serverNames.map((serverName) => {
31
+ const info = getServerInfoFromConfig(serverName);
32
+ return {
33
+ name: info.name,
34
+ container: info.container,
35
+ status: info.status,
36
+ health: info.health,
37
+ hostname: info.hostname,
38
+ };
39
+ });
40
+ return reply.send({
41
+ servers,
42
+ total: servers.length,
43
+ });
44
+ }
45
+ catch (error) {
46
+ fastify.log.error(error, 'Failed to list servers');
47
+ return reply.code(500).send({
48
+ error: 'InternalServerError',
49
+ message: 'Failed to list servers',
50
+ });
51
+ }
52
+ });
53
+ /**
54
+ * GET /api/servers/:name
55
+ * Get detailed server information
56
+ */
57
+ fastify.get('/api/servers/:name', {
58
+ schema: {
59
+ params: ServerNameParamsSchema,
60
+ response: {
61
+ 200: ServerDetailResponseSchema,
62
+ 404: ErrorResponseSchema,
63
+ 500: ErrorResponseSchema,
64
+ },
65
+ },
66
+ }, async (request, reply) => {
67
+ const { name } = request.params;
68
+ try {
69
+ // Check if server exists (either as container or config)
70
+ if (!serverExists(name)) {
71
+ return reply.code(404).send({
72
+ error: 'NotFound',
73
+ message: `Server '${name}' not found`,
74
+ });
75
+ }
76
+ const info = await getServerDetailedInfo(name);
77
+ const server = {
78
+ name: info.name,
79
+ container: info.container,
80
+ status: info.status,
81
+ health: info.health,
82
+ hostname: info.hostname,
83
+ type: info.type,
84
+ version: info.version,
85
+ memory: info.memory,
86
+ uptime: info.uptime,
87
+ uptimeSeconds: info.uptimeSeconds,
88
+ players: info.players,
89
+ stats: info.stats,
90
+ worldName: info.worldName,
91
+ worldSize: info.worldSize,
92
+ };
93
+ return reply.send({ server });
94
+ }
95
+ catch (error) {
96
+ fastify.log.error(error, 'Failed to get server details');
97
+ return reply.code(500).send({
98
+ error: 'InternalServerError',
99
+ message: 'Failed to get server details',
100
+ });
101
+ }
102
+ });
103
+ /**
104
+ * GET /api/servers/:name/logs
105
+ * Get server logs (supports SSE streaming with follow=true)
106
+ */
107
+ fastify.get('/api/servers/:name/logs', {
108
+ schema: {
109
+ params: ServerNameParamsSchema,
110
+ querystring: LogsQuerySchema,
111
+ response: {
112
+ 200: LogsResponseSchema,
113
+ 404: ErrorResponseSchema,
114
+ 500: ErrorResponseSchema,
115
+ },
116
+ },
117
+ }, async (request, reply) => {
118
+ const { name } = request.params;
119
+ const { lines = 100, follow = false } = request.query;
120
+ const containerName = `mc-${name}`;
121
+ try {
122
+ if (!containerExists(containerName)) {
123
+ return reply.code(404).send({
124
+ error: 'NotFound',
125
+ message: `Server '${name}' not found`,
126
+ });
127
+ }
128
+ // SSE streaming mode
129
+ if (follow) {
130
+ const { spawn } = await import('node:child_process');
131
+ reply.raw.writeHead(200, {
132
+ 'Content-Type': 'text/event-stream',
133
+ 'Cache-Control': 'no-cache',
134
+ 'Connection': 'keep-alive',
135
+ 'Access-Control-Allow-Origin': '*',
136
+ });
137
+ // Send initial logs
138
+ const initialLogs = getContainerLogs(containerName, lines);
139
+ for (const line of initialLogs.split('\n')) {
140
+ if (line) {
141
+ reply.raw.write(`data: ${JSON.stringify({ log: line })}\n\n`);
142
+ }
143
+ }
144
+ // Follow new logs with docker logs -f
145
+ const dockerLogs = spawn('docker', ['logs', '-f', '--tail', '0', containerName], {
146
+ stdio: ['ignore', 'pipe', 'pipe'],
147
+ });
148
+ const sendLine = (data) => {
149
+ const lines = data.toString().split('\n');
150
+ for (const line of lines) {
151
+ if (line.trim()) {
152
+ reply.raw.write(`data: ${JSON.stringify({ log: line })}\n\n`);
153
+ }
154
+ }
155
+ };
156
+ dockerLogs.stdout?.on('data', sendLine);
157
+ dockerLogs.stderr?.on('data', sendLine);
158
+ // Heartbeat to keep connection alive
159
+ const heartbeat = setInterval(() => {
160
+ reply.raw.write(': heartbeat\n\n');
161
+ }, 30000);
162
+ // Cleanup on client disconnect
163
+ request.raw.on('close', () => {
164
+ clearInterval(heartbeat);
165
+ dockerLogs.kill();
166
+ reply.raw.end();
167
+ });
168
+ dockerLogs.on('close', () => {
169
+ clearInterval(heartbeat);
170
+ reply.raw.write(`data: ${JSON.stringify({ event: 'closed' })}\n\n`);
171
+ reply.raw.end();
172
+ });
173
+ return;
174
+ }
175
+ // Standard JSON response (non-streaming)
176
+ const logs = getContainerLogs(containerName, lines);
177
+ return reply.send({
178
+ logs,
179
+ lines: logs.split('\n').filter(Boolean).length,
180
+ });
181
+ }
182
+ catch (error) {
183
+ fastify.log.error(error, 'Failed to get server logs');
184
+ return reply.code(500).send({
185
+ error: 'InternalServerError',
186
+ message: 'Failed to get server logs',
187
+ });
188
+ }
189
+ });
190
+ /**
191
+ * POST /api/servers/:name/exec
192
+ * Execute RCON command
193
+ */
194
+ fastify.post('/api/servers/:name/exec', {
195
+ schema: {
196
+ params: ServerNameParamsSchema,
197
+ body: ExecCommandRequestSchema,
198
+ response: {
199
+ 200: ExecCommandResponseSchema,
200
+ 404: ErrorResponseSchema,
201
+ 400: ErrorResponseSchema,
202
+ 500: ErrorResponseSchema,
203
+ },
204
+ },
205
+ }, async (request, reply) => {
206
+ const { name } = request.params;
207
+ const { command } = request.body;
208
+ const containerName = `mc-${name}`;
209
+ try {
210
+ if (!containerExists(containerName)) {
211
+ return reply.code(404).send({
212
+ error: 'NotFound',
213
+ message: `Server '${name}' not found`,
214
+ });
215
+ }
216
+ // Import and use execRcon dynamically to avoid circular dependency
217
+ const { spawn } = await import('node:child_process');
218
+ const output = await new Promise((resolve) => {
219
+ const child = spawn('docker', ['exec', containerName, 'rcon-cli', command], {
220
+ stdio: ['pipe', 'pipe', 'pipe'],
221
+ });
222
+ let stdout = '';
223
+ child.stdout?.on('data', (data) => { stdout += data.toString(); });
224
+ child.on('close', () => { resolve(stdout.trim()); });
225
+ child.on('error', () => { resolve(''); });
226
+ });
227
+ return reply.send({
228
+ success: true,
229
+ output: output || '',
230
+ });
231
+ }
232
+ catch (error) {
233
+ fastify.log.error(error, 'Failed to execute command');
234
+ return reply.code(500).send({
235
+ error: 'InternalServerError',
236
+ message: 'Failed to execute command',
237
+ });
238
+ }
239
+ });
240
+ /**
241
+ * POST /api/servers
242
+ * Create a new server
243
+ */
244
+ fastify.post('/api/servers', {
245
+ schema: {
246
+ description: 'Create a new Minecraft server',
247
+ tags: ['servers'],
248
+ body: CreateServerRequestSchema,
249
+ response: {
250
+ 201: CreateServerResponseSchema,
251
+ 400: ErrorResponseSchema,
252
+ 409: ErrorResponseSchema,
253
+ 500: ErrorResponseSchema,
254
+ },
255
+ },
256
+ }, async (request, reply) => {
257
+ const { name, type, version, memory, seed, worldUrl, worldName, autoStart } = request.body;
258
+ try {
259
+ // Check if server already exists
260
+ if (serverExists(name)) {
261
+ return reply.code(409).send({
262
+ error: 'Conflict',
263
+ message: `Server '${name}' already exists`,
264
+ });
265
+ }
266
+ // Build create-server.sh command arguments
267
+ const args = [name];
268
+ if (type) {
269
+ args.push('-t', type);
270
+ }
271
+ if (version) {
272
+ args.push('-v', version);
273
+ }
274
+ if (seed) {
275
+ args.push('-s', seed);
276
+ }
277
+ if (worldUrl) {
278
+ args.push('-u', worldUrl);
279
+ }
280
+ if (worldName) {
281
+ args.push('-w', worldName);
282
+ }
283
+ if (autoStart === false) {
284
+ args.push('--no-start');
285
+ }
286
+ // Find create-server.sh script
287
+ const platformPath = config.platformPath;
288
+ const scriptPath = join(platformPath, 'scripts', 'create-server.sh');
289
+ // Check if script exists, fallback to global mcctl
290
+ let command;
291
+ if (existsSync(scriptPath)) {
292
+ command = `bash "${scriptPath}" ${args.map(a => `"${a}"`).join(' ')}`;
293
+ }
294
+ else {
295
+ // Use mcctl CLI if script not found
296
+ command = `mcctl create ${args.map(a => `"${a}"`).join(' ')}`;
297
+ }
298
+ const { stdout, stderr } = await execPromise(command, {
299
+ cwd: platformPath,
300
+ timeout: 120000, // 2 minute timeout for server creation
301
+ env: {
302
+ ...process.env,
303
+ MCCTL_ROOT: platformPath,
304
+ },
305
+ });
306
+ fastify.log.info({ stdout, stderr }, 'Server created');
307
+ return reply.code(201).send({
308
+ success: true,
309
+ server: {
310
+ name,
311
+ container: `mc-${name}`,
312
+ status: autoStart !== false ? 'starting' : 'created',
313
+ },
314
+ });
315
+ }
316
+ catch (error) {
317
+ const execError = error;
318
+ fastify.log.error(error, 'Failed to create server');
319
+ return reply.code(500).send({
320
+ error: 'InternalServerError',
321
+ message: execError.stderr || execError.message || 'Failed to create server',
322
+ });
323
+ }
324
+ });
325
+ /**
326
+ * DELETE /api/servers/:name
327
+ * Delete a server
328
+ */
329
+ fastify.delete('/api/servers/:name', {
330
+ schema: {
331
+ description: 'Delete a Minecraft server',
332
+ tags: ['servers'],
333
+ params: ServerNameParamsSchema,
334
+ querystring: DeleteServerQuerySchema,
335
+ response: {
336
+ 200: DeleteServerResponseSchema,
337
+ 404: ErrorResponseSchema,
338
+ 500: ErrorResponseSchema,
339
+ },
340
+ },
341
+ }, async (request, reply) => {
342
+ const { name } = request.params;
343
+ const { force } = request.query;
344
+ const containerName = `mc-${name}`;
345
+ try {
346
+ // Check if server exists
347
+ if (!serverExists(name)) {
348
+ return reply.code(404).send({
349
+ error: 'NotFound',
350
+ message: `Server '${name}' not found`,
351
+ });
352
+ }
353
+ // Check if running and stop if needed
354
+ const status = getContainerStatus(containerName);
355
+ if (status === 'running') {
356
+ if (!force) {
357
+ // Stop the server first
358
+ stopContainer(containerName);
359
+ }
360
+ }
361
+ // Find delete-server.sh script
362
+ const platformPath = config.platformPath;
363
+ const scriptPath = join(platformPath, 'scripts', 'delete-server.sh');
364
+ // Build command
365
+ let command;
366
+ if (existsSync(scriptPath)) {
367
+ command = `bash "${scriptPath}" "${name}" --force`;
368
+ }
369
+ else {
370
+ // Use mcctl CLI if script not found
371
+ command = `mcctl delete "${name}" --force`;
372
+ }
373
+ const { stdout, stderr } = await execPromise(command, {
374
+ cwd: platformPath,
375
+ timeout: 60000, // 1 minute timeout
376
+ env: {
377
+ ...process.env,
378
+ MCCTL_ROOT: platformPath,
379
+ },
380
+ });
381
+ fastify.log.info({ stdout, stderr }, 'Server deleted');
382
+ return reply.send({
383
+ success: true,
384
+ server: name,
385
+ message: 'Server deleted successfully',
386
+ });
387
+ }
388
+ catch (error) {
389
+ const execError = error;
390
+ fastify.log.error(error, 'Failed to delete server');
391
+ return reply.code(500).send({
392
+ error: 'InternalServerError',
393
+ message: execError.stderr || execError.message || 'Failed to delete server',
394
+ });
395
+ }
396
+ });
397
+ };
398
+ export default fp(serversPlugin, {
399
+ name: 'servers-routes',
400
+ fastify: '5.x',
401
+ });
402
+ export { serversPlugin };
403
+ //# sourceMappingURL=servers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servers.js","sourceRoot":"","sources":["../../src/routes/servers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { FastifyPluginAsync } from 'fastify';
2
+ /**
3
+ * Worlds routes plugin
4
+ * Provides REST API for Minecraft world management
5
+ */
6
+ declare const worldsPlugin: FastifyPluginAsync;
7
+ declare const _default: FastifyPluginAsync;
8
+ export default _default;
9
+ export { worldsPlugin };
10
+ //# sourceMappingURL=worlds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worlds.d.ts","sourceRoot":"","sources":["../../src/routes/worlds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,kBAAkB,EAAgC,MAAM,SAAS,CAAC;AA6E5F;;;GAGG;AACH,QAAA,MAAM,YAAY,EAAE,kBA0UnB,CAAC;;AAEF,wBAGG;AAEH,OAAO,EAAE,YAAY,EAAE,CAAC"}