added some logging

This commit is contained in:
WeeXnes 2025-02-27 03:20:54 +01:00
parent 4a78b289e9
commit 286685d157
6 changed files with 46 additions and 14 deletions

31
core/logger.ts Normal file
View file

@ -0,0 +1,31 @@
class Logger {
private static getTimestamp(): string {
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
static error(message: string): void {
console.error(`[${this.getTimestamp()}] [ERROR] ${message}`);
}
static warning(message: string): void {
console.warn(`[${this.getTimestamp()}] [WARNING] ${message}`);
}
static info(message: string): void {
console.log(`[${this.getTimestamp()}] [INFO] ${message}`);
}
static success(message: string): void {
console.log(`[${this.getTimestamp()}] [SUCCESS] ${message}`);
}
}
export default Logger;

View file

@ -1,11 +1,12 @@
import { defineEventHandler, getCookie, createError } from 'h3'; import { defineEventHandler, getCookie, createError } from 'h3';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import {jwt_globals} from "~/core/globals"; import {jwt_globals} from "~/core/globals";
import Logger from "~/core/logger";
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
try { try {
const token = getCookie(event, 'token'); const token = getCookie(event, 'token');
console.log("Checking token " + token); Logger.info("Checking token " + token);
if (!token) { if (!token) {
throw createError({ statusCode: 401, statusMessage: 'Unauthorized' }); throw createError({ statusCode: 401, statusMessage: 'Unauthorized' });
} }
@ -19,7 +20,7 @@ export default defineEventHandler(async (event) => {
if (!decoded?.userId) { if (!decoded?.userId) {
throw createError({ statusCode: 401, statusMessage: 'Invalid token' }); throw createError({ statusCode: 401, statusMessage: 'Invalid token' });
} }
console.log("user has been authed, hash: " + decoded.userId); Logger.success("user has been authed, password: " + decoded.userId);
return { success: true }; return { success: true };
} catch (error: any) { } catch (error: any) {
return createError({ return createError({

View file

@ -1,4 +1,5 @@
import { exec } from 'child_process'; import { exec } from 'child_process';
import Logger from "~/core/logger";
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
const body = await readBody(event); const body = await readBody(event);
@ -12,13 +13,14 @@ export default defineEventHandler(async (event) => {
await new Promise((resolve, reject) => { await new Promise((resolve, reject) => {
exec(command, (error, stdout, stderr) => { exec(command, (error, stdout, stderr) => {
if (error || stderr) { if (error || stderr) {;
reject(`Error: ${stderr || error?.message}`); Logger.error(`Error: ${stderr || error?.message}`);
reject(`Error: ${stderr || error?.message}`)
} }
resolve(stdout); resolve(stdout);
}); });
}); });
Logger.info(action + ": " + vm.name);
return { status: 'success', message: `VM ${action} successful`, vm }; return { status: 'success', message: `VM ${action} successful`, vm };
} catch (error) { } catch (error) {
return { status: 'error', message: `Failed to ${action} VM`, error: error }; return { status: 'error', message: `Failed to ${action} VM`, error: error };

View file

@ -4,8 +4,6 @@ import {VM} from "~/types/VM";
import {settings} from "~/panel.config"; import {settings} from "~/panel.config";
export default defineEventHandler(() => { export default defineEventHandler(() => {
let vmNames = ["Gameserver", "Ubuntu_VM1"] let vmNames = ["Gameserver", "Ubuntu_VM1"]
const virtualMachines: VM[] = []; const virtualMachines: VM[] = [];
settings.qemu_vms.forEach(vm => { settings.qemu_vms.forEach(vm => {

View file

@ -3,21 +3,20 @@ import { sendError, createError } from 'h3';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import {settings} from "~/panel.config"; import {settings} from "~/panel.config";
import {jwt_globals} from "~/core/globals"; import {jwt_globals} from "~/core/globals";
import Logger from "~/core/logger";
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
try { try {
const { password } = await readBody(event); const { password } = await readBody(event);
if (!password) { if (!password) {
console.log("password is required"); Logger.error("password is required");
return sendError(event, createError({ statusCode: 400, message: 'password is required' })); return sendError(event, createError({ statusCode: 400, message: 'password is required' }));
} }
const isMatch = await bcrypt.compare(password, settings.password.hash); const isMatch = await bcrypt.compare(password, settings.password.hash);
if (!isMatch) { if (!isMatch) {
console.log("Invalid credentials! password"); Logger.error("Invalid credentials! password");
return sendError(event, createError({ statusCode: 400, message: 'Invalid credentials!' })); return sendError(event, createError({ statusCode: 400, message: 'Invalid credentials!' }));
} }

View file

@ -2,12 +2,13 @@ import { defineNitroPlugin } from "#imports";
import { reactive } from "vue"; import { reactive } from "vue";
import * as crypto from 'crypto'; import * as crypto from 'crypto';
import {jwt_globals} from "~/core/globals"; import {jwt_globals} from "~/core/globals";
import Logger from "~/core/logger";
export default defineNitroPlugin((nitroApp) => { export default defineNitroPlugin((nitroApp) => {
console.log("Running init..."); Logger.info("Running init...");
console.log("Generating jwt secret...") Logger.info("Generating jwt secret...")
jwt_globals.secret = crypto.randomBytes(32).toString('base64'); jwt_globals.secret = crypto.randomBytes(32).toString('base64');
console.log("secret: " + jwt_globals.secret) Logger.success("secret: " + jwt_globals.secret)
}); });