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

impl and launch promster server

Yuki Takei 5 лет назад
Родитель
Сommit
6a2cb98845
3 измененных файлов с 33 добавлено и 1 удалено
  1. 11 0
      src/server/crowi/express-init.js
  2. 10 1
      src/server/crowi/index.js
  3. 12 0
      src/server/service/config-loader.js

+ 11 - 0
src/server/crowi/express-init.js

@@ -18,6 +18,7 @@ module.exports = function(crowi, app) {
   const i18nSprintf = require('i18next-sprintf-postprocessor');
   const i18nMiddleware = require('i18next-express-middleware');
 
+  // const promster = require('../middlewares/promster')(crowi, app);
   const registerSafeRedirect = require('../middlewares/safe-redirect')();
   const injectCurrentuserToLocalvars = require('../middlewares/inject-currentuser-to-localvars')();
   const autoReconnectToS2sMsgServer = require('../middlewares/auto-reconnect-to-s2s-msg-server')(crowi);
@@ -116,6 +117,16 @@ module.exports = function(crowi, app) {
 
   app.use(flash());
 
+  // app.use(promster);
+  const { configManager } = crowi;
+
+  if (configManager.getConfig('crowi', 'promister:isEnabled')) {
+    return null;
+  }
+
+  const { createMiddleware } = require('@promster/express');
+  app.use(createMiddleware({ app }));
+
   app.use(registerSafeRedirect);
   app.use(injectCurrentuserToLocalvars);
   app.use(autoReconnectToS2sMsgServer);

+ 10 - 1
src/server/crowi/index.js

@@ -404,7 +404,7 @@ Crowi.prototype.start = async function() {
   await this.init();
   await this.buildServer();
 
-  const { express } = this;
+  const { express, configManager } = this;
 
   // setup plugins
   this.pluginService = new PluginService(this, express);
@@ -419,6 +419,15 @@ Crowi.prototype.start = async function() {
       this.crowiDev.setupExpressAfterListening(express);
     }
   });
+  // listen for promster
+  if (configManager.getConfig('crowi', 'promister:isEnabled')) {
+    const { createServer } = require('@promster/server');
+    const promsterPort = configManager.getConfig('crowi', 'promister:port');
+
+    createServer({ port: promsterPort }).then(() => {
+      logger.info(`[${this.node_env}] Promster server is listening on port ${promsterPort}`);
+    });
+  }
 
   this.socketIoService.attachServer(serverListening);
 

+ 12 - 0
src/server/service/config-loader.js

@@ -380,6 +380,18 @@ const ENV_VAR_NAME_TO_CONFIG_INFO = {
     type:    TYPES.NUMBER,
     default: 120,
   },
+  PROMSTER_ENABLED: {
+    ns:      'crowi',
+    key:     'promister:isEnabled',
+    type:    TYPES.BOOLEAN,
+    default: false,
+  },
+  PROMSTER_PORT: {
+    ns:      'crowi',
+    key:     'promister:port',
+    type:    TYPES.NUMBER,
+    default: 7788,
+  },
 };
 
 class ConfigLoader {