chore: Adds formatting.
Co-authored-by: dess <devessa@users.noreply.github.com>
This commit is contained in:
parent
6cf26da4df
commit
42a6d2ea02
33 changed files with 1235 additions and 1032 deletions
|
@ -5,15 +5,19 @@ import { backendProviders } from "../backendimpl/index.js";
|
|||
|
||||
type Backend = {
|
||||
id: number;
|
||||
name: string;
|
||||
description: string | null;
|
||||
backend: string;
|
||||
name: string;
|
||||
description: string | null;
|
||||
backend: string;
|
||||
connectionDetails: string;
|
||||
};
|
||||
|
||||
export async function backendInit(backend: Backend, backends: Record<number, BackendBaseClass>, prisma: PrismaClient): Promise<boolean> {
|
||||
export async function backendInit(
|
||||
backend: Backend,
|
||||
backends: Record<number, BackendBaseClass>,
|
||||
prisma: PrismaClient,
|
||||
): Promise<boolean> {
|
||||
const ourProvider = backendProviders[backend.backend];
|
||||
|
||||
|
||||
if (!ourProvider) {
|
||||
console.log(" - Error: Invalid backend recieved!");
|
||||
return false;
|
||||
|
@ -24,7 +28,7 @@ export async function backendInit(backend: Backend, backends: Record<number, Bac
|
|||
backends[backend.id] = new ourProvider(backend.connectionDetails);
|
||||
const ourBackend = backends[backend.id];
|
||||
|
||||
if (!await ourBackend.start()) {
|
||||
if (!(await ourBackend.start())) {
|
||||
console.log(" - Error initializing backend!");
|
||||
console.log(" - " + ourBackend.logs.join("\n - "));
|
||||
|
||||
|
@ -36,18 +40,25 @@ export async function backendInit(backend: Backend, backends: Record<number, Bac
|
|||
const clients = await prisma.forwardRule.findMany({
|
||||
where: {
|
||||
destProviderID: backend.id,
|
||||
enabled: true
|
||||
}
|
||||
enabled: true,
|
||||
},
|
||||
});
|
||||
|
||||
for (const client of clients) {
|
||||
if (client.protocol != "tcp" && client.protocol != "udp") {
|
||||
console.error(` - Error: Client with ID of '${client.id}' has an invalid protocol! (must be either TCP or UDP)`);
|
||||
console.error(
|
||||
` - Error: Client with ID of '${client.id}' has an invalid protocol! (must be either TCP or UDP)`,
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
ourBackend.addConnection(client.sourceIP, client.sourcePort, client.destPort, client.protocol);
|
||||
ourBackend.addConnection(
|
||||
client.sourceIP,
|
||||
client.sourcePort,
|
||||
client.destPort,
|
||||
client.protocol,
|
||||
);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ export function generateRandomData(length: number = 128): string {
|
|||
|
||||
for (let i = 0; i < length; i += 2) {
|
||||
const randomNumber = getRandomInt(0, 255);
|
||||
|
||||
|
||||
if (randomNumber == 0) {
|
||||
i -= 2;
|
||||
continue;
|
||||
|
@ -19,4 +19,4 @@ export function generateRandomData(length: number = 128): string {
|
|||
}
|
||||
|
||||
return newString;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,44 +2,50 @@ import type { PrismaClient } from "@prisma/client";
|
|||
import type { SessionToken } from "./types.js";
|
||||
|
||||
export const permissionListDisabled: Record<string, boolean> = {
|
||||
"routes.add": false,
|
||||
"routes.remove": false,
|
||||
"routes.start": false,
|
||||
"routes.stop": false,
|
||||
"routes.edit": false,
|
||||
"routes.visible": false,
|
||||
"routes.add": false,
|
||||
"routes.remove": false,
|
||||
"routes.start": false,
|
||||
"routes.stop": false,
|
||||
"routes.edit": false,
|
||||
"routes.visible": false,
|
||||
"routes.visibleConn": false,
|
||||
|
||||
"backends.add": false,
|
||||
"backends.remove": false,
|
||||
"backends.start": false,
|
||||
"backends.stop": false,
|
||||
"backends.edit": false,
|
||||
"backends.visible": false,
|
||||
"backends.add": false,
|
||||
"backends.remove": false,
|
||||
"backends.start": false,
|
||||
"backends.stop": false,
|
||||
"backends.edit": false,
|
||||
"backends.visible": false,
|
||||
"backends.secretVis": false,
|
||||
|
||||
"permissions.see": false,
|
||||
"permissions.see": false,
|
||||
|
||||
"users.add": false,
|
||||
"users.remove": false,
|
||||
"users.lookup": false,
|
||||
"users.edit": false,
|
||||
"users.add": false,
|
||||
"users.remove": false,
|
||||
"users.lookup": false,
|
||||
"users.edit": false,
|
||||
};
|
||||
|
||||
// FIXME: This solution fucking sucks.
|
||||
export let permissionListEnabled: Record<string, boolean> = JSON.parse(JSON.stringify(permissionListDisabled));
|
||||
export let permissionListEnabled: Record<string, boolean> = JSON.parse(
|
||||
JSON.stringify(permissionListDisabled),
|
||||
);
|
||||
|
||||
for (const index of Object.keys(permissionListEnabled)) {
|
||||
permissionListEnabled[index] = true;
|
||||
}
|
||||
|
||||
export async function hasPermission(permissionList: string[], uid: number, prisma: PrismaClient): Promise<boolean> {
|
||||
export async function hasPermission(
|
||||
permissionList: string[],
|
||||
uid: number,
|
||||
prisma: PrismaClient,
|
||||
): Promise<boolean> {
|
||||
for (const permission of permissionList) {
|
||||
const permissionNode = await prisma.permission.findFirst({
|
||||
where: {
|
||||
userID: uid,
|
||||
permission
|
||||
}
|
||||
permission,
|
||||
},
|
||||
});
|
||||
|
||||
if (!permissionNode || !permissionNode.has) return false;
|
||||
|
@ -48,7 +54,11 @@ export async function hasPermission(permissionList: string[], uid: number, prism
|
|||
return true;
|
||||
}
|
||||
|
||||
export async function getUID(token: string, tokens: Record<number, SessionToken[]>, prisma: PrismaClient): Promise<number> {
|
||||
export async function getUID(
|
||||
token: string,
|
||||
tokens: Record<number, SessionToken[]>,
|
||||
prisma: PrismaClient,
|
||||
): Promise<number> {
|
||||
let userID = -1;
|
||||
|
||||
// Look up in our currently authenticated users
|
||||
|
@ -59,7 +69,10 @@ export async function getUID(token: string, tokens: Record<number, SessionToken[
|
|||
const otherToken = otherTokenList[otherTokenIndex];
|
||||
|
||||
if (otherToken.token == token) {
|
||||
if (otherToken.expiresAt < otherToken.createdAt + (otherToken.createdAt - Date.now())) {
|
||||
if (
|
||||
otherToken.expiresAt <
|
||||
otherToken.createdAt + (otherToken.createdAt - Date.now())
|
||||
) {
|
||||
otherTokenList.splice(parseInt(otherTokenIndex), 1);
|
||||
continue;
|
||||
} else {
|
||||
|
@ -74,19 +87,24 @@ export async function getUID(token: string, tokens: Record<number, SessionToken[
|
|||
if (userID == -1) {
|
||||
const allUsers = await prisma.user.findMany({
|
||||
where: {
|
||||
isRootServiceAccount: true
|
||||
}
|
||||
isRootServiceAccount: true,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
for (const user of allUsers) {
|
||||
if (user.rootToken == token) userID = user.id;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return userID;
|
||||
}
|
||||
|
||||
export async function hasPermissionByToken(permissionList: string[], token: string, tokens: Record<number, SessionToken[]>, prisma: PrismaClient): Promise<boolean> {
|
||||
export async function hasPermissionByToken(
|
||||
permissionList: string[],
|
||||
token: string,
|
||||
tokens: Record<number, SessionToken[]>,
|
||||
prisma: PrismaClient,
|
||||
): Promise<boolean> {
|
||||
const userID = await getUID(token, tokens, prisma);
|
||||
return await hasPermission(permissionList, userID, prisma);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,21 +8,21 @@ export type ServerOptions = {
|
|||
isSignupAsAdminEnabled: boolean;
|
||||
|
||||
allowUnsafeGlobalTokens: boolean;
|
||||
}
|
||||
};
|
||||
|
||||
// NOTE: Someone should probably use Redis for this, but this is fine...
|
||||
export type SessionToken = {
|
||||
createdAt: number,
|
||||
expiresAt: number, // Should be (createdAt + (30 minutes))
|
||||
|
||||
token: string
|
||||
createdAt: number;
|
||||
expiresAt: number; // Should be (createdAt + (30 minutes))
|
||||
|
||||
token: string;
|
||||
};
|
||||
|
||||
export type RouteOptions = {
|
||||
fastify: FastifyInstance,
|
||||
prisma: PrismaClient,
|
||||
tokens: Record<number, SessionToken[]>,
|
||||
|
||||
options: ServerOptions,
|
||||
backends: Record<number, BackendBaseClass>
|
||||
};
|
||||
fastify: FastifyInstance;
|
||||
prisma: PrismaClient;
|
||||
tokens: Record<number, SessionToken[]>;
|
||||
|
||||
options: ServerOptions;
|
||||
backends: Record<number, BackendBaseClass>;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue