chore: Adds backend interface.

This commit is contained in:
greysoh 2024-04-22 20:36:11 -04:00
parent 6cb426a2fc
commit 0e004b1f9f
No known key found for this signature in database
GPG key ID: FE0F173B8FC01571
8 changed files with 41 additions and 12 deletions

21
src/backendimpl/base.ts Normal file
View file

@ -0,0 +1,21 @@
export type ParameterReturnedValue = {
success: boolean,
message?: string
}
export interface BackendInterface {
new(): {
addConnection(sourceIP: string, sourcePort: number, destPort: number, protocol: "tcp" | "udp"): void;
removeConnection(sourceIP: string, sourcePort: number, destPort: number, protocol: "tcp" | "udp"): void;
getAllConnections(): {
sourceIP: string,
sourcePort: number,
destPort: number,
protocol: "tcp" | "udp"
}[];
},
checkParametersConnection(sourceIP: string, sourcePort: number, destPort: number, protocol: "tcp" | "udp"): ParameterReturnedValue;
checkParametersBackendInstance(data: string): ParameterReturnedValue;
}

View file

@ -4,6 +4,7 @@ import { PrismaClient } from '@prisma/client';
import Fastify from "fastify"; import Fastify from "fastify";
import { ServerOptions, SessionToken } from "./libs/types.js"; import { ServerOptions, SessionToken } from "./libs/types.js";
import type { BackendInterface } from "./backendimpl/base.js";
import { route as getPermissions } from "./routes/getPermissions.js"; import { route as getPermissions } from "./routes/getPermissions.js";
@ -39,6 +40,7 @@ const serverOptions: ServerOptions = {
}; };
const sessionTokens: Record<number, SessionToken[]> = {}; const sessionTokens: Record<number, SessionToken[]> = {};
const backends: Record<number, BackendInterface> = {};
const fastify = Fastify({ const fastify = Fastify({
logger: true logger: true
@ -46,13 +48,13 @@ const fastify = Fastify({
getPermissions(fastify, prisma, sessionTokens, serverOptions); getPermissions(fastify, prisma, sessionTokens, serverOptions);
backendCreate(fastify, prisma, sessionTokens, serverOptions); backendCreate(fastify, prisma, sessionTokens, serverOptions, backends);
backendRemove(fastify, prisma, sessionTokens, serverOptions); backendRemove(fastify, prisma, sessionTokens, serverOptions, backends);
backendLookup(fastify, prisma, sessionTokens, serverOptions); backendLookup(fastify, prisma, sessionTokens, serverOptions, backends);
forwardCreate(fastify, prisma, sessionTokens, serverOptions); forwardCreate(fastify, prisma, sessionTokens, serverOptions, backends);
forwardRemove(fastify, prisma, sessionTokens, serverOptions); forwardRemove(fastify, prisma, sessionTokens, serverOptions, backends);
forwardLookup(fastify, prisma, sessionTokens, serverOptions); forwardLookup(fastify, prisma, sessionTokens, serverOptions, backends);
userCreate(fastify, prisma, sessionTokens, serverOptions); userCreate(fastify, prisma, sessionTokens, serverOptions);
userRemove(fastify, prisma, sessionTokens, serverOptions); userRemove(fastify, prisma, sessionTokens, serverOptions);

View file

@ -1,10 +1,11 @@
import type { PrismaClient } from "@prisma/client"; import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify"; import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js"; import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) { export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,10 +1,11 @@
import type { PrismaClient } from "@prisma/client"; import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify"; import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js"; import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) { export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,10 +1,11 @@
import type { PrismaClient } from "@prisma/client"; import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify"; import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js"; import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) { export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,10 +1,11 @@
import type { PrismaClient } from "@prisma/client"; import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify"; import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js"; import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) { export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,10 +1,11 @@
import type { PrismaClient } from "@prisma/client"; import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify"; import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js"; import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) { export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, _backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };

View file

@ -1,10 +1,11 @@
import type { PrismaClient } from "@prisma/client"; import type { PrismaClient } from "@prisma/client";
import type { FastifyInstance } from "fastify"; import type { FastifyInstance } from "fastify";
import type { BackendInterface } from "../../backendimpl/base.js";
import { ServerOptions, SessionToken } from "../../libs/types.js"; import { ServerOptions, SessionToken } from "../../libs/types.js";
import { hasPermissionByToken } from "../../libs/permissions.js"; import { hasPermissionByToken } from "../../libs/permissions.js";
export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, options: ServerOptions) { export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record<number, SessionToken[]>, _options: ServerOptions, backends: Record<number, BackendInterface>) {
function hasPermission(token: string, permissionList: string[]): Promise<boolean> { function hasPermission(token: string, permissionList: string[]): Promise<boolean> {
return hasPermissionByToken(permissionList, token, tokens, prisma); return hasPermissionByToken(permissionList, token, tokens, prisma);
}; };