mirror of
https://github.com/certd/certd.git
synced 2026-04-23 11:37:23 +08:00
perf: 商业版支持自定义插件的参数配置
This commit is contained in:
@@ -3,7 +3,7 @@ import { PluginService } from './plugin-service.js';
|
||||
|
||||
export type PluginConfig = {
|
||||
name: string;
|
||||
disabled: boolean;
|
||||
disabled?: boolean;
|
||||
sysSetting: {
|
||||
input?: Record<string, any>;
|
||||
metadata?: Record<string, any>;
|
||||
@@ -38,10 +38,12 @@ export class PluginConfigService {
|
||||
}
|
||||
|
||||
async saveCommPluginConfig(config: CommPluginConfig) {
|
||||
await this.savePluginConfig('CertApply', config.CertApply);
|
||||
config.CertApply.name = 'CertApply';
|
||||
await this.savePluginConfig(config.CertApply);
|
||||
}
|
||||
|
||||
async savePluginConfig(name: string, config: PluginConfig) {
|
||||
async savePluginConfig( config: PluginConfig) {
|
||||
const name = config.name;
|
||||
const sysSetting = config?.sysSetting;
|
||||
if (!sysSetting) {
|
||||
throw new Error(`${name}.sysSetting is required`);
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import { Inject, Provide, Scope, ScopeEnum } from "@midwayjs/core";
|
||||
import { BaseService, PageReq } from "@certd/lib-server";
|
||||
import { PluginEntity } from "../entity/plugin.js";
|
||||
import { InjectEntityModel } from "@midwayjs/typeorm";
|
||||
import { Repository } from "typeorm";
|
||||
import { isComm } from "@certd/plus-core";
|
||||
import { BuiltInPluginService } from "../../pipeline/service/builtin-plugin-service.js";
|
||||
import { merge } from "lodash-es";
|
||||
import { accessRegistry, notificationRegistry, pluginRegistry } from "@certd/pipeline";
|
||||
import { dnsProviderRegistry } from "@certd/plugin-cert";
|
||||
import { logger } from "@certd/basic";
|
||||
import {Inject, Provide, Scope, ScopeEnum} from "@midwayjs/core";
|
||||
import {BaseService, PageReq} from "@certd/lib-server";
|
||||
import {PluginEntity} from "../entity/plugin.js";
|
||||
import {InjectEntityModel} from "@midwayjs/typeorm";
|
||||
import {IsNull, Not, Repository} from "typeorm";
|
||||
import {isComm} from "@certd/plus-core";
|
||||
import {BuiltInPluginService} from "../../pipeline/service/builtin-plugin-service.js";
|
||||
import {merge} from "lodash-es";
|
||||
import {accessRegistry, notificationRegistry, pluginRegistry} from "@certd/pipeline";
|
||||
import {dnsProviderRegistry} from "@certd/plugin-cert";
|
||||
import {logger} from "@certd/basic";
|
||||
import yaml from "js-yaml";
|
||||
import { getDefaultAccessPlugin, getDefaultDeployPlugin, getDefaultDnsPlugin } from "./default-plugin.js";
|
||||
import {getDefaultAccessPlugin, getDefaultDeployPlugin, getDefaultDnsPlugin} from "./default-plugin.js";
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
|
||||
@@ -57,9 +57,9 @@ export class PluginService extends BaseService<PluginEntity> {
|
||||
};
|
||||
}
|
||||
|
||||
async getEnabledBuildInGroup(isSimple = false) {
|
||||
async getEnabledBuildInGroup(opts?:{isSimple?:boolean,withSetting?:boolean}) {
|
||||
const groups = this.builtInPluginService.getGroups();
|
||||
if (isSimple) {
|
||||
if (opts?.isSimple) {
|
||||
for (const key in groups) {
|
||||
const group = groups[key];
|
||||
group.plugins.forEach(item => {
|
||||
@@ -72,9 +72,43 @@ export class PluginService extends BaseService<PluginEntity> {
|
||||
if (!isComm()) {
|
||||
return groups;
|
||||
}
|
||||
|
||||
// 初始化设置
|
||||
const settingPlugins = await this.repository.find({
|
||||
select:{
|
||||
id:true,
|
||||
name:true,
|
||||
sysSetting:true
|
||||
},
|
||||
where: {
|
||||
sysSetting : Not(IsNull())
|
||||
}
|
||||
})
|
||||
//合并插件配置
|
||||
const pluginSettingMap:any = {}
|
||||
for (const item of settingPlugins) {
|
||||
if (!item.sysSetting) {
|
||||
continue;
|
||||
}
|
||||
pluginSettingMap[item.name] = JSON.parse(item.sysSetting);
|
||||
}
|
||||
for (const key in groups) {
|
||||
const group = groups[key];
|
||||
if (!group.plugins) {
|
||||
continue;
|
||||
}
|
||||
for (const item of group.plugins) {
|
||||
const pluginSetting = pluginSettingMap[item.name];
|
||||
if (pluginSetting){
|
||||
item.sysSetting = pluginSetting
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//排除禁用的
|
||||
const list = await this.list({
|
||||
query: {
|
||||
type: "builtIn",
|
||||
disabled: true
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user