From 0e004b1f9fd0803526c5e7271d3d834a66de8178 Mon Sep 17 00:00:00 2001 From: greysoh Date: Mon, 22 Apr 2024 20:36:11 -0400 Subject: [PATCH] chore: Adds backend interface. --- src/backendimpl/base.ts | 21 +++++++++++++++++++++ src/index.ts | 14 ++++++++------ src/routes/backends/create.ts | 3 ++- src/routes/backends/lookup.ts | 3 ++- src/routes/backends/remove.ts | 3 ++- src/routes/forward/create.ts | 3 ++- src/routes/forward/lookup.ts | 3 ++- src/routes/forward/remove.ts | 3 ++- 8 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 src/backendimpl/base.ts diff --git a/src/backendimpl/base.ts b/src/backendimpl/base.ts new file mode 100644 index 0000000..5ea7bce --- /dev/null +++ b/src/backendimpl/base.ts @@ -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; +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 67d1d98..fdcbffa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,7 @@ import { PrismaClient } from '@prisma/client'; import Fastify from "fastify"; import { ServerOptions, SessionToken } from "./libs/types.js"; +import type { BackendInterface } from "./backendimpl/base.js"; import { route as getPermissions } from "./routes/getPermissions.js"; @@ -39,6 +40,7 @@ const serverOptions: ServerOptions = { }; const sessionTokens: Record = {}; +const backends: Record = {}; const fastify = Fastify({ logger: true @@ -46,13 +48,13 @@ const fastify = Fastify({ getPermissions(fastify, prisma, sessionTokens, serverOptions); -backendCreate(fastify, prisma, sessionTokens, serverOptions); -backendRemove(fastify, prisma, sessionTokens, serverOptions); -backendLookup(fastify, prisma, sessionTokens, serverOptions); +backendCreate(fastify, prisma, sessionTokens, serverOptions, backends); +backendRemove(fastify, prisma, sessionTokens, serverOptions, backends); +backendLookup(fastify, prisma, sessionTokens, serverOptions, backends); -forwardCreate(fastify, prisma, sessionTokens, serverOptions); -forwardRemove(fastify, prisma, sessionTokens, serverOptions); -forwardLookup(fastify, prisma, sessionTokens, serverOptions); +forwardCreate(fastify, prisma, sessionTokens, serverOptions, backends); +forwardRemove(fastify, prisma, sessionTokens, serverOptions, backends); +forwardLookup(fastify, prisma, sessionTokens, serverOptions, backends); userCreate(fastify, prisma, sessionTokens, serverOptions); userRemove(fastify, prisma, sessionTokens, serverOptions); diff --git a/src/routes/backends/create.ts b/src/routes/backends/create.ts index f72baf9..da35b82 100644 --- a/src/routes/backends/create.ts +++ b/src/routes/backends/create.ts @@ -1,10 +1,11 @@ import type { PrismaClient } from "@prisma/client"; import type { FastifyInstance } from "fastify"; +import type { BackendInterface } from "../../backendimpl/base.js"; import { ServerOptions, SessionToken } from "../../libs/types.js"; import { hasPermissionByToken } from "../../libs/permissions.js"; -export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, options: ServerOptions) { +export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, _options: ServerOptions, backends: Record) { function hasPermission(token: string, permissionList: string[]): Promise { return hasPermissionByToken(permissionList, token, tokens, prisma); }; diff --git a/src/routes/backends/lookup.ts b/src/routes/backends/lookup.ts index 721791a..e9b2fbc 100644 --- a/src/routes/backends/lookup.ts +++ b/src/routes/backends/lookup.ts @@ -1,10 +1,11 @@ import type { PrismaClient } from "@prisma/client"; import type { FastifyInstance } from "fastify"; +import type { BackendInterface } from "../../backendimpl/base.js"; import { ServerOptions, SessionToken } from "../../libs/types.js"; import { hasPermissionByToken } from "../../libs/permissions.js"; -export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, options: ServerOptions) { +export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, _options: ServerOptions, backends: Record) { function hasPermission(token: string, permissionList: string[]): Promise { return hasPermissionByToken(permissionList, token, tokens, prisma); }; diff --git a/src/routes/backends/remove.ts b/src/routes/backends/remove.ts index ef49e5e..d54dbb5 100644 --- a/src/routes/backends/remove.ts +++ b/src/routes/backends/remove.ts @@ -1,10 +1,11 @@ import type { PrismaClient } from "@prisma/client"; import type { FastifyInstance } from "fastify"; +import type { BackendInterface } from "../../backendimpl/base.js"; import { ServerOptions, SessionToken } from "../../libs/types.js"; import { hasPermissionByToken } from "../../libs/permissions.js"; -export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, options: ServerOptions) { +export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, _options: ServerOptions, backends: Record) { function hasPermission(token: string, permissionList: string[]): Promise { return hasPermissionByToken(permissionList, token, tokens, prisma); }; diff --git a/src/routes/forward/create.ts b/src/routes/forward/create.ts index edd036f..df02642 100644 --- a/src/routes/forward/create.ts +++ b/src/routes/forward/create.ts @@ -1,10 +1,11 @@ import type { PrismaClient } from "@prisma/client"; import type { FastifyInstance } from "fastify"; +import type { BackendInterface } from "../../backendimpl/base.js"; import { ServerOptions, SessionToken } from "../../libs/types.js"; import { hasPermissionByToken } from "../../libs/permissions.js"; -export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, options: ServerOptions) { +export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, _options: ServerOptions, backends: Record) { function hasPermission(token: string, permissionList: string[]): Promise { return hasPermissionByToken(permissionList, token, tokens, prisma); }; diff --git a/src/routes/forward/lookup.ts b/src/routes/forward/lookup.ts index daddf12..0e095f4 100644 --- a/src/routes/forward/lookup.ts +++ b/src/routes/forward/lookup.ts @@ -1,10 +1,11 @@ import type { PrismaClient } from "@prisma/client"; import type { FastifyInstance } from "fastify"; +import type { BackendInterface } from "../../backendimpl/base.js"; import { ServerOptions, SessionToken } from "../../libs/types.js"; import { hasPermissionByToken } from "../../libs/permissions.js"; -export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, options: ServerOptions) { +export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, _options: ServerOptions, _backends: Record) { function hasPermission(token: string, permissionList: string[]): Promise { return hasPermissionByToken(permissionList, token, tokens, prisma); }; diff --git a/src/routes/forward/remove.ts b/src/routes/forward/remove.ts index 706282e..7a00310 100644 --- a/src/routes/forward/remove.ts +++ b/src/routes/forward/remove.ts @@ -1,10 +1,11 @@ import type { PrismaClient } from "@prisma/client"; import type { FastifyInstance } from "fastify"; +import type { BackendInterface } from "../../backendimpl/base.js"; import { ServerOptions, SessionToken } from "../../libs/types.js"; import { hasPermissionByToken } from "../../libs/permissions.js"; -export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, options: ServerOptions) { +export function route(fastify: FastifyInstance, prisma: PrismaClient, tokens: Record, _options: ServerOptions, backends: Record) { function hasPermission(token: string, permissionList: string[]): Promise { return hasPermissionByToken(permissionList, token, tokens, prisma); };