klip/server/configToEnv.ts

63 lines
2.2 KiB
TypeScript

/* eslint-disable global-require */
import fs from "fs";
import path from "path";
const hasServerConfig = fs.existsSync(path.resolve(__dirname, "config.js"));
const hasClientConfig = fs.existsSync(
path.resolve(__dirname, "../client/config.js")
);
if (hasServerConfig && hasClientConfig) {
const serverConfig = require("./config.js");
const clientConfig = require("../client/config.js");
let envTemplate = fs.readFileSync(
path.resolve(__dirname, "../.template.env"),
"utf-8"
);
const configs = {
PORT: serverConfig.PORT || 3000,
DEFAULT_DOMAIN: serverConfig.DEFAULT_DOMAIN || "localhost:3000",
DB_URI: serverConfig.DB_URI || "bolt://localhost",
DB_USERNAME: serverConfig.DB_USERNAME,
DB_PASSWORD: serverConfig.DB_PASSWORD,
REDIS_DISABLED: serverConfig.REDIS_DISABLED || false,
REDIS_HOST: serverConfig.REDIS_HOST || "127.0.0.1",
REDIS_PORT: serverConfig.REDIS_PORT || 6379,
REDIS_PASSWORD: serverConfig.REDIS_PASSWORD,
USER_LIMIT_PER_DAY: serverConfig.USER_LIMIT_PER_DAY || 50,
JWT_SECRET: serverConfig.JWT_SECRET || "securekey",
ADMIN_EMAILS: serverConfig.ADMIN_EMAILS.join(","),
RECAPTCHA_SITE_KEY: clientConfig.RECAPTCHA_SITE_KEY,
RECAPTCHA_SECRET_KEY: serverConfig.RECAPTCHA_SECRET_KEY,
GOOGLE_SAFE_BROWSING_KEY: serverConfig.GOOGLE_SAFE_BROWSING_KEY,
GOOGLE_ANALYTICS: clientConfig.GOOGLE_ANALYTICS_ID,
GOOGLE_ANALYTICS_UNIVERSAL: serverConfig.GOOGLE_ANALYTICS,
MAIL_HOST: serverConfig.MAIL_HOST,
MAIL_PORT: serverConfig.MAIL_PORT,
MAIL_SECURE: serverConfig.MAIL_SECURE,
MAIL_USER: serverConfig.MAIL_USER,
MAIL_FROM: serverConfig.MAIL_FROM,
MAIL_PASSWORD: serverConfig.MAIL_PASSWORD,
REPORT_MAIL: serverConfig.REPORT_MAIL,
CONTACT_EMAIL: clientConfig.CONTACT_EMAIL
};
Object.keys(configs).forEach(c => {
envTemplate = envTemplate.replace(
new RegExp(`{{${c}}}`, "gm"),
configs[c] || ""
);
});
fs.writeFileSync(path.resolve(__dirname, "../.env"), envTemplate);
fs.renameSync(
path.resolve(__dirname, "config.js"),
path.resolve(__dirname, "old.config.js")
);
fs.renameSync(
path.resolve(__dirname, "../client/config.js"),
path.resolve(__dirname, "../client/old.config.js")
);
}