diff --git a/server/private/lib/config.ts b/server/private/lib/config.ts index dd32e313..eed642ed 100644 --- a/server/private/lib/config.ts +++ b/server/private/lib/config.ts @@ -20,6 +20,7 @@ import { readPrivateConfigFile } from "#private/lib/readConfigFile"; import { build } from "@server/build"; +import license from "#private/license/license"; export class PrivateConfig { private rawPrivateConfig!: z.infer; @@ -44,115 +45,122 @@ export class PrivateConfig { throw new Error(`Invalid private configuration file: ${errors}`); } - if (parsedPrivateConfig.branding?.colors) { - process.env.BRANDING_COLORS = JSON.stringify( - parsedPrivateConfig.branding?.colors - ); + this.rawPrivateConfig = parsedPrivateConfig; + + this.loadEnv(); + } + + private async loadEnv() { + let isValidLicense = false; + if (build === "enterprise") { + const licenseData = await license.check(); + if (licenseData.isLicenseValid) { + isValidLicense = true; + } + } else if (build === "saas") { + isValidLicense = true; } - if (parsedPrivateConfig.branding?.logo?.light_path) { - process.env.BRANDING_LOGO_LIGHT_PATH = - parsedPrivateConfig.branding?.logo?.light_path; - } - if (parsedPrivateConfig.branding?.logo?.dark_path) { - process.env.BRANDING_LOGO_DARK_PATH = - parsedPrivateConfig.branding?.logo?.dark_path || undefined; - } + if (isValidLicense) { + if (this.rawPrivateConfig.branding?.colors) { + process.env.BRANDING_COLORS = JSON.stringify( + this.rawPrivateConfig.branding?.colors + ); + } - if (build != "oss") { - if (parsedPrivateConfig.branding?.logo?.light_path) { + if (this.rawPrivateConfig.branding?.logo?.light_path) { process.env.BRANDING_LOGO_LIGHT_PATH = - parsedPrivateConfig.branding?.logo?.light_path; + this.rawPrivateConfig.branding?.logo?.light_path; } - if (parsedPrivateConfig.branding?.logo?.dark_path) { + if (this.rawPrivateConfig.branding?.logo?.dark_path) { process.env.BRANDING_LOGO_DARK_PATH = - parsedPrivateConfig.branding?.logo?.dark_path || undefined; + this.rawPrivateConfig.branding?.logo?.dark_path || + undefined; } - process.env.BRANDING_LOGO_AUTH_WIDTH = parsedPrivateConfig.branding - ?.logo?.auth_page?.width - ? parsedPrivateConfig.branding?.logo?.auth_page?.width.toString() + process.env.BRANDING_LOGO_AUTH_WIDTH = this.rawPrivateConfig + .branding?.logo?.auth_page?.width + ? this.rawPrivateConfig.branding?.logo?.auth_page?.width.toString() : undefined; - process.env.BRANDING_LOGO_AUTH_HEIGHT = parsedPrivateConfig.branding - ?.logo?.auth_page?.height - ? parsedPrivateConfig.branding?.logo?.auth_page?.height.toString() + process.env.BRANDING_LOGO_AUTH_HEIGHT = this.rawPrivateConfig + .branding?.logo?.auth_page?.height + ? this.rawPrivateConfig.branding?.logo?.auth_page?.height.toString() : undefined; - process.env.BRANDING_LOGO_NAVBAR_WIDTH = parsedPrivateConfig + process.env.BRANDING_LOGO_NAVBAR_WIDTH = this.rawPrivateConfig .branding?.logo?.navbar?.width - ? parsedPrivateConfig.branding?.logo?.navbar?.width.toString() + ? this.rawPrivateConfig.branding?.logo?.navbar?.width.toString() : undefined; - process.env.BRANDING_LOGO_NAVBAR_HEIGHT = parsedPrivateConfig + process.env.BRANDING_LOGO_NAVBAR_HEIGHT = this.rawPrivateConfig .branding?.logo?.navbar?.height - ? parsedPrivateConfig.branding?.logo?.navbar?.height.toString() + ? this.rawPrivateConfig.branding?.logo?.navbar?.height.toString() : undefined; process.env.BRANDING_FAVICON_PATH = - parsedPrivateConfig.branding?.favicon_path; + this.rawPrivateConfig.branding?.favicon_path; process.env.BRANDING_APP_NAME = - parsedPrivateConfig.branding?.app_name || "Pangolin"; + this.rawPrivateConfig.branding?.app_name || "Pangolin"; - if (parsedPrivateConfig.branding?.footer) { + if (this.rawPrivateConfig.branding?.footer) { process.env.BRANDING_FOOTER = JSON.stringify( - parsedPrivateConfig.branding?.footer + this.rawPrivateConfig.branding?.footer ); } process.env.LOGIN_PAGE_TITLE_TEXT = - parsedPrivateConfig.branding?.login_page?.title_text || ""; + this.rawPrivateConfig.branding?.login_page?.title_text || ""; process.env.LOGIN_PAGE_SUBTITLE_TEXT = - parsedPrivateConfig.branding?.login_page?.subtitle_text || ""; + this.rawPrivateConfig.branding?.login_page?.subtitle_text || ""; process.env.SIGNUP_PAGE_TITLE_TEXT = - parsedPrivateConfig.branding?.signup_page?.title_text || ""; + this.rawPrivateConfig.branding?.signup_page?.title_text || ""; process.env.SIGNUP_PAGE_SUBTITLE_TEXT = - parsedPrivateConfig.branding?.signup_page?.subtitle_text || ""; + this.rawPrivateConfig.branding?.signup_page?.subtitle_text || + ""; process.env.RESOURCE_AUTH_PAGE_HIDE_POWERED_BY = - parsedPrivateConfig.branding?.resource_auth_page + this.rawPrivateConfig.branding?.resource_auth_page ?.hide_powered_by === true ? "true" : "false"; process.env.RESOURCE_AUTH_PAGE_SHOW_LOGO = - parsedPrivateConfig.branding?.resource_auth_page?.show_logo === - true + this.rawPrivateConfig.branding?.resource_auth_page + ?.show_logo === true ? "true" : "false"; process.env.RESOURCE_AUTH_PAGE_TITLE_TEXT = - parsedPrivateConfig.branding?.resource_auth_page?.title_text || - ""; + this.rawPrivateConfig.branding?.resource_auth_page + ?.title_text || ""; process.env.RESOURCE_AUTH_PAGE_SUBTITLE_TEXT = - parsedPrivateConfig.branding?.resource_auth_page + this.rawPrivateConfig.branding?.resource_auth_page ?.subtitle_text || ""; - if (parsedPrivateConfig.branding?.background_image_path) { + if (this.rawPrivateConfig.branding?.background_image_path) { process.env.BACKGROUND_IMAGE_PATH = - parsedPrivateConfig.branding?.background_image_path; - } - - if (parsedPrivateConfig.server.reo_client_id) { - process.env.REO_CLIENT_ID = - parsedPrivateConfig.server.reo_client_id; - } - - if (parsedPrivateConfig.stripe?.s3Bucket) { - process.env.S3_BUCKET = parsedPrivateConfig.stripe.s3Bucket; - } - if (parsedPrivateConfig.stripe?.localFilePath) { - process.env.LOCAL_FILE_PATH = - parsedPrivateConfig.stripe.localFilePath; - } - if (parsedPrivateConfig.stripe?.s3Region) { - process.env.S3_REGION = parsedPrivateConfig.stripe.s3Region; - } - if (parsedPrivateConfig.flags.use_pangolin_dns) { - process.env.USE_PANGOLIN_DNS = - parsedPrivateConfig.flags.use_pangolin_dns.toString(); + this.rawPrivateConfig.branding?.background_image_path; } } - this.rawPrivateConfig = parsedPrivateConfig; + if (this.rawPrivateConfig.server.reo_client_id) { + process.env.REO_CLIENT_ID = + this.rawPrivateConfig.server.reo_client_id; + } + + if (this.rawPrivateConfig.stripe?.s3Bucket) { + process.env.S3_BUCKET = this.rawPrivateConfig.stripe.s3Bucket; + } + if (this.rawPrivateConfig.stripe?.localFilePath) { + process.env.LOCAL_FILE_PATH = + this.rawPrivateConfig.stripe.localFilePath; + } + if (this.rawPrivateConfig.stripe?.s3Region) { + process.env.S3_REGION = this.rawPrivateConfig.stripe.s3Region; + } + if (this.rawPrivateConfig.flags.use_pangolin_dns) { + process.env.USE_PANGOLIN_DNS = + this.rawPrivateConfig.flags.use_pangolin_dns.toString(); + } } public getRawPrivateConfig() {