added some logging
This commit is contained in:
parent
4a78b289e9
commit
286685d157
6 changed files with 46 additions and 14 deletions
31
core/logger.ts
Normal file
31
core/logger.ts
Normal 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;
|
|
@ -1,11 +1,12 @@
|
|||
import { defineEventHandler, getCookie, createError } from 'h3';
|
||||
import jwt from 'jsonwebtoken';
|
||||
import {jwt_globals} from "~/core/globals";
|
||||
import Logger from "~/core/logger";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const token = getCookie(event, 'token');
|
||||
console.log("Checking token " + token);
|
||||
Logger.info("Checking token " + token);
|
||||
if (!token) {
|
||||
throw createError({ statusCode: 401, statusMessage: 'Unauthorized' });
|
||||
}
|
||||
|
@ -19,7 +20,7 @@ export default defineEventHandler(async (event) => {
|
|||
if (!decoded?.userId) {
|
||||
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 };
|
||||
} catch (error: any) {
|
||||
return createError({
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { exec } from 'child_process';
|
||||
import Logger from "~/core/logger";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const body = await readBody(event);
|
||||
|
@ -12,13 +13,14 @@ export default defineEventHandler(async (event) => {
|
|||
|
||||
await new Promise((resolve, reject) => {
|
||||
exec(command, (error, stdout, stderr) => {
|
||||
if (error || stderr) {
|
||||
reject(`Error: ${stderr || error?.message}`);
|
||||
if (error || stderr) {;
|
||||
Logger.error(`Error: ${stderr || error?.message}`);
|
||||
reject(`Error: ${stderr || error?.message}`)
|
||||
}
|
||||
resolve(stdout);
|
||||
});
|
||||
});
|
||||
|
||||
Logger.info(action + ": " + vm.name);
|
||||
return { status: 'success', message: `VM ${action} successful`, vm };
|
||||
} catch (error) {
|
||||
return { status: 'error', message: `Failed to ${action} VM`, error: error };
|
||||
|
|
|
@ -4,8 +4,6 @@ import {VM} from "~/types/VM";
|
|||
import {settings} from "~/panel.config";
|
||||
|
||||
export default defineEventHandler(() => {
|
||||
|
||||
|
||||
let vmNames = ["Gameserver", "Ubuntu_VM1"]
|
||||
const virtualMachines: VM[] = [];
|
||||
settings.qemu_vms.forEach(vm => {
|
||||
|
|
|
@ -3,21 +3,20 @@ import { sendError, createError } from 'h3';
|
|||
import jwt from 'jsonwebtoken';
|
||||
import {settings} from "~/panel.config";
|
||||
import {jwt_globals} from "~/core/globals";
|
||||
import Logger from "~/core/logger";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const { password } = await readBody(event);
|
||||
|
||||
if (!password) {
|
||||
console.log("password is required");
|
||||
Logger.error("password is required");
|
||||
return sendError(event, createError({ statusCode: 400, message: 'password is required' }));
|
||||
}
|
||||
|
||||
|
||||
|
||||
const isMatch = await bcrypt.compare(password, settings.password.hash);
|
||||
if (!isMatch) {
|
||||
console.log("Invalid credentials! password");
|
||||
Logger.error("Invalid credentials! password");
|
||||
return sendError(event, createError({ statusCode: 400, message: 'Invalid credentials!' }));
|
||||
}
|
||||
|
||||
|
|
|
@ -2,12 +2,13 @@ import { defineNitroPlugin } from "#imports";
|
|||
import { reactive } from "vue";
|
||||
import * as crypto from 'crypto';
|
||||
import {jwt_globals} from "~/core/globals";
|
||||
import Logger from "~/core/logger";
|
||||
|
||||
export default defineNitroPlugin((nitroApp) => {
|
||||
console.log("Running init...");
|
||||
console.log("Generating jwt secret...")
|
||||
Logger.info("Running init...");
|
||||
Logger.info("Generating jwt secret...")
|
||||
jwt_globals.secret = crypto.randomBytes(32).toString('base64');
|
||||
console.log("secret: " + jwt_globals.secret)
|
||||
Logger.success("secret: " + jwt_globals.secret)
|
||||
});
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue