diff --git a/server/src/api/controllers/proxyController.ts b/server/src/api/controllers/proxyController.ts index 0ca72ed95..d509a490a 100644 --- a/server/src/api/controllers/proxyController.ts +++ b/server/src/api/controllers/proxyController.ts @@ -13,6 +13,7 @@ import { export interface IProxiesController { createProxy: RequestHandler; getProxyById: RequestHandler; + getAllProxies: RequestHandler; getProxiesByTeamId: RequestHandler; editProxy: RequestHandler; deleteProxy: RequestHandler; @@ -43,6 +44,15 @@ class ProxyController implements IProxiesController { }); }); + getAllProxies = catchAsync(async (req: Request, res: Response) => { + const proxies = await this.proxiesService.getProxies(); + return res.status(200).json({ + success: true, + msg: "Proxies retrieved successfully", + data: proxies, + }); + }); + getProxiesByTeamId = catchAsync(async (req: Request, res: Response) => { const teamId = requireTeamId(req.user?.teamId); const proxies = await this.proxiesService.getProxiesByTeamId(teamId); diff --git a/server/src/api/routes/proxyRoutes.ts b/server/src/api/routes/proxyRoutes.ts index 83bf6a318..fca695099 100644 --- a/server/src/api/routes/proxyRoutes.ts +++ b/server/src/api/routes/proxyRoutes.ts @@ -1,9 +1,11 @@ import { IProxiesController } from "@/api/controllers/proxyController.js"; +import { isAllowed } from "@/api/middleware/isAllowed.js"; import { Router } from "express"; export const createProxyRoutes = (proxyController: IProxiesController): Router => { const router = Router(); router.post("/", proxyController.createProxy); + router.get("/", isAllowed(["admin", "superadmin"]), proxyController.getAllProxies); router.get("/team", proxyController.getProxiesByTeamId); router.get("/:id", proxyController.getProxyById); router.delete("/:id", proxyController.deleteProxy); diff --git a/server/src/domain/checks/check.repository.mongo.ts b/server/src/domain/checks/check.repository.mongo.ts index de144ea80..93ba2c42b 100644 --- a/server/src/domain/checks/check.repository.mongo.ts +++ b/server/src/domain/checks/check.repository.mongo.ts @@ -25,7 +25,7 @@ import { CheckFilter, DateRange } from "@/types/query.js"; import { AppError } from "@/utils/AppError.js"; import { NETWORK_ERROR } from "@/types/network.js"; -const SERVICE_NAME = "StatusService"; +const SERVICE_NAME = "ChecksRepository"; class MongoChecksRepository implements IChecksRepository { static SERVICE_NAME = SERVICE_NAME; @@ -213,6 +213,9 @@ class MongoChecksRepository implements IChecksRepository { }; private filterToMatch = (filter: CheckFilter | undefined): Record => { + if (filter === undefined) { + return {}; + } switch (filter) { case "up": return { status: true }; diff --git a/server/src/domain/proxies/proxy.repository.interface.ts b/server/src/domain/proxies/proxy.repository.interface.ts index 5d39ddb80..12d145ef3 100644 --- a/server/src/domain/proxies/proxy.repository.interface.ts +++ b/server/src/domain/proxies/proxy.repository.interface.ts @@ -4,6 +4,7 @@ export interface IProxiesRepository { // create create(proxyData: Partial): Promise; // read + findAll(): Promise; findById(proxyId: string, teamId: string): Promise; findByIdOrNull(proxyId: string, teamId?: string): Promise; findByTeamId(teamId: string): Promise; diff --git a/server/src/domain/proxies/proxy.repository.mongo.ts b/server/src/domain/proxies/proxy.repository.mongo.ts index 454ef68ab..cf11fd458 100644 --- a/server/src/domain/proxies/proxy.repository.mongo.ts +++ b/server/src/domain/proxies/proxy.repository.mongo.ts @@ -37,6 +37,11 @@ class MongoProxiesRepository implements IProxiesRepository { } } + async findAll(): Promise { + const proxies = await ProxyModel.find(); + return proxies.map(this.toEntity); + } + async findById(proxyId: string, teamId: string): Promise { const proxy = await ProxyModel.findOne({ _id: proxyId, teamId }); if (!proxy) { diff --git a/server/src/domain/proxies/proxy.service.ts b/server/src/domain/proxies/proxy.service.ts index 265544d8c..a1c726f1e 100644 --- a/server/src/domain/proxies/proxy.service.ts +++ b/server/src/domain/proxies/proxy.service.ts @@ -7,6 +7,7 @@ import { ISettingsService } from "@/domain/app-settings/app-settings.service.js" export interface IProxiesService { createProxy(proxy: Partial, teamId: string): Promise; getProxy(proxyId: string, teamId: string): Promise; + getProxies(): Promise; getProxiesByTeamId(teamId: string): Promise; updateProxy(proxyId: string, teamId: string, patch: Partial & { clearPassword?: boolean; clearUsername?: boolean }): Promise; deleteProxy(proxyId: string, teamId: string): Promise; @@ -39,6 +40,13 @@ export class ProxiesService implements IProxiesService { return this.toResponse(raw); }; + getProxies = async (): Promise => { + const raw = await this.proxiesRepository.findAll(); + const clean = raw.map((r) => { + return this.toResponse(r); + }); + return clean; + }; getProxiesByTeamId = async (teamId: string): Promise => { const raw = await this.proxiesRepository.findByTeamId(teamId); const clean = raw.map((r) => {