From 60d883139900c4176a38d3cdfbb8ac5ea72cda77 Mon Sep 17 00:00:00 2001 From: Owen Date: Thu, 21 Aug 2025 14:17:38 -0700 Subject: [PATCH] Rename hybrid to managed --- install/config/config.yml | 2 +- install/main.go | 2 +- server/auth/sessions/resource.ts | 4 ++-- server/db/queries/verifySessionQueries.ts | 24 +++++++++---------- server/emails/index.ts | 2 +- server/hybridServer.ts | 2 +- server/index.ts | 2 +- server/lib/config.ts | 8 +++---- server/lib/readConfigFile.ts | 8 +++---- server/lib/remoteCertificates/certificates.ts | 2 +- server/lib/remoteProxy.ts | 2 +- server/lib/tokenManager.ts | 2 +- server/lib/traefikConfig.ts | 6 ++--- server/routers/badger/verifySession.ts | 4 ++-- server/routers/gerbil/getConfig.ts | 2 +- server/routers/internal.ts | 4 ++-- server/setup/ensureSetupToken.ts | 2 +- 17 files changed, 39 insertions(+), 39 deletions(-) diff --git a/install/config/config.yml b/install/config/config.yml index 0dde388a..5a86a930 100644 --- a/install/config/config.yml +++ b/install/config/config.yml @@ -5,7 +5,7 @@ gerbil: start_port: 51820 base_endpoint: "{{.DashboardDomain}}" {{if .HybridMode}} -hybrid: +managed: id: "{{.HybridId}}" secret: "{{.HybridSecret}}" diff --git a/install/main.go b/install/main.go index 458edc2c..1d684b51 100644 --- a/install/main.go +++ b/install/main.go @@ -623,5 +623,5 @@ func checkIsPangolinInstalledWithHybrid() bool { } // Check for hybrid section - return bytes.Contains(content, []byte("hybrid:")) + return bytes.Contains(content, []byte("managed:")) } diff --git a/server/auth/sessions/resource.ts b/server/auth/sessions/resource.ts index 8d676bec..511dadda 100644 --- a/server/auth/sessions/resource.ts +++ b/server/auth/sessions/resource.ts @@ -65,9 +65,9 @@ export async function validateResourceSessionToken( token: string, resourceId: number ): Promise { - if (config.isHybridMode()) { + if (config.isManagedMode()) { try { - const response = await axios.post(`${config.getRawConfig().hybrid?.endpoint}/api/v1/hybrid/resource/${resourceId}/session/validate`, { + const response = await axios.post(`${config.getRawConfig().managed?.endpoint}/api/v1/hybrid/resource/${resourceId}/session/validate`, { token: token }, await tokenManager.getAuthHeader()); return response.data.data; diff --git a/server/db/queries/verifySessionQueries.ts b/server/db/queries/verifySessionQueries.ts index 4c800125..728880f2 100644 --- a/server/db/queries/verifySessionQueries.ts +++ b/server/db/queries/verifySessionQueries.ts @@ -37,9 +37,9 @@ export type UserSessionWithUser = { export async function getResourceByDomain( domain: string ): Promise { - if (config.isHybridMode()) { + if (config.isManagedMode()) { try { - const response = await axios.get(`${config.getRawConfig().hybrid?.endpoint}/api/v1/hybrid/resource/domain/${domain}`, await tokenManager.getAuthHeader()); + const response = await axios.get(`${config.getRawConfig().managed?.endpoint}/api/v1/hybrid/resource/domain/${domain}`, await tokenManager.getAuthHeader()); return response.data.data; } catch (error) { if (axios.isAxiosError(error)) { @@ -89,9 +89,9 @@ export async function getResourceByDomain( export async function getUserSessionWithUser( userSessionId: string ): Promise { - if (config.isHybridMode()) { + if (config.isManagedMode()) { try { - const response = await axios.get(`${config.getRawConfig().hybrid?.endpoint}/api/v1/hybrid/session/${userSessionId}`, await tokenManager.getAuthHeader()); + const response = await axios.get(`${config.getRawConfig().managed?.endpoint}/api/v1/hybrid/session/${userSessionId}`, await tokenManager.getAuthHeader()); return response.data.data; } catch (error) { if (axios.isAxiosError(error)) { @@ -130,9 +130,9 @@ export async function getUserSessionWithUser( * Get user organization role */ export async function getUserOrgRole(userId: string, orgId: string) { - if (config.isHybridMode()) { + if (config.isManagedMode()) { try { - const response = await axios.get(`${config.getRawConfig().hybrid?.endpoint}/api/v1/hybrid/user/${userId}/org/${orgId}/role`, await tokenManager.getAuthHeader()); + const response = await axios.get(`${config.getRawConfig().managed?.endpoint}/api/v1/hybrid/user/${userId}/org/${orgId}/role`, await tokenManager.getAuthHeader()); return response.data.data; } catch (error) { if (axios.isAxiosError(error)) { @@ -169,9 +169,9 @@ export async function getUserOrgRole(userId: string, orgId: string) { * Check if role has access to resource */ export async function getRoleResourceAccess(resourceId: number, roleId: number) { - if (config.isHybridMode()) { + if (config.isManagedMode()) { try { - const response = await axios.get(`${config.getRawConfig().hybrid?.endpoint}/api/v1/hybrid/role/${roleId}/resource/${resourceId}/access`, await tokenManager.getAuthHeader()); + const response = await axios.get(`${config.getRawConfig().managed?.endpoint}/api/v1/hybrid/role/${roleId}/resource/${resourceId}/access`, await tokenManager.getAuthHeader()); return response.data.data; } catch (error) { if (axios.isAxiosError(error)) { @@ -208,9 +208,9 @@ export async function getRoleResourceAccess(resourceId: number, roleId: number) * Check if user has direct access to resource */ export async function getUserResourceAccess(userId: string, resourceId: number) { - if (config.isHybridMode()) { + if (config.isManagedMode()) { try { - const response = await axios.get(`${config.getRawConfig().hybrid?.endpoint}/api/v1/hybrid/user/${userId}/resource/${resourceId}/access`, await tokenManager.getAuthHeader()); + const response = await axios.get(`${config.getRawConfig().managed?.endpoint}/api/v1/hybrid/user/${userId}/resource/${resourceId}/access`, await tokenManager.getAuthHeader()); return response.data.data; } catch (error) { if (axios.isAxiosError(error)) { @@ -247,9 +247,9 @@ export async function getUserResourceAccess(userId: string, resourceId: number) * Get resource rules for a given resource */ export async function getResourceRules(resourceId: number): Promise { - if (config.isHybridMode()) { + if (config.isManagedMode()) { try { - const response = await axios.get(`${config.getRawConfig().hybrid?.endpoint}/api/v1/hybrid/resource/${resourceId}/rules`, await tokenManager.getAuthHeader()); + const response = await axios.get(`${config.getRawConfig().managed?.endpoint}/api/v1/hybrid/resource/${resourceId}/rules`, await tokenManager.getAuthHeader()); return response.data.data; } catch (error) { if (axios.isAxiosError(error)) { diff --git a/server/emails/index.ts b/server/emails/index.ts index 0388d3bb..2cdef8a1 100644 --- a/server/emails/index.ts +++ b/server/emails/index.ts @@ -6,7 +6,7 @@ import logger from "@server/logger"; import SMTPTransport from "nodemailer/lib/smtp-transport"; function createEmailClient() { - if (config.isHybridMode()) { + if (config.isManagedMode()) { // LETS NOT WORRY ABOUT EMAILS IN HYBRID return; } diff --git a/server/hybridServer.ts b/server/hybridServer.ts index 2cd04e0d..bb26489d 100644 --- a/server/hybridServer.ts +++ b/server/hybridServer.ts @@ -23,7 +23,7 @@ export async function createHybridClientServer() { // Create client const client = createWebSocketClient( token, - config.getRawConfig().hybrid!.endpoint!, + config.getRawConfig().managed!.endpoint!, { reconnectInterval: 5000, pingInterval: 30000, diff --git a/server/index.ts b/server/index.ts index c8aaff73..746de7b9 100644 --- a/server/index.ts +++ b/server/index.ts @@ -27,7 +27,7 @@ async function startServers() { let hybridClientServer; let nextServer; - if (config.isHybridMode()) { + if (config.isManagedMode()) { hybridClientServer = await createHybridClientServer(); } else { nextServer = await createNextServer(); diff --git a/server/lib/config.ts b/server/lib/config.ts index 2437eaac..667df744 100644 --- a/server/lib/config.ts +++ b/server/lib/config.ts @@ -96,8 +96,8 @@ export class Config { if (!this.rawConfig) { throw new Error("Config not loaded. Call load() first."); } - if (this.rawConfig.hybrid) { - // LETS NOT WORRY ABOUT THE SERVER SECRET WHEN HYBRID + if (this.rawConfig.managed) { + // LETS NOT WORRY ABOUT THE SERVER SECRET WHEN MANAGED return; } license.setServerSecret(this.rawConfig.server.secret!); @@ -149,8 +149,8 @@ export class Config { return false; } - public isHybridMode() { - return typeof this.rawConfig?.hybrid === "object"; + public isManagedMode() { + return typeof this.rawConfig?.managed === "object"; } public async checkSupporterKey() { diff --git a/server/lib/readConfigFile.ts b/server/lib/readConfigFile.ts index 964e59ec..79ebd999 100644 --- a/server/lib/readConfigFile.ts +++ b/server/lib/readConfigFile.ts @@ -39,7 +39,7 @@ export const configSchema = z anonymous_usage: true } }), - hybrid: z + managed: z .object({ name: z.string().optional(), id: z.string().optional(), @@ -306,7 +306,7 @@ export const configSchema = z return true; } // If hybrid is defined, domains are not required - if (data.hybrid) { + if (data.managed) { return true; } if (keys.length === 0) { @@ -321,7 +321,7 @@ export const configSchema = z .refine( (data) => { // If hybrid is defined, server secret is not required - if (data.hybrid) { + if (data.managed) { return true; } // If hybrid is not defined, server secret must be defined @@ -334,7 +334,7 @@ export const configSchema = z .refine( (data) => { // If hybrid is defined, dashboard_url is not required - if (data.hybrid) { + if (data.managed) { return true; } // If hybrid is not defined, dashboard_url must be defined diff --git a/server/lib/remoteCertificates/certificates.ts b/server/lib/remoteCertificates/certificates.ts index f9d98e93..db6fa6ad 100644 --- a/server/lib/remoteCertificates/certificates.ts +++ b/server/lib/remoteCertificates/certificates.ts @@ -24,7 +24,7 @@ export async function getValidCertificatesForDomainsHybrid(domains: Set) try { const response = await axios.get( - `${config.getRawConfig().hybrid?.endpoint}/api/v1/hybrid/certificates/domains`, + `${config.getRawConfig().managed?.endpoint}/api/v1/hybrid/certificates/domains`, { params: { domains: domainArray diff --git a/server/lib/remoteProxy.ts b/server/lib/remoteProxy.ts index 3b9dcd69..2dad9ba8 100644 --- a/server/lib/remoteProxy.ts +++ b/server/lib/remoteProxy.ts @@ -18,7 +18,7 @@ export const proxyToRemote = async ( endpoint: string ): Promise => { try { - const remoteUrl = `${config.getRawConfig().hybrid?.endpoint?.replace(/\/$/, '')}/api/v1/${endpoint}`; + const remoteUrl = `${config.getRawConfig().managed?.endpoint?.replace(/\/$/, '')}/api/v1/${endpoint}`; logger.debug(`Proxying request to remote server: ${remoteUrl}`); diff --git a/server/lib/tokenManager.ts b/server/lib/tokenManager.ts index 45f280ba..2e0e1118 100644 --- a/server/lib/tokenManager.ts +++ b/server/lib/tokenManager.ts @@ -174,7 +174,7 @@ export class TokenManager { this.isRefreshing = true; try { - const hybridConfig = config.getRawConfig().hybrid; + const hybridConfig = config.getRawConfig().managed; if ( !hybridConfig?.id || diff --git a/server/lib/traefikConfig.ts b/server/lib/traefikConfig.ts index a168ea0b..7f4289a4 100644 --- a/server/lib/traefikConfig.ts +++ b/server/lib/traefikConfig.ts @@ -281,7 +281,7 @@ export class TraefikConfigManager { if (this.shouldFetchCertificates(domains)) { // Get valid certificates for active domains - if (config.isHybridMode()) { + if (config.isManagedMode()) { validCertificates = await getValidCertificatesForDomainsHybrid(domains); } else { @@ -383,9 +383,9 @@ export class TraefikConfigManager { } | null> { let traefikConfig; try { - if (config.isHybridMode()) { + if (config.isManagedMode()) { const resp = await axios.get( - `${config.getRawConfig().hybrid?.endpoint}/api/v1/hybrid/traefik-config`, + `${config.getRawConfig().managed?.endpoint}/api/v1/hybrid/traefik-config`, await tokenManager.getAuthHeader() ); diff --git a/server/routers/badger/verifySession.ts b/server/routers/badger/verifySession.ts index 1f9ba191..79951cb5 100644 --- a/server/routers/badger/verifySession.ts +++ b/server/routers/badger/verifySession.ts @@ -192,8 +192,8 @@ export async function verifyResourceSession( } let endpoint: string; - if (config.isHybridMode()) { - endpoint = config.getRawConfig().hybrid?.redirect_endpoint || config.getRawConfig().hybrid?.endpoint || ""; + if (config.isManagedMode()) { + endpoint = config.getRawConfig().managed?.redirect_endpoint || config.getRawConfig().managed?.endpoint || ""; } else { endpoint = config.getRawConfig().app.dashboard_url!; } diff --git a/server/routers/gerbil/getConfig.ts b/server/routers/gerbil/getConfig.ts index 7cf69245..f7663f53 100644 --- a/server/routers/gerbil/getConfig.ts +++ b/server/routers/gerbil/getConfig.ts @@ -104,7 +104,7 @@ export async function getConfig( } // STOP HERE IN HYBRID MODE - if (config.isHybridMode()) { + if (config.isManagedMode()) { req.body = { ...req.body, endpoint: exitNode[0].endpoint, diff --git a/server/routers/internal.ts b/server/routers/internal.ts index 805e284f..b961ef6f 100644 --- a/server/routers/internal.ts +++ b/server/routers/internal.ts @@ -51,7 +51,7 @@ internalRouter.get("/idp/:idpId", idp.getIdp); const gerbilRouter = Router(); internalRouter.use("/gerbil", gerbilRouter); -if (config.isHybridMode()) { +if (config.isManagedMode()) { // Use proxy router to forward requests to remote cloud server // Proxy endpoints for each gerbil route gerbilRouter.post("/receive-bandwidth", (req, res, next) => @@ -90,7 +90,7 @@ internalRouter.use("/badger", badgerRouter); badgerRouter.post("/verify-session", badger.verifyResourceSession); -if (config.isHybridMode()) { +if (config.isManagedMode()) { badgerRouter.post("/exchange-session", (req, res, next) => proxyToRemote(req, res, next, "hybrid/badger/exchange-session") ); diff --git a/server/setup/ensureSetupToken.ts b/server/setup/ensureSetupToken.ts index 49608218..078c99ee 100644 --- a/server/setup/ensureSetupToken.ts +++ b/server/setup/ensureSetupToken.ts @@ -23,7 +23,7 @@ function generateId(length: number): string { } export async function ensureSetupToken() { - if (config.isHybridMode()) { + if (config.isManagedMode()) { // LETS NOT WORRY ABOUT THE SERVER SECRET WHEN HYBRID return; }