From a4e2cc54e64d547c0973839e1a719f6a95504cdb Mon Sep 17 00:00:00 2001 From: xiaojunnuo Date: Thu, 3 Oct 2024 22:03:49 +0800 Subject: [PATCH] chore: lib-server --- docker/run/docker-compose.yaml | 9 +- packages/core/acme-client/package.json | 2 +- packages/core/pipeline/package.json | 1 + packages/core/pipeline/src/utils/index.ts | 2 + packages/libs/lib-server/.dockerignore | 16 +++ packages/libs/lib-server/.editorconfig | 11 ++ packages/libs/lib-server/.eslintrc.json | 7 + packages/libs/lib-server/.gitignore | 28 ++++ packages/libs/lib-server/.npmignore | 2 + packages/libs/lib-server/.prettierrc | 7 + packages/libs/lib-server/CHANGELOG.md | 73 ++++++++++ packages/libs/lib-server/LICENSE | 21 +++ packages/libs/lib-server/README.md | 16 +++ packages/libs/lib-server/README_zhCN.md | 125 ++++++++++++++++++ packages/libs/lib-server/jest.config.js | 6 + packages/libs/lib-server/ormconfig.json | 7 + packages/libs/lib-server/package.json | 68 ++++++++++ .../lib-server}/src/basic/base-controller.ts | 4 +- .../lib-server}/src/basic/base-service.ts | 4 +- .../lib-server}/src/basic/constants.ts | 0 .../lib-server}/src/basic/crud-controller.ts | 0 .../lib-server}/src/basic/enum-item.ts | 0 .../src/basic/exception/auth-exception.ts | 0 .../src/basic/exception/base-exception.ts | 0 .../src/basic/exception/common-exception.ts | 0 .../lib-server/src/basic/exception/index.ts | 7 + .../basic/exception/permission-exception.ts | 0 .../src/basic/exception/preview-exception.ts | 0 .../basic/exception/validation-exception.ts | 0 .../src/basic/exception/vip-exception.ts | 0 packages/libs/lib-server/src/basic/index.ts | 7 + .../lib-server}/src/basic/result.ts | 0 packages/libs/lib-server/src/configuration.ts | 11 ++ packages/libs/lib-server/src/index.ts | 7 + packages/libs/lib-server/src/system/index.ts | 1 + .../system/settings/entity/sys-settings.ts | 33 +++++ .../lib-server/src/system/settings/index.ts | 3 + .../src/system/settings}/service/models.ts | 1 + .../settings}/service/sys-settings-service.ts | 6 +- packages/libs/lib-server/test.md | 4 + packages/libs/lib-server/tsconfig.json | 40 ++++++ packages/ui/certd-client/src/api/tools.ts | 2 +- .../src/components/vip-button/index.vue | 78 ++++++++--- .../src/layout/layout-framework.vue | 4 + .../src/router/source/modules/sys.ts | 27 ++++ .../ui/certd-client/src/views/sys/site/api.ts | 43 ++++++ .../certd-client/src/views/sys/site/index.vue | 92 +++++++++++++ .../ui/certd-server/.env.development.yaml | 22 +-- packages/ui/certd-server/app.js | 2 +- packages/ui/certd-server/package.json | 3 +- .../certd-server/src/config/config.default.ts | 4 +- packages/ui/certd-server/src/config/loader.ts | 2 +- packages/ui/certd-server/src/configuration.ts | 7 +- .../certd-server/src/middleware/authority.ts | 8 +- .../src/middleware/global-exception.ts | 4 +- .../ui/certd-server/src/middleware/preview.ts | 11 +- .../src/middleware/reset-passwd/middleware.ts | 18 +-- .../src/modules/account/account-controller.ts | 6 +- .../controller/permission-controller.ts | 2 +- .../authority/controller/role-controller.ts | 2 +- .../authority/controller/user-controller.ts | 4 +- .../authority/enums/ResourceTypeEnum.ts | 2 +- .../modules/authority/service/auth-service.ts | 2 +- .../authority/service/permission-service.ts | 2 +- .../service/role-permission-service.ts | 2 +- .../modules/authority/service/role-service.ts | 13 +- .../authority/service/user-role-service.ts | 4 +- .../modules/authority/service/user-service.ts | 10 +- .../src/modules/auto/auto-init-site.ts | 16 +-- .../src/modules/auto/auto-register-cron.ts | 4 +- .../basic/controller/code-controller.ts | 4 +- .../basic/controller/email-controller.ts | 4 +- .../basic/controller/home-controller.ts | 4 +- .../basic/controller/settings-controller.ts | 8 +- .../modules/basic/service/email-service.ts | 2 +- .../src/modules/basic/service/plus-service.ts | 6 +- .../login/controller/login-controller.ts | 15 +-- .../login/controller/register-controller.ts | 15 +-- .../modules/login/service/login-service.ts | 6 +- .../mine/controller/mine-controller.ts | 4 +- .../controller/user-settings-controller.ts | 4 +- .../mine/service/user-settings-service.ts | 2 +- .../pipeline/controller/access-controller.ts | 6 +- .../controller/dns-provider-controller.ts | 4 +- .../pipeline/controller/handle-controller.ts | 4 +- .../pipeline/controller/history-controller.ts | 11 +- .../controller/pipeline-controller.ts | 6 +- .../pipeline/controller/plugin-controller.ts | 4 +- .../pipeline/service/access-service.ts | 4 +- .../pipeline/service/encrypt-service.ts | 4 +- .../pipeline/service/history-log-service.ts | 2 +- .../pipeline/service/history-service.ts | 4 +- .../pipeline/service/pipeline-service.ts | 6 +- .../pipeline/service/storage-service.ts | 2 +- .../system/controller/plus-controller.ts | 8 +- .../system/controller/site-controller.ts | 55 ++++++++ .../controller/sys-settings-controller.ts | 6 +- .../plugin-host/plugin/copy-to-local/index.ts | 2 +- .../plugin-other/plugins/plugin-script.ts | 2 +- packages/ui/certd-server/src/utils/logger.ts | 12 -- packages/ui/certd-server/src/utils/random.ts | 18 +-- 101 files changed, 936 insertions(+), 223 deletions(-) create mode 100644 packages/libs/lib-server/.dockerignore create mode 100644 packages/libs/lib-server/.editorconfig create mode 100644 packages/libs/lib-server/.eslintrc.json create mode 100644 packages/libs/lib-server/.gitignore create mode 100644 packages/libs/lib-server/.npmignore create mode 100644 packages/libs/lib-server/.prettierrc create mode 100644 packages/libs/lib-server/CHANGELOG.md create mode 100644 packages/libs/lib-server/LICENSE create mode 100644 packages/libs/lib-server/README.md create mode 100644 packages/libs/lib-server/README_zhCN.md create mode 100644 packages/libs/lib-server/jest.config.js create mode 100644 packages/libs/lib-server/ormconfig.json create mode 100644 packages/libs/lib-server/package.json rename packages/{ui/certd-server => libs/lib-server}/src/basic/base-controller.ts (92%) rename packages/{ui/certd-server => libs/lib-server}/src/basic/base-service.ts (97%) rename packages/{ui/certd-server => libs/lib-server}/src/basic/constants.ts (100%) rename packages/{ui/certd-server => libs/lib-server}/src/basic/crud-controller.ts (100%) rename packages/{ui/certd-server => libs/lib-server}/src/basic/enum-item.ts (100%) rename packages/{ui/certd-server => libs/lib-server}/src/basic/exception/auth-exception.ts (100%) rename packages/{ui/certd-server => libs/lib-server}/src/basic/exception/base-exception.ts (100%) rename packages/{ui/certd-server => libs/lib-server}/src/basic/exception/common-exception.ts (100%) create mode 100644 packages/libs/lib-server/src/basic/exception/index.ts rename packages/{ui/certd-server => libs/lib-server}/src/basic/exception/permission-exception.ts (100%) rename packages/{ui/certd-server => libs/lib-server}/src/basic/exception/preview-exception.ts (100%) rename packages/{ui/certd-server => libs/lib-server}/src/basic/exception/validation-exception.ts (100%) rename packages/{ui/certd-server => libs/lib-server}/src/basic/exception/vip-exception.ts (100%) create mode 100644 packages/libs/lib-server/src/basic/index.ts rename packages/{ui/certd-server => libs/lib-server}/src/basic/result.ts (100%) create mode 100644 packages/libs/lib-server/src/configuration.ts create mode 100644 packages/libs/lib-server/src/index.ts create mode 100644 packages/libs/lib-server/src/system/index.ts create mode 100644 packages/libs/lib-server/src/system/settings/entity/sys-settings.ts create mode 100644 packages/libs/lib-server/src/system/settings/index.ts rename packages/{ui/certd-server/src/modules/system => libs/lib-server/src/system/settings}/service/models.ts (99%) rename packages/{ui/certd-server/src/modules/system => libs/lib-server/src/system/settings}/service/sys-settings-service.ts (94%) create mode 100644 packages/libs/lib-server/test.md create mode 100644 packages/libs/lib-server/tsconfig.json create mode 100644 packages/ui/certd-client/src/views/sys/site/api.ts create mode 100644 packages/ui/certd-client/src/views/sys/site/index.vue create mode 100644 packages/ui/certd-server/src/modules/system/controller/site-controller.ts delete mode 100644 packages/ui/certd-server/src/utils/logger.ts diff --git a/docker/run/docker-compose.yaml b/docker/run/docker-compose.yaml index 6cf7926b..02513519 100644 --- a/docker/run/docker-compose.yaml +++ b/docker/run/docker-compose.yaml @@ -30,14 +30,11 @@ services: # ↑↑↑↑↑--------------------------- 如果忘记管理员密码,可以设置为true,重启之后,管理员密码将改成123456,然后请及时修改回false - certd_cron_immediateTriggerOnce=false # ↑↑↑↑↑--------------------------- 如果设置为true,启动后所有配置了cron的流水线任务都将被立即触发一次 - - VITE_APP_ICP_NO= + - certd_site_icp_no= # ↑↑↑↑↑ ----------------------------------------- 这里可以设置备案号 #- certd_koa_key=./data/ssl/cert.key #- certd_koa_cert=./data/ssl/cert.crt # ↑↑↑↑↑ ----------------------------------------- 配置证书和key,则表示https方式启动,使用https协议访问,https://your.domain:7001 # 设置环境变量即可自定义certd配置 - # 服务端配置项见: packages/ui/certd-server/src/config/config.default.ts - # 服务端配置规则: certd_ + 配置项, 点号用_代替 - - # 客户端配置项见: packages/ui/certd-client/.env - # 按实际名称配置环境变量即可,如: VITE_APP_API=http://localhost:7001 + # 配置项见: packages/ui/certd-server/src/config/config.default.ts + # 配置规则: certd_ + 配置项, 点号用_代替 diff --git a/packages/core/acme-client/package.json b/packages/core/acme-client/package.json index 19fb6ad0..8dbc2c92 100644 --- a/packages/core/acme-client/package.json +++ b/packages/core/acme-client/package.json @@ -20,7 +20,7 @@ "asn1js": "^3.0.5", "axios": "^1.7.2", "debug": "^4.3.5", - "https-proxy-agent": "^7.0.4", + "https-proxy-agent": "^7.0.5", "node-forge": "^1.3.1" }, "devDependencies": { diff --git a/packages/core/pipeline/package.json b/packages/core/pipeline/package.json index 1bf3219b..d94a0d4e 100644 --- a/packages/core/pipeline/package.json +++ b/packages/core/pipeline/package.json @@ -17,6 +17,7 @@ "dependencies": { "@certd/basic": "^1.25.9", "@certd/plus-core": "^1.25.9", + "nanoid": "^5.0.7", "axios": "^1.7.2", "fix-path": "^4.0.0", "http-proxy-agent": "^7.0.2", diff --git a/packages/core/pipeline/src/utils/index.ts b/packages/core/pipeline/src/utils/index.ts index da79d8fb..febde694 100644 --- a/packages/core/pipeline/src/utils/index.ts +++ b/packages/core/pipeline/src/utils/index.ts @@ -8,6 +8,7 @@ export * from "./util.promise.js"; export * from "./util.hash.js"; export * from "./util.merge.js"; export * from "./util.cache.js"; +import { nanoid } from "nanoid"; import { mergeUtils } from "./util.merge.js"; import { sp } from "./util.sp.js"; import { hashUtils } from "./util.hash.js"; @@ -25,4 +26,5 @@ export const utils = { _, mergeUtils, cache, + nanoid, }; diff --git a/packages/libs/lib-server/.dockerignore b/packages/libs/lib-server/.dockerignore new file mode 100644 index 00000000..6eb6e80d --- /dev/null +++ b/packages/libs/lib-server/.dockerignore @@ -0,0 +1,16 @@ +logs/ +npm-debug.log +yarn-error.log +node_modules/ +package-lock.json +yarn.lock +coverage/ +!dist/ +.idea/ +run/ +.DS_Store +*.sw* +*.un~ +.tsbuildinfo +.tsbuildinfo.* +/data/db.sqlite diff --git a/packages/libs/lib-server/.editorconfig b/packages/libs/lib-server/.editorconfig new file mode 100644 index 00000000..4c7f8a8e --- /dev/null +++ b/packages/libs/lib-server/.editorconfig @@ -0,0 +1,11 @@ +# 🎨 editorconfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_style = space +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true \ No newline at end of file diff --git a/packages/libs/lib-server/.eslintrc.json b/packages/libs/lib-server/.eslintrc.json new file mode 100644 index 00000000..8d20e22b --- /dev/null +++ b/packages/libs/lib-server/.eslintrc.json @@ -0,0 +1,7 @@ +{ + "extends": "./node_modules/mwts/", + "ignorePatterns": ["node_modules", "dist", "test", "jest.config.js", "typings"], + "env": { + "jest": true + } +} diff --git a/packages/libs/lib-server/.gitignore b/packages/libs/lib-server/.gitignore new file mode 100644 index 00000000..13b1375e --- /dev/null +++ b/packages/libs/lib-server/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +test/user.secret.ts + +tsconfig.tsbuildinfo diff --git a/packages/libs/lib-server/.npmignore b/packages/libs/lib-server/.npmignore new file mode 100644 index 00000000..bf40d278 --- /dev/null +++ b/packages/libs/lib-server/.npmignore @@ -0,0 +1,2 @@ +node_modules +src \ No newline at end of file diff --git a/packages/libs/lib-server/.prettierrc b/packages/libs/lib-server/.prettierrc new file mode 100644 index 00000000..903b313d --- /dev/null +++ b/packages/libs/lib-server/.prettierrc @@ -0,0 +1,7 @@ +{ + "printWidth": 160, + "bracketSpacing": true, + "singleQuote": true, + "trailingComma": "es5", + "arrowParens": "avoid" +} diff --git a/packages/libs/lib-server/CHANGELOG.md b/packages/libs/lib-server/CHANGELOG.md new file mode 100644 index 00000000..16277923 --- /dev/null +++ b/packages/libs/lib-server/CHANGELOG.md @@ -0,0 +1,73 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.25.9](https://github.com/certd/certd/compare/v1.25.8...v1.25.9) (2024-10-01) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.25.8](https://github.com/certd/certd/compare/v1.25.7...v1.25.8) (2024-09-30) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.25.7](https://github.com/certd/certd/compare/v1.25.6...v1.25.7) (2024-09-29) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.25.6](https://github.com/certd/certd/compare/v1.25.5...v1.25.6) (2024-09-29) + +### Performance Improvements + +* 部署支持1Panel ([d047234](https://github.com/certd/certd/commit/d047234d98d31504f2e5a472b66e1b75806af26e)) + +## [1.25.5](https://github.com/certd/certd/compare/v1.25.4...v1.25.5) (2024-09-26) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.25.4](https://github.com/certd/certd/compare/v1.25.3...v1.25.4) (2024-09-25) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.25.3](https://github.com/certd/certd/compare/v1.25.2...v1.25.3) (2024-09-24) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.25.2](https://github.com/certd/certd/compare/v1.25.1...v1.25.2) (2024-09-24) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.25.1](https://github.com/certd/certd/compare/v1.25.0...v1.25.1) (2024-09-24) + +**Note:** Version bump only for package @certd/midway-flyway-js + +# [1.25.0](https://github.com/certd/certd/compare/v1.24.4...v1.25.0) (2024-09-24) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.24.4](https://github.com/certd/certd/compare/v1.24.3...v1.24.4) (2024-09-09) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.22.6](https://github.com/certd/certd/compare/v1.22.5...v1.22.6) (2024-08-03) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.22.3](https://github.com/certd/certd/compare/v1.22.2...v1.22.3) (2024-07-25) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.22.2](https://github.com/certd/certd/compare/v1.22.1...v1.22.2) (2024-07-23) + +**Note:** Version bump only for package @certd/midway-flyway-js + +## [1.22.1](https://github.com/certd/certd/compare/v1.22.0...v1.22.1) (2024-07-20) + +**Note:** Version bump only for package @certd/midway-flyway-js + +# [1.22.0](https://github.com/certd/certd/compare/v1.21.2...v1.22.0) (2024-07-19) + +### Features + +* 升级midway,支持esm ([485e603](https://github.com/certd/certd/commit/485e603b5165c28bc08694997726eaf2a585ebe7)) +* 支持postgresql ([3b19bfb](https://github.com/certd/certd/commit/3b19bfb4291e89064b3b407a80dae092d54747d5)) diff --git a/packages/libs/lib-server/LICENSE b/packages/libs/lib-server/LICENSE new file mode 100644 index 00000000..3efeb98f --- /dev/null +++ b/packages/libs/lib-server/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Greper + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/libs/lib-server/README.md b/packages/libs/lib-server/README.md new file mode 100644 index 00000000..30b15e21 --- /dev/null +++ b/packages/libs/lib-server/README.md @@ -0,0 +1,16 @@ +# Vue 3 + TypeScript + Vite + +This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` + + diff --git a/packages/ui/certd-server/.env.development.yaml b/packages/ui/certd-server/.env.development.yaml index 0db333ae..6b741fec 100644 --- a/packages/ui/certd-server/.env.development.yaml +++ b/packages/ui/certd-server/.env.development.yaml @@ -17,21 +17,23 @@ # password: root # database: postgres -typeorm: - dataSource: - default: - database: './data/db-comm.sqlite' -#plus: -# server: -# baseUrls: ['https://api.ai.handsfree.work', 'https://api.ai.docmirror.cn'] +#typeorm: +# dataSource: +# default: +# database: './data/db-comm.sqlite' plus: server: - baseUrls: ['http://127.0.0.1:11007'] + baseUrls: ['https://api.ai.handsfree.work', 'https://api.ai.docmirror.cn'] account: server: - baseUrl: 'http://127.0.0.1:1017/subject' + baseUrl: 'https://ai.handsfree.work/subject' + +#plus: +# server: +# baseUrls: ['http://127.0.0.1:11007'] +# #account: # server: -# baseUrl: 'https://ai.handsfree.work/subject' +# baseUrl: 'http://127.0.0.1:1017/subject' diff --git a/packages/ui/certd-server/app.js b/packages/ui/certd-server/app.js index 3892b013..63c18570 100644 --- a/packages/ui/certd-server/app.js +++ b/packages/ui/certd-server/app.js @@ -5,7 +5,7 @@ const { Bootstrap } = require('@midwayjs/bootstrap'); const DirectoryFileDetector = require('@midwayjs/core').DirectoryFileDetector; const baseDir = process.cwd(); -const pipelineDir = baseDir + './node_modules/@certd/pipeline'; +const pipelineDir = baseDir + './node_modules/@certd/pipeline/dist'; const customFileDetector = new DirectoryFileDetector({ loadDir: [baseDir, pipelineDir], }); diff --git a/packages/ui/certd-server/package.json b/packages/ui/certd-server/package.json index cd5bc43a..a9a4b100 100644 --- a/packages/ui/certd-server/package.json +++ b/packages/ui/certd-server/package.json @@ -24,6 +24,7 @@ "@alicloud/pop-core": "^1.7.10", "@certd/acme-client": "^1.25.9", "@certd/lib-huawei": "^1.25.9", + "@certd/lib-server": "^1.25.9", "@certd/commercial-core": "^1.25.9", "@certd/lib-jdcloud": "^1.25.9", "@certd/lib-k8s": "^1.25.9", @@ -64,7 +65,7 @@ "lru-cache": "^10.2.0", "md5": "^2.3.0", "mwtsc": "^1.4.0", - "nanoid": "^4.0.0", + "nanoid": "^5.0.7", "nodemailer": "^6.9.3", "pg": "^8.12.0", "qiniu": "^7.12.0", diff --git a/packages/ui/certd-server/src/config/config.default.ts b/packages/ui/certd-server/src/config/config.default.ts index 7d6be59d..47271b2a 100644 --- a/packages/ui/certd-server/src/config/config.default.ts +++ b/packages/ui/certd-server/src/config/config.default.ts @@ -12,6 +12,8 @@ import { PipelineEntity } from '../modules/pipeline/entity/pipeline.js'; //import { logger } from '../utils/logger'; // load .env file in process.cwd import { mergeConfig } from './loader.js'; +import { libServerEntities } from '@certd/lib-server'; +import { commercialEntities } from '@certd/commercial-core'; const env = process.env.NODE_ENV || 'development'; @@ -63,7 +65,7 @@ const development = { logging: false, // 配置实体模型 或者 entities: '/entity', - entities: ['**/modules/*/entity/*.ts', '**/entity/*.js', '**/entity/*.d.ts', PipelineEntity, FlywayHistory, UserEntity], + entities: ['**/modules/*/entity/*.js', ...libServerEntities, ...commercialEntities, PipelineEntity, FlywayHistory, UserEntity], }, }, }, diff --git a/packages/ui/certd-server/src/config/loader.ts b/packages/ui/certd-server/src/config/loader.ts index 4f872163..88f61465 100644 --- a/packages/ui/certd-server/src/config/loader.ts +++ b/packages/ui/certd-server/src/config/loader.ts @@ -2,7 +2,7 @@ import path from 'path'; import * as _ from 'lodash-es'; import yaml from 'js-yaml'; import fs from 'fs'; -import { logger } from '../utils/logger.js'; +import { logger } from '@certd/pipeline'; function parseEnv(defaultConfig: any) { const config = {}; diff --git a/packages/ui/certd-server/src/configuration.ts b/packages/ui/certd-server/src/configuration.ts index e033fe36..949fbe2e 100644 --- a/packages/ui/certd-server/src/configuration.ts +++ b/packages/ui/certd-server/src/configuration.ts @@ -11,10 +11,11 @@ import cors from '@koa/cors'; import { GlobalExceptionMiddleware } from './middleware/global-exception.js'; import { PreviewMiddleware } from './middleware/preview.js'; import { AuthorityMiddleware } from './middleware/authority.js'; -import { logger } from './utils/logger.js'; +import { logger } from '@certd/pipeline'; import { ResetPasswdMiddleware } from './middleware/reset-passwd/middleware.js'; import DefaultConfig from './config/config.default.js'; - +import * as libServer from '@certd/lib-server'; +import * as commercial from '@certd/commercial-core'; process.on('uncaughtException', error => { console.error('未捕获的异常:', error); // 在这里可以添加日志记录、发送错误通知等操作 @@ -33,6 +34,8 @@ process.on('uncaughtException', error => { component: info, enabledEnvironment: ['local'], }, + libServer, + commercial, ], importConfigs: [ { diff --git a/packages/ui/certd-server/src/middleware/authority.ts b/packages/ui/certd-server/src/middleware/authority.ts index f4fefde4..988fb942 100644 --- a/packages/ui/certd-server/src/middleware/authority.ts +++ b/packages/ui/certd-server/src/middleware/authority.ts @@ -1,11 +1,11 @@ import { Init, Inject, MidwayWebRouterService, Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { IMidwayKoaContext, IWebMiddleware, NextFunction } from '@midwayjs/koa'; import jwt from 'jsonwebtoken'; -import { Constants } from '../basic/constants.js'; -import { logger } from '../utils/logger.js'; +import { Constants } from '@certd/lib-server'; +import { logger } from '@certd/pipeline'; import { AuthService } from '../modules/authority/service/auth-service.js'; -import { SysSettingsService } from '../modules/system/service/sys-settings-service.js'; -import { SysPrivateSettings } from '../modules/system/service/models.js'; +import { SysSettingsService } from '@certd/lib-server'; +import { SysPrivateSettings } from '@certd/lib-server'; /** * 权限校验 diff --git a/packages/ui/certd-server/src/middleware/global-exception.ts b/packages/ui/certd-server/src/middleware/global-exception.ts index 01d67cef..4508829e 100644 --- a/packages/ui/certd-server/src/middleware/global-exception.ts +++ b/packages/ui/certd-server/src/middleware/global-exception.ts @@ -1,7 +1,7 @@ import { Provide } from '@midwayjs/core'; import { IWebMiddleware, IMidwayKoaContext, NextFunction } from '@midwayjs/koa'; -import { logger } from '../utils/logger.js'; -import { Result } from '../basic/result.js'; +import { logger } from '@certd/pipeline'; +import { Result } from '@certd/lib-server'; @Provide() export class GlobalExceptionMiddleware implements IWebMiddleware { diff --git a/packages/ui/certd-server/src/middleware/preview.ts b/packages/ui/certd-server/src/middleware/preview.ts index 1f6eca1e..847ba900 100644 --- a/packages/ui/certd-server/src/middleware/preview.ts +++ b/packages/ui/certd-server/src/middleware/preview.ts @@ -1,6 +1,6 @@ import { Config, Provide } from '@midwayjs/core'; import { IMidwayKoaContext, NextFunction, IWebMiddleware } from '@midwayjs/koa'; -import { PreviewException } from '../basic/exception/preview-exception.js'; +import { PreviewException } from '@certd/lib-server'; /** * 预览模式 @@ -30,15 +30,10 @@ export class PreviewMiddleware implements IWebMiddleware { if (url.indexOf('?') !== -1) { url = url.substring(0, url.indexOf('?')); } - const isModify = - url.endsWith('update') || - url.endsWith('delete') || - url.endsWith('authz'); + const isModify = url.endsWith('update') || url.endsWith('delete') || url.endsWith('authz'); const isPreviewId = id < 1000; if (this.preview && isModify && isPreviewId) { - throw new PreviewException( - '对不起,预览环境不允许修改此数据,如需体验请添加新数据' - ); + throw new PreviewException('对不起,预览环境不允许修改此数据,如需体验请添加新数据'); } await next(); return; diff --git a/packages/ui/certd-server/src/middleware/reset-passwd/middleware.ts b/packages/ui/certd-server/src/middleware/reset-passwd/middleware.ts index d2cdbc16..421b94b2 100644 --- a/packages/ui/certd-server/src/middleware/reset-passwd/middleware.ts +++ b/packages/ui/certd-server/src/middleware/reset-passwd/middleware.ts @@ -1,16 +1,8 @@ -import { - Autoload, - Config, - Init, - Inject, - Provide, - Scope, - ScopeEnum, -} from '@midwayjs/core'; +import { Autoload, Config, Init, Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { IMidwayKoaContext, IWebMiddleware, NextFunction } from '@midwayjs/koa'; -import { CommonException } from '../../basic/exception/common-exception.js'; +import { CommonException } from '@certd/lib-server'; import { UserService } from '../../modules/authority/service/user-service.js'; -import { logger } from '../../utils/logger.js'; +import { logger } from '@certd/pipeline'; /** * 重置密码模式 @@ -26,9 +18,7 @@ export class ResetPasswdMiddleware implements IWebMiddleware { resolve() { return async (ctx: IMidwayKoaContext, next: NextFunction) => { if (this.resetAdminPasswd === true) { - throw new CommonException( - '1号管理员密码已修改为123456,当前为重置密码模式,无法响应请求,请关闭重置密码模式恢复正常服务' - ); + throw new CommonException('1号管理员密码已修改为123456,当前为重置密码模式,无法响应请求,请关闭重置密码模式恢复正常服务'); } await next(); }; diff --git a/packages/ui/certd-server/src/modules/account/account-controller.ts b/packages/ui/certd-server/src/modules/account/account-controller.ts index 8a328b10..d01291e9 100644 --- a/packages/ui/certd-server/src/modules/account/account-controller.ts +++ b/packages/ui/certd-server/src/modules/account/account-controller.ts @@ -1,9 +1,9 @@ import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; -import { BaseController } from '../../basic/base-controller.js'; +import { BaseController } from '@certd/lib-server'; import { PlusService } from '../basic/service/plus-service.js'; import { AppKey } from '@certd/pipeline'; -import { SysSettingsService } from '../system/service/sys-settings-service.js'; -import { SysInstallInfo } from '../system/service/models.js'; +import { SysSettingsService } from '@certd/lib-server'; +import { SysInstallInfo } from '@certd/lib-server'; export type PreBindUserReq = { userId: number; diff --git a/packages/ui/certd-server/src/modules/authority/controller/permission-controller.ts b/packages/ui/certd-server/src/modules/authority/controller/permission-controller.ts index aa56ff20..21b1c664 100644 --- a/packages/ui/certd-server/src/modules/authority/controller/permission-controller.ts +++ b/packages/ui/certd-server/src/modules/authority/controller/permission-controller.ts @@ -1,5 +1,5 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; -import { CrudController } from '../../../basic/crud-controller.js'; +import { CrudController } from '@certd/lib-server'; import { PermissionService } from '../service/permission-service.js'; /** diff --git a/packages/ui/certd-server/src/modules/authority/controller/role-controller.ts b/packages/ui/certd-server/src/modules/authority/controller/role-controller.ts index a6bd8c67..09df604c 100644 --- a/packages/ui/certd-server/src/modules/authority/controller/role-controller.ts +++ b/packages/ui/certd-server/src/modules/authority/controller/role-controller.ts @@ -1,5 +1,5 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; -import { CrudController } from '../../../basic/crud-controller.js'; +import { CrudController } from '@certd/lib-server'; import { RoleService } from '../service/role-service.js'; /** diff --git a/packages/ui/certd-server/src/modules/authority/controller/user-controller.ts b/packages/ui/certd-server/src/modules/authority/controller/user-controller.ts index dc710cc7..563da24b 100644 --- a/packages/ui/certd-server/src/modules/authority/controller/user-controller.ts +++ b/packages/ui/certd-server/src/modules/authority/controller/user-controller.ts @@ -1,9 +1,9 @@ import { Provide, Controller, Post, Inject, Body, Query, ALL } from '@midwayjs/core'; import { UserService } from '../service/user-service.js'; -import { CrudController } from '../../../basic/crud-controller.js'; +import { CrudController } from '@certd/lib-server'; import { RoleService } from '../service/role-service.js'; import { PermissionService } from '../service/permission-service.js'; -import { Constants } from '../../../basic/constants.js'; +import { Constants } from '@certd/lib-server'; /** * 系统用户 diff --git a/packages/ui/certd-server/src/modules/authority/enums/ResourceTypeEnum.ts b/packages/ui/certd-server/src/modules/authority/enums/ResourceTypeEnum.ts index 151b5830..8067a520 100644 --- a/packages/ui/certd-server/src/modules/authority/enums/ResourceTypeEnum.ts +++ b/packages/ui/certd-server/src/modules/authority/enums/ResourceTypeEnum.ts @@ -1,4 +1,4 @@ -import { EnumItem } from '../../../basic/enum-item.js'; +import { EnumItem } from '@certd/lib-server'; import * as _ from 'lodash-es'; class ResourceTypes { MENU = new EnumItem('menu', '菜单', 'blue'); diff --git a/packages/ui/certd-server/src/modules/authority/service/auth-service.ts b/packages/ui/certd-server/src/modules/authority/service/auth-service.ts index 724a8853..e29b8cce 100644 --- a/packages/ui/certd-server/src/modules/authority/service/auth-service.ts +++ b/packages/ui/certd-server/src/modules/authority/service/auth-service.ts @@ -1,6 +1,6 @@ import { Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { RoleService } from './role-service.js'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; /** * 权限校验 diff --git a/packages/ui/certd-server/src/modules/authority/service/permission-service.ts b/packages/ui/certd-server/src/modules/authority/service/permission-service.ts index 0b6262a1..57ecf587 100644 --- a/packages/ui/certd-server/src/modules/authority/service/permission-service.ts +++ b/packages/ui/certd-server/src/modules/authority/service/permission-service.ts @@ -1,7 +1,7 @@ import { Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { Repository } from 'typeorm'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; import { PermissionEntity } from '../entity/permission.js'; /** diff --git a/packages/ui/certd-server/src/modules/authority/service/role-permission-service.ts b/packages/ui/certd-server/src/modules/authority/service/role-permission-service.ts index ee345ab6..3f5fb156 100644 --- a/packages/ui/certd-server/src/modules/authority/service/role-permission-service.ts +++ b/packages/ui/certd-server/src/modules/authority/service/role-permission-service.ts @@ -1,7 +1,7 @@ import { Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { Repository } from 'typeorm'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; import { RolePermissionEntity } from '../entity/role-permission.js'; /** diff --git a/packages/ui/certd-server/src/modules/authority/service/role-service.ts b/packages/ui/certd-server/src/modules/authority/service/role-service.ts index 0aba7387..79dc697e 100644 --- a/packages/ui/certd-server/src/modules/authority/service/role-service.ts +++ b/packages/ui/certd-server/src/modules/authority/service/role-service.ts @@ -1,7 +1,7 @@ import { Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { In, Repository } from 'typeorm'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; import { RoleEntity } from '../entity/role.js'; import { UserRoleService } from './user-role-service.js'; import { RolePermissionEntity } from '../entity/role-permission.js'; @@ -50,12 +50,7 @@ export class RoleService extends BaseService { async getPermissionByRoleIds(roleIds: any) { return await this.permissionService.repository .createQueryBuilder('permission') - .innerJoinAndSelect( - RolePermissionEntity, - 'rp', - 'rp.permissionId = permission.id and rp.roleId in (:...roleIds)', - { roleIds } - ) + .innerJoinAndSelect(RolePermissionEntity, 'rp', 'rp.permissionId = permission.id and rp.roleId in (:...roleIds)', { roleIds }) .getMany(); } @@ -119,9 +114,7 @@ export class RoleService extends BaseService { return permissionSet; } - async getCachedPermissionSetByRoleIds( - roleIds: number[] - ): Promise> { + async getCachedPermissionSetByRoleIds(roleIds: number[]): Promise> { const roleIdsKey = roleIds.join(','); let permissionSet = this.permissionCache.get(roleIdsKey); if (permissionSet) { diff --git a/packages/ui/certd-server/src/modules/authority/service/user-role-service.ts b/packages/ui/certd-server/src/modules/authority/service/user-role-service.ts index 54ef4ea6..d54f5ab6 100644 --- a/packages/ui/certd-server/src/modules/authority/service/user-role-service.ts +++ b/packages/ui/certd-server/src/modules/authority/service/user-role-service.ts @@ -1,7 +1,7 @@ import { Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { Repository } from 'typeorm'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; import { UserRoleEntity } from '../entity/user-role.js'; /** @@ -16,6 +16,4 @@ export class UserRoleService extends BaseService { getRepository() { return this.repository; } - - } diff --git a/packages/ui/certd-server/src/modules/authority/service/user-service.ts b/packages/ui/certd-server/src/modules/authority/service/user-service.ts index fcd08ea9..ad2750b1 100644 --- a/packages/ui/certd-server/src/modules/authority/service/user-service.ts +++ b/packages/ui/certd-server/src/modules/authority/service/user-service.ts @@ -4,16 +4,16 @@ import { Repository } from 'typeorm'; import { UserEntity } from '../entity/user.js'; import * as _ from 'lodash-es'; import md5 from 'md5'; -import { CommonException } from '../../../basic/exception/common-exception.js'; -import { BaseService } from '../../../basic/base-service.js'; +import { CommonException } from '@certd/lib-server'; +import { BaseService } from '@certd/lib-server'; import { RoleService } from './role-service.js'; import { PermissionService } from './permission-service.js'; import { UserRoleService } from './user-role-service.js'; -import { Constants } from '../../../basic/constants.js'; +import { Constants } from '@certd/lib-server'; import { UserRoleEntity } from '../entity/user-role.js'; import bcrypt from 'bcryptjs'; -import { SysSettingsService } from '../../system/service/sys-settings-service.js'; -import { SysInstallInfo } from '../../system/service/models.js'; +import { SysSettingsService } from '@certd/lib-server'; +import { SysInstallInfo } from '@certd/lib-server'; import { RandomUtil } from '../../../utils/random.js'; /** diff --git a/packages/ui/certd-server/src/modules/auto/auto-init-site.ts b/packages/ui/certd-server/src/modules/auto/auto-init-site.ts index 58e30da7..915de0b8 100644 --- a/packages/ui/certd-server/src/modules/auto/auto-init-site.ts +++ b/packages/ui/certd-server/src/modules/auto/auto-init-site.ts @@ -1,12 +1,11 @@ import { Autoload, Config, Init, Inject, Scope, ScopeEnum } from '@midwayjs/core'; -import { logger } from '../../utils/logger.js'; +import { logger } from '@certd/pipeline'; import { UserService } from '../authority/service/user-service.js'; -import { SysSettingsService } from '../system/service/sys-settings-service.js'; +import { SysSettingsService } from '@certd/lib-server'; import { nanoid } from 'nanoid'; -import { SysInstallInfo, SysPrivateSettings } from '../system/service/models.js'; +import { SysInstallInfo, SysPrivateSettings } from '@certd/lib-server'; import crypto from 'crypto'; import { PlusService } from '../basic/service/plus-service.js'; -import { isComm } from '@certd/plus-core'; export type InstallInfo = { installTime: number; @@ -58,15 +57,6 @@ export class AutoInitSite { // 授权许可 await this.plusService.verify(); - if (isComm()) { - //加载商业版代码 - try { - await import('@certd/commercial-core'); - } catch (e) { - logger.error('加载商业版代码失败,请尝试升级版本', e); - } - } - logger.info('初始化站点完成'); } diff --git a/packages/ui/certd-server/src/modules/auto/auto-register-cron.ts b/packages/ui/certd-server/src/modules/auto/auto-register-cron.ts index 2ecdea04..16cd2aaf 100644 --- a/packages/ui/certd-server/src/modules/auto/auto-register-cron.ts +++ b/packages/ui/certd-server/src/modules/auto/auto-register-cron.ts @@ -1,7 +1,7 @@ import { Autoload, Config, Init, Inject, Scope, ScopeEnum } from '@midwayjs/core'; import { PipelineService } from '../pipeline/service/pipeline-service.js'; -import { logger } from '../../utils/logger.js'; -import { SysSettingsService } from '../system/service/sys-settings-service.js'; +import { logger } from '@certd/pipeline'; +import { SysSettingsService } from '@certd/lib-server'; @Autoload() @Scope(ScopeEnum.Singleton) diff --git a/packages/ui/certd-server/src/modules/basic/controller/code-controller.ts b/packages/ui/certd-server/src/modules/basic/controller/code-controller.ts index 4b5e0073..b2742525 100644 --- a/packages/ui/certd-server/src/modules/basic/controller/code-controller.ts +++ b/packages/ui/certd-server/src/modules/basic/controller/code-controller.ts @@ -2,10 +2,10 @@ import { Rule, RuleType } from '@midwayjs/validate'; import { ALL, Inject } from '@midwayjs/core'; import { Body } from '@midwayjs/core'; import { Controller, Post, Provide } from '@midwayjs/core'; -import { BaseController } from '../../../basic/base-controller.js'; +import { BaseController } from '@certd/lib-server'; import { CodeService } from '../service/code-service.js'; import { EmailService } from '../service/email-service.js'; -import { Constants } from '../../../basic/constants.js'; +import { Constants } from '@certd/lib-server'; export class SmsCodeReq { @Rule(RuleType.number().required()) phoneCode: number; diff --git a/packages/ui/certd-server/src/modules/basic/controller/email-controller.ts b/packages/ui/certd-server/src/modules/basic/controller/email-controller.ts index c99ca734..801cabe4 100644 --- a/packages/ui/certd-server/src/modules/basic/controller/email-controller.ts +++ b/packages/ui/certd-server/src/modules/basic/controller/email-controller.ts @@ -1,7 +1,7 @@ import { Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; -import { BaseController } from '../../../basic/base-controller.js'; +import { BaseController } from '@certd/lib-server'; import { EmailService } from '../service/email-service.js'; -import { Constants } from '../../../basic/constants.js'; +import { Constants } from '@certd/lib-server'; /** */ diff --git a/packages/ui/certd-server/src/modules/basic/controller/home-controller.ts b/packages/ui/certd-server/src/modules/basic/controller/home-controller.ts index bd1fcf61..e74723f7 100644 --- a/packages/ui/certd-server/src/modules/basic/controller/home-controller.ts +++ b/packages/ui/certd-server/src/modules/basic/controller/home-controller.ts @@ -1,7 +1,7 @@ import { MidwayEnvironmentService } from '@midwayjs/core'; import { Controller, Get, Inject, Provide } from '@midwayjs/core'; -import { logger } from '../../../utils/logger.js'; -import { Constants } from '../../../basic/constants.js'; +import { logger } from '@certd/pipeline'; +import { Constants } from '@certd/lib-server'; @Provide() @Controller('/home') diff --git a/packages/ui/certd-server/src/modules/basic/controller/settings-controller.ts b/packages/ui/certd-server/src/modules/basic/controller/settings-controller.ts index 14eb66b3..d805114c 100644 --- a/packages/ui/certd-server/src/modules/basic/controller/settings-controller.ts +++ b/packages/ui/certd-server/src/modules/basic/controller/settings-controller.ts @@ -1,8 +1,8 @@ import { Config, Controller, Get, Inject, Provide } from '@midwayjs/core'; -import { BaseController } from '../../../basic/base-controller.js'; -import { Constants } from '../../../basic/constants.js'; -import { SysSettingsService } from '../../system/service/sys-settings-service.js'; -import { SysInstallInfo, SysPublicSettings, SysSiteInfo } from '../../system/service/models.js'; +import { BaseController } from '@certd/lib-server'; +import { Constants } from '@certd/lib-server'; +import { SysSettingsService } from '@certd/lib-server'; +import { SysInstallInfo, SysPublicSettings, SysSiteInfo } from '@certd/lib-server'; import { AppKey } from '@certd/pipeline'; /** diff --git a/packages/ui/certd-server/src/modules/basic/service/email-service.ts b/packages/ui/certd-server/src/modules/basic/service/email-service.ts index e38008ba..bafa5cde 100644 --- a/packages/ui/certd-server/src/modules/basic/service/email-service.ts +++ b/packages/ui/certd-server/src/modules/basic/service/email-service.ts @@ -3,7 +3,7 @@ import type { EmailSend } from '@certd/pipeline'; import { IEmailService, isPlus } from '@certd/pipeline'; import nodemailer from 'nodemailer'; import type SMTPConnection from 'nodemailer/lib/smtp-connection'; -import { logger } from '../../../utils/logger.js'; +import { logger } from '@certd/pipeline'; import { UserSettingsService } from '../../mine/service/user-settings-service.js'; import { PlusService } from './plus-service.js'; diff --git a/packages/ui/certd-server/src/modules/basic/service/plus-service.ts b/packages/ui/certd-server/src/modules/basic/service/plus-service.ts index 14164124..cae5ba00 100644 --- a/packages/ui/certd-server/src/modules/basic/service/plus-service.ts +++ b/packages/ui/certd-server/src/modules/basic/service/plus-service.ts @@ -1,8 +1,8 @@ import { Config, Init, Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core'; -import { SysSettingsService } from '../../system/service/sys-settings-service.js'; -import { SysInstallInfo, SysLicenseInfo } from '../../system/service/models.js'; +import { SysSettingsService } from '@certd/lib-server'; +import { SysInstallInfo, SysLicenseInfo } from '@certd/lib-server'; import { AppKey, http, PlusRequestService, verify } from '@certd/pipeline'; -import { logger } from '../../../utils/logger.js'; +import { logger } from '@certd/pipeline'; @Provide() @Scope(ScopeEnum.Singleton) diff --git a/packages/ui/certd-server/src/modules/login/controller/login-controller.ts b/packages/ui/certd-server/src/modules/login/controller/login-controller.ts index de09384a..b6e86a51 100644 --- a/packages/ui/certd-server/src/modules/login/controller/login-controller.ts +++ b/packages/ui/certd-server/src/modules/login/controller/login-controller.ts @@ -1,14 +1,7 @@ -import { - Body, - Controller, - Inject, - Post, - Provide, - ALL, -} from '@midwayjs/core'; +import { Body, Controller, Inject, Post, Provide, ALL } from '@midwayjs/core'; import { LoginService } from '../service/login-service.js'; -import { BaseController } from '../../../basic/base-controller.js'; -import { Constants } from '../../../basic/constants.js'; +import { BaseController } from '@certd/lib-server'; +import { Constants } from '@certd/lib-server'; /** */ @@ -20,7 +13,7 @@ export class LoginController extends BaseController { @Post('/login', { summary: Constants.per.guest }) public async login( @Body(ALL) - user + user: any ) { const token = await this.loginService.login(user); diff --git a/packages/ui/certd-server/src/modules/login/controller/register-controller.ts b/packages/ui/certd-server/src/modules/login/controller/register-controller.ts index 152a07e6..e0f092cf 100644 --- a/packages/ui/certd-server/src/modules/login/controller/register-controller.ts +++ b/packages/ui/certd-server/src/modules/login/controller/register-controller.ts @@ -1,16 +1,9 @@ -import { - ALL, - Body, - Controller, - Inject, - Post, - Provide, -} from '@midwayjs/core'; -import { BaseController } from '../../../basic/base-controller.js'; -import { Constants } from '../../../basic/constants.js'; +import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; +import { BaseController } from '@certd/lib-server'; +import { Constants } from '@certd/lib-server'; import { UserService } from '../../authority/service/user-service.js'; import { UserEntity } from '../../authority/entity/user.js'; -import { SysSettingsService } from '../../system/service/sys-settings-service.js'; +import { SysSettingsService } from '@certd/lib-server'; /** */ diff --git a/packages/ui/certd-server/src/modules/login/service/login-service.ts b/packages/ui/certd-server/src/modules/login/service/login-service.ts index 722677ac..9212714f 100644 --- a/packages/ui/certd-server/src/modules/login/service/login-service.ts +++ b/packages/ui/certd-server/src/modules/login/service/login-service.ts @@ -1,11 +1,11 @@ import { Config, Inject, Provide } from '@midwayjs/core'; import { UserService } from '../../authority/service/user-service.js'; import jwt from 'jsonwebtoken'; -import { CommonException } from '../../../basic/exception/common-exception.js'; +import { CommonException } from '@certd/lib-server'; import { RoleService } from '../../authority/service/role-service.js'; import { UserEntity } from '../../authority/entity/user.js'; -import { SysSettingsService } from '../../system/service/sys-settings-service.js'; -import { SysPrivateSettings } from '../../system/service/models.js'; +import { SysSettingsService } from '@certd/lib-server'; +import { SysPrivateSettings } from '@certd/lib-server'; /** * 系统用户 diff --git a/packages/ui/certd-server/src/modules/mine/controller/mine-controller.ts b/packages/ui/certd-server/src/modules/mine/controller/mine-controller.ts index 80345693..831c86b9 100644 --- a/packages/ui/certd-server/src/modules/mine/controller/mine-controller.ts +++ b/packages/ui/certd-server/src/modules/mine/controller/mine-controller.ts @@ -1,6 +1,6 @@ import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; -import { BaseController } from '../../../basic/base-controller.js'; -import { Constants } from '../../../basic/constants.js'; +import { BaseController } from '@certd/lib-server'; +import { Constants } from '@certd/lib-server'; import { UserService } from '../../authority/service/user-service.js'; import { getPlusInfo } from '@certd/pipeline'; import { RoleService } from '../../authority/service/role-service.js'; diff --git a/packages/ui/certd-server/src/modules/mine/controller/user-settings-controller.ts b/packages/ui/certd-server/src/modules/mine/controller/user-settings-controller.ts index a2798e1f..569e1d12 100644 --- a/packages/ui/certd-server/src/modules/mine/controller/user-settings-controller.ts +++ b/packages/ui/certd-server/src/modules/mine/controller/user-settings-controller.ts @@ -7,8 +7,8 @@ import { Provide, Query, } from '@midwayjs/core'; -import { CrudController } from '../../../basic/crud-controller.js'; -import { Constants } from '../../../basic/constants.js'; +import { CrudController } from '@certd/lib-server'; +import { Constants } from '@certd/lib-server'; import { UserSettingsService } from '../service/user-settings-service.js'; import { UserSettingsEntity } from '../entity/user-settings.js'; diff --git a/packages/ui/certd-server/src/modules/mine/service/user-settings-service.ts b/packages/ui/certd-server/src/modules/mine/service/user-settings-service.ts index b74ddec1..26ebaa29 100644 --- a/packages/ui/certd-server/src/modules/mine/service/user-settings-service.ts +++ b/packages/ui/certd-server/src/modules/mine/service/user-settings-service.ts @@ -1,7 +1,7 @@ import { Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { Repository } from 'typeorm'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; import { UserSettingsEntity } from '../entity/user-settings.js'; /** diff --git a/packages/ui/certd-server/src/modules/pipeline/controller/access-controller.ts b/packages/ui/certd-server/src/modules/pipeline/controller/access-controller.ts index df15c041..b80db726 100644 --- a/packages/ui/certd-server/src/modules/pipeline/controller/access-controller.ts +++ b/packages/ui/certd-server/src/modules/pipeline/controller/access-controller.ts @@ -1,7 +1,7 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; -import { CrudController } from '../../../basic/crud-controller.js'; +import { CrudController } from '@certd/lib-server'; import { AccessService } from '../service/access-service.js'; -import { Constants } from '../../../basic/constants.js'; +import { Constants } from '@certd/lib-server'; /** * 授权 @@ -12,7 +12,7 @@ export class AccessController extends CrudController { @Inject() service: AccessService; - getService() { + getService(): AccessService { return this.service; } diff --git a/packages/ui/certd-server/src/modules/pipeline/controller/dns-provider-controller.ts b/packages/ui/certd-server/src/modules/pipeline/controller/dns-provider-controller.ts index 886ce4cd..e5a6e8b4 100644 --- a/packages/ui/certd-server/src/modules/pipeline/controller/dns-provider-controller.ts +++ b/packages/ui/certd-server/src/modules/pipeline/controller/dns-provider-controller.ts @@ -1,7 +1,7 @@ import { ALL, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; import { DnsProviderService } from '../service/dns-provider-service.js'; -import { BaseController } from '../../../basic/base-controller.js'; -import { Constants } from '../../../basic/constants.js'; +import { BaseController } from '@certd/lib-server'; +import { Constants } from '@certd/lib-server'; /** * 插件 diff --git a/packages/ui/certd-server/src/modules/pipeline/controller/handle-controller.ts b/packages/ui/certd-server/src/modules/pipeline/controller/handle-controller.ts index 4a06d556..42746e09 100644 --- a/packages/ui/certd-server/src/modules/pipeline/controller/handle-controller.ts +++ b/packages/ui/certd-server/src/modules/pipeline/controller/handle-controller.ts @@ -1,5 +1,5 @@ import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; -import { Constants } from '../../../basic/constants.js'; +import { Constants } from '@certd/lib-server'; import { AccessRequestHandleReq, http, @@ -12,7 +12,7 @@ import { TaskInstanceContext, utils, } from '@certd/pipeline'; -import { BaseController } from '../../../basic/base-controller.js'; +import { BaseController } from '@certd/lib-server'; import { AccessService } from '../service/access-service.js'; import { EmailService } from '../../basic/service/email-service.js'; diff --git a/packages/ui/certd-server/src/modules/pipeline/controller/history-controller.ts b/packages/ui/certd-server/src/modules/pipeline/controller/history-controller.ts index c26e8583..ce282d42 100644 --- a/packages/ui/certd-server/src/modules/pipeline/controller/history-controller.ts +++ b/packages/ui/certd-server/src/modules/pipeline/controller/history-controller.ts @@ -1,18 +1,15 @@ import { ALL, Body, Controller, Get, Inject, Post, Provide, Query } from '@midwayjs/core'; -import { CrudController } from '../../../basic/crud-controller.js'; +import { CommonException, Constants, CrudController, PermissionException } from '@certd/lib-server'; import { PipelineEntity } from '../entity/pipeline.js'; import { HistoryService } from '../service/history-service.js'; import { HistoryLogService } from '../service/history-log-service.js'; import { HistoryEntity } from '../entity/history.js'; import { HistoryLogEntity } from '../entity/history-log.js'; -import { Constants } from '../../../basic/constants.js'; import { PipelineService } from '../service/pipeline-service.js'; -import { CommonException } from '../../../basic/exception/common-exception.js'; -import { PermissionException } from '../../../basic/exception/permission-exception.js'; import * as fs from 'fs'; -import { logger } from '../../../utils/logger.js'; +import { logger } from '@certd/pipeline'; import { AuthService } from '../../authority/service/auth-service.js'; -import { SysSettingsService } from '../../system/service/sys-settings-service.js'; +import { SysSettingsService } from '@certd/lib-server'; /** * 证书 @@ -33,7 +30,7 @@ export class HistoryController extends CrudController { @Inject() sysSettingsService: SysSettingsService; - getService() { + getService(): HistoryService { return this.service; } diff --git a/packages/ui/certd-server/src/modules/pipeline/controller/pipeline-controller.ts b/packages/ui/certd-server/src/modules/pipeline/controller/pipeline-controller.ts index b1cb3b72..9a1b0b99 100644 --- a/packages/ui/certd-server/src/modules/pipeline/controller/pipeline-controller.ts +++ b/packages/ui/certd-server/src/modules/pipeline/controller/pipeline-controller.ts @@ -1,11 +1,11 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; -import { CrudController } from '../../../basic/crud-controller.js'; +import { CrudController } from '@certd/lib-server'; import { PipelineService } from '../service/pipeline-service.js'; import { PipelineEntity } from '../entity/pipeline.js'; -import { Constants } from '../../../basic/constants.js'; +import { Constants } from '@certd/lib-server'; import { HistoryService } from '../service/history-service.js'; import { AuthService } from '../../authority/service/auth-service.js'; -import { SysSettingsService } from '../../system/service/sys-settings-service.js'; +import { SysSettingsService } from '@certd/lib-server'; /** * 证书 diff --git a/packages/ui/certd-server/src/modules/pipeline/controller/plugin-controller.ts b/packages/ui/certd-server/src/modules/pipeline/controller/plugin-controller.ts index b3ad3bf3..9f6e871b 100644 --- a/packages/ui/certd-server/src/modules/pipeline/controller/plugin-controller.ts +++ b/packages/ui/certd-server/src/modules/pipeline/controller/plugin-controller.ts @@ -1,7 +1,7 @@ import { ALL, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; -import { BaseController } from '../../../basic/base-controller.js'; +import { BaseController } from '@certd/lib-server'; import { PluginService } from '../service/plugin-service.js'; -import { Constants } from '../../../basic/constants.js'; +import { Constants } from '@certd/lib-server'; /** * 插件 diff --git a/packages/ui/certd-server/src/modules/pipeline/service/access-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/access-service.ts index 526babcb..6d92dba6 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/access-service.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/access-service.ts @@ -1,11 +1,11 @@ import { Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { Repository } from 'typeorm'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; import { AccessEntity } from '../entity/access.js'; import { AccessDefine, accessRegistry, IAccessService, newAccess } from '@certd/pipeline'; import { EncryptService } from './encrypt-service.js'; -import { ValidateException } from '../../../basic/exception/validation-exception.js'; +import { ValidateException } from '@certd/lib-server'; /** * 授权 diff --git a/packages/ui/certd-server/src/modules/pipeline/service/encrypt-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/encrypt-service.ts index 0237e795..9fc1e2a5 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/encrypt-service.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/encrypt-service.ts @@ -1,7 +1,7 @@ import { Init, Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core'; import crypto from 'crypto'; -import { SysSettingsService } from '../../system/service/sys-settings-service.js'; -import { SysPrivateSettings } from '../../system/service/models.js'; +import { SysSettingsService } from '@certd/lib-server'; +import { SysPrivateSettings } from '@certd/lib-server'; /** * 授权 diff --git a/packages/ui/certd-server/src/modules/pipeline/service/history-log-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/history-log-service.ts index 84cc4a4f..d48d26c6 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/history-log-service.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/history-log-service.ts @@ -1,7 +1,7 @@ import { Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { In, Repository } from 'typeorm'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; import { HistoryLogEntity } from '../entity/history-log.js'; /** diff --git a/packages/ui/certd-server/src/modules/pipeline/service/history-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/history-service.ts index 7a06ab7b..93060d9c 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/history-service.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/history-service.ts @@ -1,14 +1,14 @@ import { Config, Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { In, Repository } from 'typeorm'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; import { HistoryEntity } from '../entity/history.js'; import { PipelineEntity } from '../entity/pipeline.js'; import { HistoryDetail } from '../entity/vo/history-detail.js'; import { HistoryLogService } from './history-log-service.js'; import { FileItem, Pipeline, RunnableCollection } from '@certd/pipeline'; import { FileStore } from '@certd/pipeline'; -import { logger } from '../../../utils/logger.js'; +import { logger } from '@certd/pipeline'; /** * 证书申请 diff --git a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts index 728439fd..cbec066a 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/pipeline-service.ts @@ -1,7 +1,7 @@ import { Config, Inject, Provide, Scope, ScopeEnum, sleep } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { In, Repository } from 'typeorm'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; import { PipelineEntity } from '../entity/pipeline.js'; import { PipelineDetail } from '../entity/vo/pipeline-detail.js'; import { Executor, isPlus, Pipeline, ResultType, RunHistory, UserInfo } from '@certd/pipeline'; @@ -13,9 +13,9 @@ import { HistoryService } from './history-service.js'; import { HistoryEntity } from '../entity/history.js'; import { HistoryLogEntity } from '../entity/history-log.js'; import { HistoryLogService } from './history-log-service.js'; -import { logger } from '../../../utils/logger.js'; +import { logger } from '@certd/pipeline'; import { EmailService } from '../../basic/service/email-service.js'; -import { NeedVIPException } from '../../../basic/exception/vip-exception.js'; +import { NeedVIPException } from '@certd/lib-server'; import { UserService } from '../../authority/service/user-service.js'; const runningTasks: Map = new Map(); diff --git a/packages/ui/certd-server/src/modules/pipeline/service/storage-service.ts b/packages/ui/certd-server/src/modules/pipeline/service/storage-service.ts index 2dbd8e22..7302bd35 100644 --- a/packages/ui/certd-server/src/modules/pipeline/service/storage-service.ts +++ b/packages/ui/certd-server/src/modules/pipeline/service/storage-service.ts @@ -1,7 +1,7 @@ import { Provide, Scope, ScopeEnum } from '@midwayjs/core'; import { InjectEntityModel } from '@midwayjs/typeorm'; import { In, Repository } from 'typeorm'; -import { BaseService } from '../../../basic/base-service.js'; +import { BaseService } from '@certd/lib-server'; import { StorageEntity } from '../entity/storage.js'; /** diff --git a/packages/ui/certd-server/src/modules/system/controller/plus-controller.ts b/packages/ui/certd-server/src/modules/system/controller/plus-controller.ts index f84abc59..5651ee1e 100644 --- a/packages/ui/certd-server/src/modules/system/controller/plus-controller.ts +++ b/packages/ui/certd-server/src/modules/system/controller/plus-controller.ts @@ -1,9 +1,9 @@ import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; -import { SysSettingsService } from '../service/sys-settings-service.js'; -import { BaseController } from '../../../basic/base-controller.js'; +import { SysSettingsService } from '@certd/lib-server'; +import { BaseController } from '@certd/lib-server'; import { AppKey } from '@certd/pipeline'; -import { SysInstallInfo } from '../service/models.js'; -import { logger } from '../../../utils/logger.js'; +import { SysInstallInfo } from '@certd/lib-server'; +import { logger } from '@certd/pipeline'; import { PlusService } from '../../basic/service/plus-service.js'; /** diff --git a/packages/ui/certd-server/src/modules/system/controller/site-controller.ts b/packages/ui/certd-server/src/modules/system/controller/site-controller.ts new file mode 100644 index 00000000..0afecccc --- /dev/null +++ b/packages/ui/certd-server/src/modules/system/controller/site-controller.ts @@ -0,0 +1,55 @@ +import { ALL, Body, Controller, Inject, Post, Provide } from '@midwayjs/core'; +import { SysSettingsService } from '@certd/lib-server'; +import { BaseController } from '@certd/lib-server'; +import { AppKey } from '@certd/pipeline'; +import { SysInstallInfo } from '@certd/lib-server'; +import { logger } from '@certd/pipeline'; +import { PlusService } from '../../basic/service/plus-service.js'; + +/** + */ +@Provide() +@Controller('/api/sys/site') +export class SysPlusController extends BaseController { + @Inject() + sysSettingsService: SysSettingsService; + + @Inject() + plusService: PlusService; + + @Post('/active', { summary: 'sys:settings:edit' }) + async active(@Body(ALL) body) { + const { code } = body; + const installInfo: SysInstallInfo = await this.sysSettingsService.getSetting(SysInstallInfo); + const siteId = installInfo.siteId; + const formData = { + appKey: AppKey, + code, + subjectId: siteId, + }; + + const res: any = await this.plusService.active(formData); + + if (res.code > 0) { + logger.error('激活失败', res.message); + return this.fail(res.message, 1); + } + const license = res.data.license; + + await this.plusService.updateLicense(license); + + return this.ok(true); + } + @Post('/bindUrl', { summary: 'sys:settings:edit' }) + async bindUrl(@Body(ALL) body: { url: string }) { + const { url } = body; + + const installInfo: SysInstallInfo = await this.sysSettingsService.getSetting(SysInstallInfo); + await this.plusService.bindUrl(installInfo.siteId, url); + + installInfo.bindUrl = url; + await this.sysSettingsService.saveSetting(installInfo); + + return this.ok(true); + } +} diff --git a/packages/ui/certd-server/src/modules/system/controller/sys-settings-controller.ts b/packages/ui/certd-server/src/modules/system/controller/sys-settings-controller.ts index 2e6a8434..0b4b9a4c 100644 --- a/packages/ui/certd-server/src/modules/system/controller/sys-settings-controller.ts +++ b/packages/ui/certd-server/src/modules/system/controller/sys-settings-controller.ts @@ -1,8 +1,8 @@ import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core'; -import { CrudController } from '../../../basic/crud-controller.js'; -import { SysSettingsService } from '../service/sys-settings-service.js'; +import { CrudController } from '@certd/lib-server'; +import { SysSettingsService } from '@certd/lib-server'; import { SysSettingsEntity } from '../entity/sys-settings.js'; -import { SysPublicSettings } from '../service/models.js'; +import { SysPublicSettings } from '@certd/lib-server'; import * as _ from 'lodash-es'; import { PipelineService } from '../../pipeline/service/pipeline-service.js'; diff --git a/packages/ui/certd-server/src/plugins/plugin-host/plugin/copy-to-local/index.ts b/packages/ui/certd-server/src/plugins/plugin-host/plugin/copy-to-local/index.ts index 69017a8f..c9a7bafb 100644 --- a/packages/ui/certd-server/src/plugins/plugin-host/plugin/copy-to-local/index.ts +++ b/packages/ui/certd-server/src/plugins/plugin-host/plugin/copy-to-local/index.ts @@ -1,7 +1,7 @@ import { AbstractTaskPlugin, IsTaskPlugin, pluginGroups, RunStrategy, TaskInput, TaskOutput } from '@certd/pipeline'; import { CertInfo, CertReader } from '@certd/plugin-cert'; import * as fs from 'fs'; -import { Constants } from '../../../../basic/constants.js'; +import { Constants } from '@certd/lib-server'; import path from 'path'; @IsTaskPlugin({ diff --git a/packages/ui/certd-server/src/plugins/plugin-other/plugins/plugin-script.ts b/packages/ui/certd-server/src/plugins/plugin-other/plugins/plugin-script.ts index 6e036219..0815c55d 100644 --- a/packages/ui/certd-server/src/plugins/plugin-other/plugins/plugin-script.ts +++ b/packages/ui/certd-server/src/plugins/plugin-other/plugins/plugin-script.ts @@ -39,7 +39,7 @@ export class CustomScriptPlugin extends AbstractTaskPlugin { name: 'pi-output-selector', from: ['CertApply', 'CertApplyLego'], }, - required: true, + required: false, }) cert!: CertInfo; diff --git a/packages/ui/certd-server/src/utils/logger.ts b/packages/ui/certd-server/src/utils/logger.ts deleted file mode 100644 index 0c6b443d..00000000 --- a/packages/ui/certd-server/src/utils/logger.ts +++ /dev/null @@ -1,12 +0,0 @@ -import log4js from 'log4js'; -import path from 'path'; -const level = process.env.NODE_ENV === 'development' ? 'debug' : 'info'; -const filename = path.join('/logs/server.log'); -log4js.configure({ - appenders: { - std: { type: 'stdout', level: 'debug' }, - file: { type: 'file', pattern: 'yyyy-MM-dd', daysToKeep: 3, filename }, - }, - categories: { default: { appenders: ['std'], level } }, -}); -export const logger = log4js.getLogger('server'); diff --git a/packages/ui/certd-server/src/utils/random.ts b/packages/ui/certd-server/src/utils/random.ts index 45b559eb..0f9d04d9 100644 --- a/packages/ui/certd-server/src/utils/random.ts +++ b/packages/ui/certd-server/src/utils/random.ts @@ -1,6 +1,6 @@ -const numbers = '0123456789'; -const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; -const specials = '~!@#$%^*()_+-=[]{}|;:,./<>?'; +const numbers = "0123456789"; +const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; +const specials = "~!@#$%^*()_+-=[]{}|;:,./<>?"; /** * Generate random string @@ -11,24 +11,24 @@ function randomStr(length, options?) { length || (length = 8); options || (options = {}); - let chars = ''; - let result = ''; + let chars = ""; + let result = ""; if (options === true) { chars = numbers + letters; - } else if (typeof options === 'string') { + } else if (typeof options === "string") { chars = options; } else { if (options.numbers !== false) { - chars += typeof options.numbers === 'string' ? options.numbers : numbers; + chars += typeof options.numbers === "string" ? options.numbers : numbers; } if (options.letters !== false) { - chars += typeof options.letters === 'string' ? options.letters : letters; + chars += typeof options.letters === "string" ? options.letters : letters; } if (options.specials) { - chars += typeof options.specials === 'string' ? options.specials : specials; + chars += typeof options.specials === "string" ? options.specials : specials; } }