Allow setting server config variables via .env file

This commit is contained in:
Martin Kleinschrodt 2022-02-23 17:49:45 +01:00
parent 589ffeaf49
commit 0dcf3ce59c
5 changed files with 25 additions and 7 deletions

View File

@ -20,6 +20,7 @@
"@types/stripe": "8.0.416",
"ansi-colors": "4.1.1",
"date-fns": "2.22.1",
"dotenv": "16.0.0",
"fs-extra": "10.0.0",
"geolite2-redist": "2.0.4",
"level": "7.0.0",
@ -1889,6 +1890,14 @@
"node": ">=0.3.1"
}
},
"node_modules/dotenv": {
"version": "16.0.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz",
"integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==",
"engines": {
"node": ">=12"
}
},
"node_modules/dynamic-dedupe": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz",
@ -5698,6 +5707,11 @@
"integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
"dev": true
},
"dotenv": {
"version": "16.0.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz",
"integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q=="
},
"dynamic-dedupe": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz",

View File

@ -31,6 +31,7 @@
"@types/stripe": "8.0.416",
"ansi-colors": "4.1.1",
"date-fns": "2.22.1",
"dotenv": "16.0.0",
"fs-extra": "10.0.0",
"geolite2-redist": "2.0.4",
"level": "7.0.0",

View File

@ -14,6 +14,8 @@ import { StripeProvisionerConfig } from "./provisioning/stripe";
import { MixpanelConfig } from "./logging/mixpanel";
import { HTTPReceiverConfig } from "./transport/http";
import { PostgresConfig } from "./storage/postgres";
import dotenv from "dotenv";
import { resolve } from "path";
export class TransportConfig extends Config {
@ConfigParam()
@ -34,9 +36,6 @@ export class EmailConfig extends Config {
@ConfigParam(SMTPConfig)
smtp?: SMTPConfig;
@ConfigParam("string")
footer?: string;
}
export class DataStorageConfig extends Config {
@ -153,5 +152,9 @@ export class PadlocConfig extends Config {
}
export function getConfig() {
const envFile = process.argv.find((arg) => arg.startsWith("--env="))?.slice(6);
const path = envFile && resolve(process.cwd(), envFile);
const override = process.argv.includes("--env-override");
dotenv.config({ override, path });
return new PadlocConfig().fromEnv(process.env as { [v: string]: string }, "PL_");
}

View File

@ -12,10 +12,10 @@ export class SMTPConfig extends Config {
}
@ConfigParam()
host: string = "";
host: string = "localhost";
@ConfigParam()
port: string = "";
@ConfigParam("number")
port: number = 1025;
@ConfigParam("boolean")
secure: boolean = false;

View File

@ -7,7 +7,7 @@ import { Config, ConfigParam } from "@padloc/core/src/config";
export class MongoDBStorageConfig extends Config {
@ConfigParam()
host: string = "localhost";
@ConfigParam()
@ConfigParam("number")
port: number = 27017;
@ConfigParam()
username: string = "";