code cleanup & fixes

This commit is contained in:
WeeXnes 2025-03-05 09:27:46 +01:00
parent abdf5ddefc
commit ee4723b243
10 changed files with 63 additions and 79 deletions

View file

@ -156,7 +156,7 @@
<!-- Delete Button --> <!-- Delete Button -->
<form method="dialog"> <form method="dialog">
<button class="btn btn-error" @click="deleteServer(editServerDialog)">Delete</button> <button class="btn btn-error" @click="deleteServer(editServerDialog.selectedServer)">Delete</button>
</form> </form>
</div> </div>
@ -230,14 +230,8 @@ const getLogs = async () => {
const response = await axios.post('/api/getLogs', { const response = await axios.post('/api/getLogs', {
name: serverLogDialog.selectedServer.name name: serverLogDialog.selectedServer.name
}); });
console.log(response.data.message)
//console.log(response)
const strRet = response.data.logs; const strRet = response.data.logs;
const stringArray = strRet.split('\n'); const stringArray = strRet.split('\n');
//console.log(stringArray);
serverLogDialog.logs.length = 0; serverLogDialog.logs.length = 0;
stringArray.slice(-20).forEach((element: string) => { stringArray.slice(-20).forEach((element: string) => {
serverLogDialog.logs.push(element); serverLogDialog.logs.push(element);
@ -278,12 +272,6 @@ const getProperties = async () => {
const addServer = async () => {
if (!settings.servers.some(server => server.name === addDialog.newServer.name)) {
settings.servers.push({ ...addDialog.newServer });
await syncServers();
}
}
@ -312,17 +300,19 @@ const deleteServer = async (server: MinecraftServer) => {
} }
} }
const syncServers = async () => { const addServer = async (server: MinecraftServer) => {
try { try {
const response = await axios.post('/api/setServers', { const response = await axios.post('/api/addServer', {
serverList: settings.servers newServer: addDialog.newServer
}); });
console.log(response.data); console.log(response.data);
await getServers()
} catch (error) { } catch (error) {
console.error(`Error `, error); console.error(`Error `, error);
} }
}; }
const startServer = async (server: MinecraftServer) => { const startServer = async (server: MinecraftServer) => {

24
server/api/addServer.ts Normal file
View file

@ -0,0 +1,24 @@
import {getServerByName, getServerDirectory} from "~/types/MinecraftServer";
import {environment} from "~/core/globals";
import {saveJsonFile} from "~/util/jsonLoader";
export default defineEventHandler(async (event) => {
const body = await readBody(event);
const { newServer } = body;
const server = getServerByName(newServer.name);
if(server) {
return { message: "Server with name " + newServer.name + " does already exist" };
}
try {
environment.settings.servers.push({...newServer})
saveJsonFile()
return { status: 'success' };
} catch (error) {
return { status: 'error', error: error };
}
});

View file

@ -1,23 +1,20 @@
import {environment} from "~/core/globals"; import {environment} from "~/core/globals";
import {removeServerByName, saveJsonFile} from "~/util/jsonLoader"; import {removeServerByName, saveJsonFile} from "~/util/jsonLoader";
import * as fs from 'fs/promises'; import * as fs from 'fs/promises';
import {getServerByName, getServerDirectory} from "~/types/MinecraftServer";
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
const body = await readBody(event); const body = await readBody(event);
const server_name: string = body.name const server_name: string = body.name
const server_properties: string = body.properties const server = getServerByName(server_name);
const server = environment.settings.servers.find(server => server.name == server_name);
if(!server) { if(!server) {
return { message: "Server with name " + server_name + " does not exist" }; return { message: "Server with name " + server_name + " does not exist" };
} }
try { try {
console.log("Recived server list");
removeServerByName(server.name); removeServerByName(server.name);
const logsPath = environment.paths.servers + "/" + server.name await fs.rm(getServerDirectory(server), { recursive: true, force: true })
await fs.rmdir(logsPath)
saveJsonFile() saveJsonFile()
return { status: 'success' }; return { status: 'success' };

View file

@ -1,7 +1,7 @@
import {environment} from "~/core/globals"; import {environment} from "~/core/globals";
import { defineEventHandler, getCookie, createError } from 'h3'; import { defineEventHandler, getCookie, createError } from 'h3';
import {saveJsonFile} from "~/util/jsonLoader"; import {saveJsonFile} from "~/util/jsonLoader";
import {MinecraftServer} from "~/types/MinecraftServer"; import {getLogsPath, getServerByName, MinecraftServer} from "~/types/MinecraftServer";
import {execa} from "execa"; import {execa} from "execa";
import * as fs from 'fs/promises'; import * as fs from 'fs/promises';
@ -9,21 +9,15 @@ import * as fs from 'fs/promises';
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
const body = await readBody(event); const body = await readBody(event);
const server_name: string = body.name const server_name: string = body.name
const server = getServerByName(server_name);
const server = environment.settings.servers.find(server => server.name == server_name);
if(!server) { if(!server) {
return { message: "Server with name " + server_name + " does not exist" }; return { message: "Server with name " + server_name + " does not exist" };
} }
const workingDir = environment.paths.servers + "/" + server.name;
const logsPath = environment.paths.servers + "/" + server.name + "/logs/latest.log";
try { try {
const data = await fs.readFile(logsPath, 'utf-8'); const rawLogs = await fs.readFile(getLogsPath(server), 'utf-8');
const strippedLogs = data.slice(0, -2); const strippedLogs = rawLogs.slice(0, -2);
return { return {
message: `Logs for ${server_name}`, message: `Logs for ${server_name}`,
logs: strippedLogs logs: strippedLogs

View file

@ -1,30 +1,24 @@
import {environment} from "~/core/globals"; import {environment} from "~/core/globals";
import { defineEventHandler, getCookie, createError } from 'h3'; import { defineEventHandler, getCookie, createError } from 'h3';
import {saveJsonFile} from "~/util/jsonLoader"; import {saveJsonFile} from "~/util/jsonLoader";
import {MinecraftServer} from "~/types/MinecraftServer"; import {getPropertiesPath, getServerByName, MinecraftServer} from "~/types/MinecraftServer";
import {execa} from "execa"; import {execa} from "execa";
import * as fs from 'fs/promises'; import * as fs from 'fs/promises';
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
const body = await readBody(event); const body = await readBody(event)
const server_name: string = body.name const server_name: string = body.name
const server = getServerByName(server_name)
const server = environment.settings.servers.find(server => server.name == server_name);
if(!server) { if(!server) {
return { message: "Server with name " + server_name + " does not exist" }; return { message: "Server with name " + server_name + " does not exist" };
} }
const workingDir = environment.paths.servers + "/" + server.name;
const logsPath = environment.paths.servers + "/" + server.name + "/server.properties";
try { try {
const data = await fs.readFile(logsPath, 'utf-8'); const serverProperties = await fs.readFile(getPropertiesPath(server), 'utf-8');
return { return {
message: `properties for ${server_name}`, message: `properties for ${server_name}`,
properties: data properties: serverProperties
}; };
} catch (error: any) { } catch (error: any) {
return { message: "Failed to get logs for " + server_name, error: error.message }; return { message: "Failed to get logs for " + server_name, error: error.message };

View file

@ -1,7 +1,7 @@
import {environment} from "~/core/globals"; import {environment} from "~/core/globals";
import { defineEventHandler, getCookie, createError } from 'h3'; import { defineEventHandler, getCookie, createError } from 'h3';
import {saveJsonFile} from "~/util/jsonLoader"; import {saveJsonFile} from "~/util/jsonLoader";
import {MinecraftServer} from "~/types/MinecraftServer"; import {getPropertiesPath, getServerByName, MinecraftServer} from "~/types/MinecraftServer";
import {execa} from "execa"; import {execa} from "execa";
import * as fs from 'fs/promises'; import * as fs from 'fs/promises';
@ -10,19 +10,12 @@ export default defineEventHandler(async (event) => {
const body = await readBody(event); const body = await readBody(event);
const server_name: string = body.name const server_name: string = body.name
const server_properties: string = body.properties const server_properties: string = body.properties
const server = getServerByName(server_name);
const server = environment.settings.servers.find(server => server.name == server_name);
if(!server) { if(!server) {
return { message: "Server with name " + server_name + " does not exist" }; return { message: "Server with name " + server_name + " does not exist" };
} }
const workingDir = environment.paths.servers + "/" + server.name;
const logsPath = environment.paths.servers + "/" + server.name + "/server.properties";
try { try {
await fs.writeFile(logsPath, server_properties, 'utf8'); await fs.writeFile(getPropertiesPath(server), server_properties, 'utf8');
return { return {
message: `properties for ${server_name} set`, message: `properties for ${server_name} set`,
}; };

View file

@ -1,27 +1,20 @@
import {environment} from "~/core/globals"; import {environment} from "~/core/globals";
import {saveJsonFile} from "~/util/jsonLoader"; import {saveJsonFile} from "~/util/jsonLoader";
import {MinecraftServer} from "~/types/MinecraftServer"; import {getJarPath, getServerByName, getServerDirectory, MinecraftServer} from "~/types/MinecraftServer";
import {execa} from "execa"; import {execa} from "execa";
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
const body = await readBody(event); const body = await readBody(event);
const server_name: string = body.name const server_name: string = body.name
const server = getServerByName(server_name);
const server = environment.settings.servers.find(server => server.name == server_name);
if(!server) { if(!server) {
return { message: "Server with name " + server_name + " does not exist" }; return { message: "Server with name " + server_name + " does not exist" };
} }
if (server.process) { if (server.process) {
return { message: "Minecraft server is already running." }; return { message: "Minecraft server is already running." };
} }
const workingDir = environment.paths.servers + "/" + server.name;
const jarPath = environment.paths.servers + "/" + server.name + "/server.jar";
try { try {
const xmsArg = `-Xms${server.maxMemory}G` const xmsArg = `-Xms${server.maxMemory}G`
@ -29,14 +22,11 @@ export default defineEventHandler(async (event) => {
console.log(`Starting server ${server.name} with ${xmsArg} and ${xmxArg}`); console.log(`Starting server ${server.name} with ${xmsArg} and ${xmxArg}`);
server.process = execa('java', [xmsArg, xmxArg, '-jar', jarPath, 'nogui'], { server.process = execa('java', [xmsArg, xmxArg, '-jar', getJarPath(server), 'nogui'], {
cwd: workingDir, cwd: getServerDirectory(server),
}); });
server.process.stdout.on('data', (data: string) => { server.process.stdout.on('data', (data: string) => {});
const logData = data.toString();
//console.log(logData);
});
server.process.stderr.on('data', (data: string) => { server.process.stderr.on('data', (data: string) => {
const errorData = data.toString(); const errorData = data.toString();
@ -48,7 +38,6 @@ export default defineEventHandler(async (event) => {
server.process = null; server.process = null;
}) })
return { message: "Minecraft server started." }; return { message: "Minecraft server started." };
} catch (error: any) { } catch (error: any) {
return { message: "Failed to start Minecraft server.", error: error.message }; return { message: "Failed to start Minecraft server.", error: error.message };

View file

@ -1,33 +1,29 @@
import { environment } from "~/core/globals"; import { environment } from "~/core/globals";
import { execa } from "execa"; import { execa } from "execa";
import {getServerByName} from "~/types/MinecraftServer";
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
const body = await readBody(event); const body = await readBody(event);
const server_name: string = body.name; const server_name: string = body.name;
const server = getServerByName(server_name);
const server = environment.settings.servers.find(server => server.name == server_name);
if (!server) { if (!server) {
return { message: "Server with name " + server_name + " does not exist" }; return { message: "Server with name " + server_name + " does not exist" };
} }
if (!server.process) { if (!server.process) {
return { message: "Minecraft server is not running." }; return { message: "Minecraft server is not running." };
} }
try { try {
// Send "stop" command to the server process stdin
server.process.stdin.write('stop\n'); server.process.stdin.write('stop\n');
// Optionally, listen for the process exit or cleanup
server.process.on('exit', (code: string) => { server.process.on('exit', (code: string) => {
console.log(`Server exit signal from stopServer with code ${code}`); console.log(`Server exit signal from stopServer with code ${code}`);
server.process = null; server.process = null;
}); });
return { message: "Minecraft server is stopping." }; return { message: "Minecraft server is stopping." };
} catch (error: any) { } catch (error: any) {
return { message: "Failed to stop Minecraft server.", error: error.message }; return { message: "Failed to stop Minecraft server.", error: error.message };

View file

@ -1,4 +1,3 @@
import type {ResultPromise} from "execa";
import {environment} from "~/core/globals"; import {environment} from "~/core/globals";
export interface MinecraftServer { export interface MinecraftServer {
@ -21,3 +20,11 @@ export function getJarPath (server: MinecraftServer): string {
export function getPropertiesPath (server: MinecraftServer): string { export function getPropertiesPath (server: MinecraftServer): string {
return environment.paths.servers + "/" + server.name + "/server.properties" return environment.paths.servers + "/" + server.name + "/server.properties"
} }
export function getLogsPath (server: MinecraftServer): string {
return environment.paths.servers + "/" + server.name + "/logs/latest.log"
}
export function getServerByName(server_name: string): MinecraftServer | undefined{
return environment.settings.servers.find(server => server.name == server_name);
}

View file

@ -83,7 +83,7 @@ export function checkAllServerDirectories(){
console.log('eula exists'); console.log('eula exists');
} catch (error) { } catch (error) {
console.log("setting eula to true") console.log("setting eula to true")
fs.writeFileSync(destinationPathEula, 'eula=true'); fs.writeFileSync(destinationPathEula, 'eula=' + environment.settings.eula);
} }
}) })