mirror of
https://github.com/fosrl/pangolin.git
synced 2026-09-20 01:29:47 +02:00
♻️ refactor
This commit is contained in:
@@ -1,56 +1,54 @@
|
|||||||
import {
|
import {
|
||||||
db,
|
db,
|
||||||
targetHealthCheck,
|
|
||||||
domains,
|
domains,
|
||||||
aiProviders,
|
|
||||||
resourceAiProviders,
|
|
||||||
siteResources,
|
|
||||||
siteNetworks,
|
|
||||||
exitNodes,
|
exitNodes,
|
||||||
redirects
|
resources,
|
||||||
|
siteNetworks,
|
||||||
|
siteResources,
|
||||||
|
sites,
|
||||||
|
targetHealthCheck,
|
||||||
|
targets
|
||||||
} from "@server/db";
|
} from "@server/db";
|
||||||
|
import regionalCache from "@server/lib/cache";
|
||||||
|
import config from "@server/lib/config";
|
||||||
|
import logger from "@server/logger";
|
||||||
import {
|
import {
|
||||||
and,
|
and,
|
||||||
|
desc,
|
||||||
eq,
|
eq,
|
||||||
inArray,
|
inArray,
|
||||||
or,
|
|
||||||
isNull,
|
|
||||||
ne,
|
|
||||||
isNotNull,
|
isNotNull,
|
||||||
desc,
|
isNull,
|
||||||
|
or,
|
||||||
sql
|
sql
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import logger from "@server/logger";
|
import {
|
||||||
import config from "@server/lib/config";
|
AI_GATEWAY_CLIENT_IP_MIDDLEWARE_NAME,
|
||||||
import { resources, sites, targets } from "@server/db";
|
AI_GATEWAY_TRUST_MIDDLEWARE_RESOURCE,
|
||||||
import { applyPathRewriteMiddleware } from "./middleware";
|
AI_GATEWAY_TRUST_MIDDLEWARE_SITE_RESOURCE,
|
||||||
import { sanitize, encodePath, validatePathRewriteConfig } from "./utils";
|
buildAiGatewayClientIpMiddleware,
|
||||||
import regionalCache from "@server/lib/cache";
|
buildAiGatewayHostHeaderMiddleware,
|
||||||
import { TargetWithSite } from "./types";
|
buildAiGatewayRouterAndService,
|
||||||
|
buildAiGatewayTrustMiddlewares,
|
||||||
|
getAiGatewayHost
|
||||||
|
} from "./aiGatewayMiddlewares";
|
||||||
|
import {
|
||||||
|
buildBrowserGatewayConfig,
|
||||||
|
buildBrowserGatewayResourcesMap
|
||||||
|
} from "./browserGateway";
|
||||||
import { buildWildcardTls } from "./certResolver";
|
import { buildWildcardTls } from "./certResolver";
|
||||||
import { buildHostRule, appendPathMatch, computeRoutePriority } from "./rule";
|
import { buildCustomHeadersMiddleware } from "./headersMiddleware";
|
||||||
import {
|
import {
|
||||||
buildHttpLoadBalancerServers,
|
buildHttpLoadBalancerServers,
|
||||||
buildStickySessionCookie,
|
buildStickySessionCookie,
|
||||||
buildTcpUdpLoadBalancerServers,
|
buildStickySessionIp,
|
||||||
buildStickySessionIp
|
buildTcpUdpLoadBalancerServers
|
||||||
} from "./loadBalancer";
|
} from "./loadBalancer";
|
||||||
import { buildCustomHeadersMiddleware } from "./headersMiddleware";
|
import { applyPathRewriteMiddleware } from "./middleware";
|
||||||
import {
|
import { appendPathMatch, buildHostRule, computeRoutePriority } from "./rule";
|
||||||
AI_GATEWAY_TRUST_MIDDLEWARE_RESOURCE,
|
|
||||||
AI_GATEWAY_TRUST_MIDDLEWARE_SITE_RESOURCE,
|
|
||||||
AI_GATEWAY_CLIENT_IP_MIDDLEWARE_NAME,
|
|
||||||
getAiGatewayHost,
|
|
||||||
buildAiGatewayTrustMiddlewares,
|
|
||||||
buildAiGatewayClientIpMiddleware,
|
|
||||||
buildAiGatewayHostHeaderMiddleware,
|
|
||||||
buildAiGatewayRouterAndService
|
|
||||||
} from "./aiGatewayMiddlewares";
|
|
||||||
import {
|
|
||||||
buildBrowserGatewayResourcesMap,
|
|
||||||
buildBrowserGatewayConfig
|
|
||||||
} from "./browserGateway";
|
|
||||||
import { buildSiteResourceAliasCertPlaceholders } from "./siteResourceAlias";
|
import { buildSiteResourceAliasCertPlaceholders } from "./siteResourceAlias";
|
||||||
|
import { TargetWithSite } from "./types";
|
||||||
|
import { encodePath, sanitize, validatePathRewriteConfig } from "./utils";
|
||||||
|
|
||||||
const redirectHttpsMiddlewareName = "redirect-to-https";
|
const redirectHttpsMiddlewareName = "redirect-to-https";
|
||||||
const badgerMiddlewareName = "badger";
|
const badgerMiddlewareName = "badger";
|
||||||
@@ -132,18 +130,12 @@ export async function getTraefikConfig(
|
|||||||
|
|
||||||
// Domain cert resolver fields
|
// Domain cert resolver fields
|
||||||
domainCertResolver: domains.certResolver,
|
domainCertResolver: domains.certResolver,
|
||||||
preferWildcardCert: domains.preferWildcardCert,
|
preferWildcardCert: domains.preferWildcardCert
|
||||||
|
|
||||||
// redirects
|
|
||||||
redirectMatchPath: redirects.matchPath,
|
|
||||||
redirectPathMatchType: redirects.pathMatchType,
|
|
||||||
redirectPriority: redirects.priority
|
|
||||||
})
|
})
|
||||||
.from(sites)
|
.from(sites)
|
||||||
.innerJoin(targets, eq(targets.siteId, sites.siteId))
|
.innerJoin(targets, eq(targets.siteId, sites.siteId))
|
||||||
.innerJoin(resources, eq(resources.resourceId, targets.resourceId))
|
.innerJoin(resources, eq(resources.resourceId, targets.resourceId))
|
||||||
.leftJoin(domains, eq(domains.domainId, resources.domainId))
|
.leftJoin(domains, eq(domains.domainId, resources.domainId))
|
||||||
.leftJoin(redirects, eq(resources.resourceId, redirects.resourceId))
|
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
targetHealthCheck,
|
targetHealthCheck,
|
||||||
eq(targetHealthCheck.targetId, targets.targetId)
|
eq(targetHealthCheck.targetId, targets.targetId)
|
||||||
@@ -175,13 +167,6 @@ export async function getTraefikConfig(
|
|||||||
)
|
)
|
||||||
.orderBy(desc(targets.priority), targets.targetId); // stable ordering
|
.orderBy(desc(targets.priority), targets.targetId); // stable ordering
|
||||||
|
|
||||||
console.dir(
|
|
||||||
{
|
|
||||||
resourcesWithTargetsAndSites
|
|
||||||
},
|
|
||||||
{ depth: null }
|
|
||||||
);
|
|
||||||
|
|
||||||
// Group by resource and include targets with their unique site data
|
// Group by resource and include targets with their unique site data
|
||||||
const resourcesMap = new Map();
|
const resourcesMap = new Map();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user