Просмотр исходного кода

Merge pull request #1798 from weseek/imprv/export-env-vars

Imprv/export env vars
itizawa 6 лет назад
Родитель
Сommit
ec2542c602

+ 2 - 1
src/server/routes/apiv3/admin-home.js

@@ -1,5 +1,6 @@
 const express = require('express');
 const PluginUtils = require('../../plugins/plugin-utils');
+const ConfigLoader = require('../../service/config-loader');
 
 const pluginUtils = new PluginUtils();
 
@@ -70,7 +71,7 @@ module.exports = (crowi) => {
       npmVersion: crowi.runtimeVersions.versions.npm ? crowi.runtimeVersions.versions.npm.version.version : '-',
       yarnVersion: crowi.runtimeVersions.versions.yarn ? crowi.runtimeVersions.versions.yarn.version.version : '-',
       installedPlugins: pluginUtils.listPlugins(crowi.rootDir),
-      envVars: await crowi.configManager.configLoader.getEnvVarsForDisplay(),
+      envVars: await ConfigLoader.getEnvVarsForDisplay(true),
     };
 
     return res.apiv3({ adminHomeParams });

+ 7 - 4
src/server/service/config-loader.js

@@ -355,14 +355,17 @@ class ConfigLoader {
    *
    * **use this only admin home page.**
    */
-  getEnvVarsForDisplay() {
+  static getEnvVarsForDisplay(avoidSecurity = false) {
     const config = {};
     for (const ENV_VAR_NAME of Object.keys(ENV_VAR_NAME_TO_CONFIG_INFO)) {
       const configInfo = ENV_VAR_NAME_TO_CONFIG_INFO[ENV_VAR_NAME];
-
-      if (!isSecurityEnv(configInfo.key) && process.env[ENV_VAR_NAME] !== undefined) {
-        config[ENV_VAR_NAME] = configInfo.type.parse(process.env[ENV_VAR_NAME]);
+      if (process.env[ENV_VAR_NAME] === undefined) {
+        continue;
+      }
+      if (isSecurityEnv(configInfo.key) && avoidSecurity) {
+        continue;
       }
+      config[ENV_VAR_NAME] = configInfo.type.parse(process.env[ENV_VAR_NAME]);
     }
 
     debug('ConfigLoader#getEnvVarsForDisplay', config);

+ 4 - 1
src/server/service/export.js

@@ -6,6 +6,7 @@ const mongoose = require('mongoose');
 const { Transform } = require('stream');
 const streamToPromise = require('stream-to-promise');
 const archiver = require('archiver');
+const ConfigLoader = require('../service/config-loader');
 
 const toArrayIfNot = require('../../lib/util/toArrayIfNot');
 
@@ -76,12 +77,14 @@ class ExportService {
   async createMetaJson() {
     const metaJson = path.join(this.baseDir, this.growiBridgeService.getMetaFileName());
     const writeStream = fs.createWriteStream(metaJson, { encoding: this.growiBridgeService.getEncoding() });
+    const passwordSeed = this.crowi.env.PASSWORD_SEED || null;
 
     const metaData = {
       version: this.crowi.version,
       url: this.appService.getSiteUrl(),
-      passwordSeed: this.crowi.env.PASSWORD_SEED,
+      passwordSeed,
       exportedAt: new Date(),
+      envVars: ConfigLoader.getEnvVarsForDisplay(),
     };
 
     writeStream.write(JSON.stringify(metaData));