perf: 公共cname服务支持关闭

pull/244/head^2^2
xiaojunnuo 2024-11-14 18:31:17 +08:00
parent c3cfbd8474
commit f4ae5125dc
4 changed files with 22 additions and 4 deletions

View File

@ -31,6 +31,7 @@ export class SysPrivateSettings extends BaseSettings {
httpsProxy? = '';
httpProxy? = '';
dnsResultOrder? = '';
commonCnameEnabled?: boolean = true;
removeSecret() {
const clone = cloneDeep(this);

View File

@ -14,6 +14,7 @@ export type SysPrivateSetting = {
httpProxy?: string;
httpsProxy?: string;
dnsResultOrder?: string;
commonCnameEnabled?: boolean;
};
export const SettingKeys = {

View File

@ -23,6 +23,7 @@
<a-form-item label="管理其他用户流水线" :name="['public', 'managerOtherUserPipeline']">
<a-switch v-model:checked="formState.public.managerOtherUserPipeline" />
</a-form-item>
<a-form-item label="ICP备案号" :name="['public', 'icpNo']">
<a-input v-model:value="formState.public.icpNo" placeholder="粤ICP备xxxxxxx号" />
</a-form-item>
@ -48,6 +49,11 @@
</a-select>
<div class="helper">如果选择IPv6优先需要在docker-compose.yaml中启用ipv6</div>
</a-form-item>
<a-form-item label="启用公共CNAME服务" :name="['private', 'commonCnameEnabled']">
<a-switch v-model:checked="formState.private.commonCnameEnabled" />
</a-form-item>
<a-form-item :wrapper-col="{ offset: 8, span: 16 }">
<a-button :loading="saveLoading" type="primary" html-type="submit">保存</a-button>
</a-form-item>

View File

@ -1,7 +1,7 @@
import { Provide, Scope, ScopeEnum } from '@midwayjs/core';
import { Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';
import { InjectEntityModel } from '@midwayjs/typeorm';
import { Repository } from 'typeorm';
import { BaseService, ListReq, ValidateException } from '@certd/lib-server';
import { BaseService, ListReq, SysPrivateSettings, SysSettingsService, ValidateException } from '@certd/lib-server';
import { CnameProviderEntity } from '../entity/cname-provider.js';
import { CommonProviders } from './common-provider.js';
@ -14,6 +14,9 @@ export class CnameProviderService extends BaseService<CnameProviderEntity> {
@InjectEntityModel(CnameProviderEntity)
repository: Repository<CnameProviderEntity>;
@Inject()
settingsService: SysSettingsService;
//@ts-ignore
getRepository() {
return this.repository;
@ -85,7 +88,10 @@ export class CnameProviderService extends BaseService<CnameProviderEntity> {
if (founds && founds.length > 0) {
return founds[0];
}
if (CommonProviders.length > 0) {
const sysPrivateSettings = await this.settingsService.getSetting<SysPrivateSettings>(SysPrivateSettings);
if (sysPrivateSettings.commonCnameEnabled !== false && CommonProviders.length > 0) {
return CommonProviders[0] as CnameProviderEntity;
}
return null;
@ -93,8 +99,12 @@ export class CnameProviderService extends BaseService<CnameProviderEntity> {
async list(req: ListReq): Promise<any[]> {
const list = await super.list(req);
const sysPrivateSettings = await this.settingsService.getSetting<SysPrivateSettings>(SysPrivateSettings);
return [...list, ...CommonProviders];
if (sysPrivateSettings.commonCnameEnabled !== false) {
return [...list, ...CommonProviders];
}
return list;
}
async info(id: any, infoIgnoreProperty?: any): Promise<any | null> {