chore: Adds backend interface.
This commit is contained in:
parent
6cb426a2fc
commit
0e004b1f9f
8 changed files with 41 additions and 12 deletions
21
src/backendimpl/base.ts
Normal file
21
src/backendimpl/base.ts
Normal 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;
|
||||
}
|
14
src/index.ts
14
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<number, SessionToken[]> = {};
|
||||
const backends: Record<number, BackendInterface> = {};
|
||||
|
||||
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);
|
||||
|
|
|
@ -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<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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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<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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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<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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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<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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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<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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
|
@ -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<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> {
|
||||
return hasPermissionByToken(permissionList, token, tokens, prisma);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue