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 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);
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue