Переглянути джерело

Add script to move configs to env file

poeti8 6 роки тому
батько
коміт
265e851df5
3 змінених файлів з 109 додано та 0 видалено
  1. 55 0
      .template.env
  2. 53 0
      server/configToEnv.js
  3. 1 0
      server/server.js

+ 55 - 0
.template.env

@@ -0,0 +1,55 @@
+# App port to run on
+PORT={{PORT}}
+
+# The domain that this website is on
+DEFAULT_DOMAIN={{DEFAULT_DOMAIN}}
+
+# Neo4j database credential details
+DB_URI={{DB_URI}}
+DB_USERNAME={{DB_USERNAME}}
+DB_PASSWORD={{DB_PASSWORD}}
+
+# Redis host and port
+REDIS_DISABLED={{REDIS_DISABLED}}
+REDIS_HOST={{REDIS_HOST}}
+REDIS_PORT={{REDIS_PORT}}
+REDIS_PASSWORD={{REDIS_PASSWORD}}
+
+# The daily limit for each user
+USER_LIMIT_PER_DAY={{USER_LIMIT_PER_DAY}}
+
+# A passphrase to encrypt JWT. Use a long and secure key.
+JWT_SECRET={{JWT_SECRET}}
+
+# Admin emails so they can access admin actions on settings page
+# Comma seperated
+ADMIN_EMAILS={{ADMIN_EMAILS}}
+
+# Invisible reCaptcha secret key
+# Create one in https://www.google.com/recaptcha/intro/
+RECAPTCHA_SITE_KEY={{RECAPTCHA_SITE_KEY}}
+RECAPTCHA_SECRET_KEY={{RECAPTCHA_SECRET_KEY}}
+
+# Google Cloud API to prevent from users from submitting malware URLs.
+# Get it from https://developers.google.com/safe-browsing/v4/get-started
+GOOGLE_SAFE_BROWSING_KEY={{GOOGLE_SAFE_BROWSING_KEY}}
+
+# Google Analytics tracking ID for universal analytics.
+# Example: UA-XXXX-XX
+GOOGLE_ANALYTICS={{GOOGLE_ANALYTICS}}
+
+# Your email host details to use to send verification emails.
+# More info on http://nodemailer.com/
+# Mail from example "Kutt <support@kutt.it>". Leave empty to use MAIL_USER
+MAIL_HOST={{MAIL_HOST}}
+MAIL_PORT={{MAIL_PORT}}
+MAIL_SECURE={{MAIL_SECURE}}
+MAIL_USER={{MAIL_USER}}
+MAIL_FROM={{MAIL_FROM}}
+MAIL_PASSWORD={{MAIL_PASSWORD}}
+
+# The email address that will receive submitted reports.
+REPORT_MAIL={{REPORT_MAIL}}
+
+# Support email to show on the app
+CONTACT_EMAIL={{CONTACT_EMAIL}}

+ 53 - 0
server/configToEnv.js

@@ -0,0 +1,53 @@
+/* eslint-disable global-require */
+/* eslint-disable import/no-unresolved */
+const fs = require('fs');
+const path = require('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: serverConfig.GOOGLE_ANALYTICS || clientConfig.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')
+  );
+}
+
+process.exit('yeehaw');

+ 1 - 0
server/server.js

@@ -1,3 +1,4 @@
+require('./configToEnv');
 require('dotenv').config();
 const nextApp = require('next');
 const express = require('express');