Yuki Takei пре 4 година
родитељ
комит
01df993b53

+ 11 - 7
packages/app/src/server/service/app.ts

@@ -4,19 +4,23 @@ import loggerFactory from '~/utils/logger';
 
 
 import { generateConfigsForInstalling } from '../models/config';
 import { generateConfigsForInstalling } from '../models/config';
 
 
-const logger = loggerFactory('growi:service:AppService');
-
-const S2sMessage = require('../models/vo/s2s-message');
-const S2sMessageHandlable = require('./s2s-messaging/handlable');
+import S2sMessage from '../models/vo/s2s-message';
+import { S2sMessageHandlable } from './s2s-messaging/handlable';
+import { S2sMessagingService } from './s2s-messaging/base';
 
 
+const logger = loggerFactory('growi:service:AppService');
 /**
 /**
  * the service class of AppService
  * the service class of AppService
  */
  */
-class AppService extends S2sMessageHandlable {
+class AppService implements S2sMessageHandlable {
 
 
-  constructor(crowi) {
-    super();
+  crowi!: any;
 
 
+  configManager: any;
+
+  s2sMessagingService: S2sMessagingService;
+
+  constructor(crowi) {
     this.crowi = crowi;
     this.crowi = crowi;
     this.configManager = crowi.configManager;
     this.configManager = crowi.configManager;
     this.s2sMessagingService = crowi.s2sMessagingService;
     this.s2sMessagingService = crowi.s2sMessagingService;

+ 23 - 11
packages/app/src/server/service/customize.ts

@@ -1,28 +1,40 @@
-import loggerFactory from '~/utils/logger';
-
 // eslint-disable-next-line no-unused-vars
 // eslint-disable-next-line no-unused-vars
-const logger = loggerFactory('growi:service:CustomizeService');
+import uglifycss from 'uglifycss';
+
+import loggerFactory from '~/utils/logger';
+import DevidedPagePath from '~/models/devided-page-path';
 
 
-const DevidedPagePath = require('~/models/devided-page-path');
+import S2sMessage from '../models/vo/s2s-message';
+import { S2sMessageHandlable } from './s2s-messaging/handlable';
+import ConfigManager from './config-manager';
 
 
-const S2sMessage = require('../models/vo/s2s-message');
-const S2sMessageHandlable = require('./s2s-messaging/handlable');
+const logger = loggerFactory('growi:service:CustomizeService');
 
 
 
 
 /**
 /**
  * the service class of CustomizeService
  * the service class of CustomizeService
  */
  */
-class CustomizeService extends S2sMessageHandlable {
+class CustomizeService implements S2sMessageHandlable {
 
 
-  constructor(crowi) {
-    super();
+  configManager: ConfigManager;
+
+  s2sMessagingService: any;
 
 
+  appService: any;
+
+  xssService: any;
+
+  lastLoadedAt?: Date;
+
+  customCss?: string;
+
+  customTitleTemplate!: string;
+
+  constructor(crowi) {
     this.configManager = crowi.configManager;
     this.configManager = crowi.configManager;
     this.s2sMessagingService = crowi.s2sMessagingService;
     this.s2sMessagingService = crowi.s2sMessagingService;
     this.appService = crowi.appService;
     this.appService = crowi.appService;
     this.xssService = crowi.xssService;
     this.xssService = crowi.xssService;
-
-    this.lastLoadedAt = null;
   }
   }
 
 
   /**
   /**

+ 15 - 11
packages/app/src/server/service/file-uploader-switch.ts

@@ -1,22 +1,26 @@
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
-const logger = loggerFactory('growi:service:FileUploader');
+import S2sMessage from '../models/vo/s2s-message';
+import ConfigManager from './config-manager';
+import { S2sMessagingService } from './s2s-messaging/base';
+import { S2sMessageHandlable } from './s2s-messaging/handlable';
 
 
-const S2sMessage = require('../models/vo/s2s-message');
-const S2sMessageHandlable = require('./s2s-messaging/handlable');
+const logger = loggerFactory('growi:service:FileUploaderSwitch');
 
 
-class fileUploaderSwitch extends S2sMessageHandlable {
+class FileUploaderSwitch implements S2sMessageHandlable {
 
 
-  constructor(crowi) {
-    super();
+  crowi: any;
+
+  configManager: ConfigManager;
+
+  s2sMessagingService: S2sMessagingService;
 
 
+  lastLoadedAt?: Date;
+
+  constructor(crowi) {
     this.crowi = crowi;
     this.crowi = crowi;
     this.configManager = crowi.configManager;
     this.configManager = crowi.configManager;
     this.s2sMessagingService = crowi.s2sMessagingService;
     this.s2sMessagingService = crowi.s2sMessagingService;
-    this.appService = crowi.appService;
-    this.xssService = crowi.xssService;
-
-    this.lastLoadedAt = null;
   }
   }
 
 
   /**
   /**
@@ -59,4 +63,4 @@ class fileUploaderSwitch extends S2sMessageHandlable {
 
 
 }
 }
 
 
-module.exports = fileUploaderSwitch;
+module.exports = FileUploaderSwitch;

+ 20 - 15
packages/app/src/server/service/mail.ts

@@ -1,32 +1,37 @@
+import nodemailer from 'nodemailer';
+import swig from 'swig-templates';
+
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
+import S2sMessage from '../models/vo/s2s-message';
+import { S2sMessageHandlable } from './s2s-messaging/handlable';
+
 const logger = loggerFactory('growi:service:mail');
 const logger = loggerFactory('growi:service:mail');
 
 
-const nodemailer = require('nodemailer');
-const swig = require('swig-templates');
+class MailService implements S2sMessageHandlable {
 
 
+  appService!: any;
 
 
-const S2sMessage = require('../models/vo/s2s-message');
-const S2sMessageHandlable = require('./s2s-messaging/handlable');
+  configManager!: any;
 
 
+  s2sMessagingService!: any;
 
 
-class MailService extends S2sMessageHandlable {
+  mailConfig: any = {};
 
 
-  constructor(crowi) {
-    super();
+  mailer: any = {};
 
 
+  lastLoadedAt?: Date;
+
+  /**
+   * the flag whether mailer is set up successfully
+   */
+  isMailerSetup = false;
+
+  constructor(crowi) {
     this.appService = crowi.appService;
     this.appService = crowi.appService;
     this.configManager = crowi.configManager;
     this.configManager = crowi.configManager;
     this.s2sMessagingService = crowi.s2sMessagingService;
     this.s2sMessagingService = crowi.s2sMessagingService;
 
 
-    this.mailConfig = {};
-    this.mailer = {};
-
-    /**
-     * the flag whether mailer is set up successfully
-     */
-    this.isMailerSetup = false;
-
     this.initialize();
     this.initialize();
   }
   }
 
 

+ 111 - 104
packages/app/src/server/service/passport.ts

@@ -1,130 +1,137 @@
+import urljoin from 'url-join';
+import luceneQueryParser from 'lucene-query-parser';
+
+import passport from 'passport';
+import LdapStrategy from 'passport-ldapauth';
+import { Strategy as LocalStrategy } from 'passport-local';
+import { Strategy as GoogleStrategy } from 'passport-google-oauth20';
+import { Strategy as GitHubStrategy } from 'passport-github';
+import { Strategy as TwitterStrategy } from 'passport-twitter';
+import { Strategy as OidcStrategy, Issuer as OIDCIssuer } from 'openid-client';
+import { Strategy as SamlStrategy } from 'passport-saml';
+import { BasicStrategy } from 'passport-http';
+
+import { IncomingMessage } from 'http';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
+import S2sMessage from '../models/vo/s2s-message';
+import { S2sMessageHandlable } from './s2s-messaging/handlable';
+
 const logger = loggerFactory('growi:service:PassportService');
 const logger = loggerFactory('growi:service:PassportService');
-const urljoin = require('url-join');
-const luceneQueryParser = require('lucene-query-parser');
-
-const passport = require('passport');
-const LocalStrategy = require('passport-local').Strategy;
-const LdapStrategy = require('passport-ldapauth');
-const GoogleStrategy = require('passport-google-oauth20').Strategy;
-const GitHubStrategy = require('passport-github').Strategy;
-const TwitterStrategy = require('passport-twitter').Strategy;
-const OidcStrategy = require('openid-client').Strategy;
-const SamlStrategy = require('passport-saml').Strategy;
-const OIDCIssuer = require('openid-client').Issuer;
-const BasicStrategy = require('passport-http').BasicStrategy;
-
-const S2sMessage = require('../models/vo/s2s-message');
-const S2sMessageHandlable = require('./s2s-messaging/handlable');
+
+
+interface IncomingMessageWithLdapAccountInfo extends IncomingMessage {
+  ldapAccountInfo: any;
+}
 
 
 /**
 /**
  * the service class of Passport
  * the service class of Passport
  */
  */
-class PassportService extends S2sMessageHandlable {
+class PassportService implements S2sMessageHandlable {
 
 
   // see '/lib/form/login.js'
   // see '/lib/form/login.js'
   static get USERNAME_FIELD() { return 'loginForm[username]' }
   static get USERNAME_FIELD() { return 'loginForm[username]' }
 
 
   static get PASSWORD_FIELD() { return 'loginForm[password]' }
   static get PASSWORD_FIELD() { return 'loginForm[password]' }
 
 
-  constructor(crowi) {
-    super();
+  crowi!: any;
 
 
-    this.crowi = crowi;
-    this.lastLoadedAt = null;
+  lastLoadedAt?: Date;
 
 
-    /**
-     * the flag whether LocalStrategy is set up successfully
-     */
-    this.isLocalStrategySetup = false;
+  /**
+   * the flag whether LocalStrategy is set up successfully
+   */
+  isLocalStrategySetup = false;
 
 
-    /**
-     * the flag whether LdapStrategy is set up successfully
-     */
-    this.isLdapStrategySetup = false;
+  /**
+   * the flag whether LdapStrategy is set up successfully
+   */
+  isLdapStrategySetup = false;
 
 
-    /**
-     * the flag whether GoogleStrategy is set up successfully
-     */
-    this.isGoogleStrategySetup = false;
+  /**
+   * the flag whether GoogleStrategy is set up successfully
+   */
+  isGoogleStrategySetup = false;
 
 
-    /**
-     * the flag whether GitHubStrategy is set up successfully
-     */
-    this.isGitHubStrategySetup = false;
+  /**
+   * the flag whether GitHubStrategy is set up successfully
+   */
+  isGitHubStrategySetup = false;
 
 
-    /**
-     * the flag whether TwitterStrategy is set up successfully
-     */
-    this.isTwitterStrategySetup = false;
+  /**
+   * the flag whether TwitterStrategy is set up successfully
+   */
+  isTwitterStrategySetup = false;
 
 
-    /**
-     * the flag whether OidcStrategy is set up successfully
-     */
-    this.isOidcStrategySetup = false;
+  /**
+   * the flag whether OidcStrategy is set up successfully
+   */
+  isOidcStrategySetup = false;
 
 
-    /**
-     * the flag whether SamlStrategy is set up successfully
-     */
-    this.isSamlStrategySetup = false;
+  /**
+   * the flag whether SamlStrategy is set up successfully
+   */
+  isSamlStrategySetup = false;
 
 
-    /**
-     * the flag whether BasicStrategy is set up successfully
-     */
-    this.isBasicStrategySetup = false;
+  /**
+   * the flag whether BasicStrategy is set up successfully
+   */
+  isBasicStrategySetup = false;
 
 
-    /**
-     * the flag whether serializer/deserializer are set up successfully
-     */
-    this.isSerializerSetup = false;
-
-    /**
-     * the keys of mandatory configs for SAML
-     */
-    this.mandatoryConfigKeysForSaml = [
-      'security:passport-saml:entryPoint',
-      'security:passport-saml:issuer',
-      'security:passport-saml:cert',
-      'security:passport-saml:attrMapId',
-      'security:passport-saml:attrMapUsername',
-      'security:passport-saml:attrMapMail',
-    ];
-
-    this.setupFunction = {
-      local: {
-        setup: 'setupLocalStrategy',
-        reset: 'resetLocalStrategy',
-      },
-      ldap: {
-        setup: 'setupLdapStrategy',
-        reset: 'resetLdapStrategy',
-      },
-      saml: {
-        setup: 'setupSamlStrategy',
-        reset: 'resetSamlStrategy',
-      },
-      oidc: {
-        setup: 'setupOidcStrategy',
-        reset: 'resetOidcStrategy',
-      },
-      basic: {
-        setup: 'setupBasicStrategy',
-        reset: 'resetBasicStrategy',
-      },
-      google: {
-        setup: 'setupGoogleStrategy',
-        reset: 'resetGoogleStrategy',
-      },
-      github: {
-        setup: 'setupGitHubStrategy',
-        reset: 'resetGitHubStrategy',
-      },
-      twitter: {
-        setup: 'setupTwitterStrategy',
-        reset: 'resetTwitterStrategy',
-      },
-    };
+  /**
+   * the flag whether serializer/deserializer are set up successfully
+   */
+  isSerializerSetup = false;
+
+  /**
+   * the keys of mandatory configs for SAML
+   */
+  mandatoryConfigKeysForSaml = [
+    'security:passport-saml:entryPoint',
+    'security:passport-saml:issuer',
+    'security:passport-saml:cert',
+    'security:passport-saml:attrMapId',
+    'security:passport-saml:attrMapUsername',
+    'security:passport-saml:attrMapMail',
+  ];
+
+  setupFunction = {
+    local: {
+      setup: 'setupLocalStrategy',
+      reset: 'resetLocalStrategy',
+    },
+    ldap: {
+      setup: 'setupLdapStrategy',
+      reset: 'resetLdapStrategy',
+    },
+    saml: {
+      setup: 'setupSamlStrategy',
+      reset: 'resetSamlStrategy',
+    },
+    oidc: {
+      setup: 'setupOidcStrategy',
+      reset: 'resetOidcStrategy',
+    },
+    basic: {
+      setup: 'setupBasicStrategy',
+      reset: 'resetBasicStrategy',
+    },
+    google: {
+      setup: 'setupGoogleStrategy',
+      reset: 'resetGoogleStrategy',
+    },
+    github: {
+      setup: 'setupGitHubStrategy',
+      reset: 'resetGitHubStrategy',
+    },
+    twitter: {
+      setup: 'setupTwitterStrategy',
+      reset: 'resetTwitterStrategy',
+    },
+  };
+
+  constructor(crowi: any) {
+    this.crowi = crowi;
   }
   }
 
 
 
 

+ 9 - 6
packages/app/src/server/service/slackbot.ts

@@ -1,5 +1,7 @@
 
 
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
+import { S2sMessagingService } from './s2s-messaging/base';
+import { S2sMessageHandlable } from './s2s-messaging/handlable';
 
 
 const logger = loggerFactory('growi:service:SlackBotService');
 const logger = loggerFactory('growi:service:SlackBotService');
 const mongoose = require('mongoose');
 const mongoose = require('mongoose');
@@ -11,18 +13,19 @@ const PAGINGLIMIT = 10;
 const { reshapeContentsBody } = require('@growi/slack');
 const { reshapeContentsBody } = require('@growi/slack');
 
 
 const S2sMessage = require('../models/vo/s2s-message');
 const S2sMessage = require('../models/vo/s2s-message');
-const S2sMessageHandlable = require('./s2s-messaging/handlable');
 
 
-class SlackBotService extends S2sMessageHandlable {
+class SlackBotService implements S2sMessageHandlable {
 
 
-  constructor(crowi) {
-    super();
+  crowi!: any;
+
+  s2sMessagingService!: S2sMessagingService;
+
+  lastLoadedAt?: Date;
 
 
+  constructor(crowi) {
     this.crowi = crowi;
     this.crowi = crowi;
     this.s2sMessagingService = crowi.s2sMessagingService;
     this.s2sMessagingService = crowi.s2sMessagingService;
 
 
-    this.lastLoadedAt = null;
-
     this.initialize();
     this.initialize();
   }
   }
 
 

+ 14 - 7
packages/app/src/server/service/system-events/sync-page-status.ts

@@ -1,10 +1,11 @@
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
-const logger = loggerFactory('growi:service:system-events:SyncPageStatusService');
+import S2sMessage from '../../models/vo/s2s-message';
+import { S2cMessagePageUpdated } from '../../models/vo/s2c-message';
+import { S2sMessageHandlable } from '../s2s-messaging/handlable';
+import { S2sMessagingService } from '../s2s-messaging/base';
 
 
-const S2sMessage = require('../../models/vo/s2s-message');
-const { S2cMessagePageUpdated } = require('../../models/vo/s2c-message');
-const S2sMessageHandlable = require('../s2s-messaging/handlable');
+const logger = loggerFactory('growi:service:system-events:SyncPageStatusService');
 
 
 /**
 /**
  * This service notify page status
  * This service notify page status
@@ -19,11 +20,17 @@ const S2sMessageHandlable = require('../s2s-messaging/handlable');
  *  3. GROWI server B, C, ... relay the information to clients B1, B2, .. C1, C2, ... with SocketIoService
  *  3. GROWI server B, C, ... relay the information to clients B1, B2, .. C1, C2, ... with SocketIoService
  *
  *
  */
  */
-class SyncPageStatusService extends S2sMessageHandlable {
+class SyncPageStatusService implements S2sMessageHandlable {
 
 
-  constructor(crowi, s2sMessagingService, socketIoService) {
-    super();
+  crowi!: any;
+
+  s2sMessagingService!: S2sMessagingService;
 
 
+  socketIoService!: any;
+
+  emitter!: any;
+
+  constructor(crowi, s2sMessagingService, socketIoService) {
     this.crowi = crowi;
     this.crowi = crowi;
     this.s2sMessagingService = s2sMessagingService;
     this.s2sMessagingService = s2sMessagingService;
     this.socketIoService = socketIoService;
     this.socketIoService = socketIoService;