diff --git a/sentryx/servers.json b/sentryx/servers.json new file mode 100644 index 0000000..71e3681 --- /dev/null +++ b/sentryx/servers.json @@ -0,0 +1,6 @@ +[ + { + "name": "Main Server", + "ip": "10.7.1.2" + } +] diff --git a/sentryx/users.json b/sentryx/users.json new file mode 100644 index 0000000..fe7614b --- /dev/null +++ b/sentryx/users.json @@ -0,0 +1,6 @@ +{ + "admin": { + "username": "admin", + "password": "admin" + } +} diff --git a/src/app/api/auth/route.ts b/src/app/api/auth/route.ts index 51add5a..9c320ab 100644 --- a/src/app/api/auth/route.ts +++ b/src/app/api/auth/route.ts @@ -1,6 +1,10 @@ import axios, { HttpStatusCode } from "axios"; import { NextResponse } from "next/server"; -import { findKey, sessions, users } from "../data"; +import Data, { findKey, sessions } from "../data"; + +const users = new Data<{ + [key: string]: { username: string; password: string }; +}>("sentryx/users.json"); export async function POST(request: Request) { const body = await request.json(); @@ -12,7 +16,7 @@ export async function POST(request: Request) { ); const uuid = findKey( - users, + users.data, (u) => u.username == body.username && u.password == body.password ); @@ -25,7 +29,7 @@ export async function POST(request: Request) { const sessionId = "SESH-" + crypto.randomUUID(); - sessions[sessionId] = uuid; + sessions[sessionId] = String(uuid); return NextResponse.json({ message: "ok", sessionId }); } diff --git a/src/app/api/data.ts b/src/app/api/data.ts index 026c3f8..1fd59b1 100644 --- a/src/app/api/data.ts +++ b/src/app/api/data.ts @@ -1,3 +1,5 @@ +import { readFileSync } from "fs"; + export function findKey( obj: T, predicate: (value: T[keyof T], key: keyof T) => boolean @@ -7,16 +9,17 @@ export function findKey( )?.[0] as keyof T | undefined; } -export type User = { - username: string; - password: string; -}; +export default class Data { + data: T; + file_path: string; + constructor(file_path: string) { + this.file_path = file_path; + this.data = JSON.parse(readFileSync(this.file_path).toString()); + } -export const users = { - admin: { - username: "admin", - password: "admin", - }, -}; + public read() { + this.data = JSON.parse(readFileSync(this.file_path).toString()); + } +} export const sessions: { [key: string]: string } = {}; diff --git a/src/app/api/servers/route.ts b/src/app/api/servers/route.ts new file mode 100644 index 0000000..47316f1 --- /dev/null +++ b/src/app/api/servers/route.ts @@ -0,0 +1,9 @@ +import { NextResponse } from "next/server"; +import Data from "../data"; +import { ServerAPI } from "@/types/server"; + +const servers = new Data("sentryx/servers.json"); + +export async function GET(request: Request) { + return NextResponse.json({ message: "ok", servers: servers.data }); +} diff --git a/src/types/server.ts b/src/types/server.ts new file mode 100644 index 0000000..610ee62 --- /dev/null +++ b/src/types/server.ts @@ -0,0 +1,8 @@ +export interface ServerAPI { + name: string; + ip: string; +} + +export default interface Server extends ServerAPI { + status: "online" | "offline" | "warning" | "maintenance"; +}