feat: add ServerChecker

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
MiaoWoo 2020-07-06 16:07:16 +08:00
parent fe1ee3883a
commit 3ea72f0aac
2 changed files with 19 additions and 1 deletions

View File

@ -1,5 +1,5 @@
import * as reflect from '@ccms/common/dist/reflect' import * as reflect from '@ccms/common/dist/reflect'
import { injectable } from '@ccms/container' import { injectable, inject } from '@ccms/container'
import { NativePluginManager } from './native_plugin' import { NativePluginManager } from './native_plugin'
import { constants } from '../../constants' import { constants } from '../../constants'
@ -41,6 +41,23 @@ export namespace server {
tabComplete?(sender: string | any, input: string, index?: number): string[] tabComplete?(sender: string | any, input: string, index?: number): string[]
} }
@injectable() @injectable()
export class ServerChecker {
@inject(ServerType)
private serverType: string
check(servers: string[]) {
// Not set servers -> allow
if (!servers || !servers.length) return true
// include !type -> deny
let denyServers = servers.filter(svr => svr.startsWith("!"))
if (denyServers.length !== 0) {
return !denyServers.includes(`!${this.serverType}`)
} else {
// only include -> allow
return servers.includes(this.serverType)
}
}
}
@injectable()
export abstract class ReflectServer implements server.Server { export abstract class ReflectServer implements server.Server {
protected pipeline: any protected pipeline: any
protected rootLogger: any protected rootLogger: any

View File

@ -97,6 +97,7 @@ function initialize() {
let type = detectServer() let type = detectServer()
console.i18n("ms.core.initialize.detect", { scope: global.scope, type }) console.i18n("ms.core.initialize.detect", { scope: global.scope, type })
container.bind(server.ServerType).toConstantValue(type) container.bind(server.ServerType).toConstantValue(type)
container.bind(server.ServerChecker).toSelf().inSingletonScope()
console.i18n("ms.core.package.initialize", { scope: global.scope, type }) console.i18n("ms.core.package.initialize", { scope: global.scope, type })
require(`${global.scope}/${type}`).default(container) require(`${global.scope}/${type}`).default(container)
require(`${global.scope}/plugin`) require(`${global.scope}/plugin`)