mirror of
https://github.com/certd/certd.git
synced 2026-04-03 14:10:54 +08:00
perf: 优化阿里云连接超时时长为10秒,支持配置环境变量
This commit is contained in:
@@ -88,6 +88,10 @@ export class SysPrivateSettings extends BaseSettings {
|
||||
|
||||
pipelineMaxRunningCount?: number;
|
||||
|
||||
|
||||
environmentVars?: string = '';
|
||||
|
||||
|
||||
sms?: {
|
||||
type?: string;
|
||||
config?: any;
|
||||
|
||||
@@ -11,6 +11,8 @@ import { BaseService, setAdminMode } from '../../../basic/index.js';
|
||||
import { executorQueue } from '../../basic/service/executor-queue.js';
|
||||
import { isComm } from '@certd/plus-core';
|
||||
const { merge } = mergeUtils;
|
||||
|
||||
let lastSaveEnvVars = {};
|
||||
/**
|
||||
* 设置
|
||||
*/
|
||||
@@ -117,12 +119,12 @@ export class SysSettingsService extends BaseService<SysSettingsEntity> {
|
||||
}
|
||||
|
||||
async savePublicSettings(bean: SysPublicSettings) {
|
||||
if(isComm()){
|
||||
if(bean.adminMode === 'enterprise'){
|
||||
if (isComm()) {
|
||||
if (bean.adminMode === 'enterprise') {
|
||||
throw new Error("商业版不支持使用企业管理模式")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
await this.saveSetting(bean);
|
||||
//让设置生效
|
||||
await this.reloadPublicSettings();
|
||||
@@ -173,6 +175,44 @@ export class SysSettingsService extends BaseService<SysSettingsEntity> {
|
||||
}
|
||||
|
||||
setSslProviderReverseProxies(privateSetting.reverseProxies);
|
||||
|
||||
//加载环境变量
|
||||
this.setEnvironmentVars(privateSetting.environmentVars);
|
||||
}
|
||||
|
||||
setEnvironmentVars(vars: string) {
|
||||
const envVars = {}
|
||||
if (typeof vars !== 'string') {
|
||||
vars = ""
|
||||
}
|
||||
vars.split('\n').forEach(line => {
|
||||
line = line.trim();
|
||||
if (!line || line.startsWith('#')) {
|
||||
return
|
||||
}
|
||||
|
||||
const arr = line.split("#")
|
||||
if (arr.length > 0) {
|
||||
line = arr[0].trim();
|
||||
}
|
||||
if (!line.includes("=")) {
|
||||
return
|
||||
}
|
||||
|
||||
const [key, value] = line.split('=');
|
||||
if (key && value) {
|
||||
envVars[key.trim()] = value.trim();
|
||||
}
|
||||
});
|
||||
//先删除旧环境变量
|
||||
if (lastSaveEnvVars) {
|
||||
for (const key in lastSaveEnvVars) {
|
||||
delete process.env[key];
|
||||
}
|
||||
}
|
||||
|
||||
merge(process.env, envVars);
|
||||
lastSaveEnvVars = envVars;
|
||||
}
|
||||
|
||||
async updateByKey(key: string, setting: any) {
|
||||
|
||||
@@ -38,6 +38,10 @@ COPY ./patch/ssh2/*.js /app/node_modules/.pnpm/node_modules/ssh2/lib/protocol/
|
||||
|
||||
ENV LEGO_VERSION=4.30.1
|
||||
ENV LEGO_DOWNLOAD_DIR=/app/tools/lego
|
||||
|
||||
ENV ALIYUN_CLIENT_CONNECT_TIMEOUT=10000
|
||||
ENV ALIYUN_CLIENT_READ_TIMEOUT=20000
|
||||
|
||||
RUN mkdir -p $LEGO_DOWNLOAD_DIR
|
||||
|
||||
# 根据架构下载不同的文件
|
||||
|
||||
@@ -789,6 +789,8 @@ export default {
|
||||
reverseProxyHelper: "Reverse proxy for ACME address, used when applying for certificate",
|
||||
reverseProxyPlaceholder: "http://le.px.handfree.work",
|
||||
reverseProxyEmpty: "No reverse proxy list configured",
|
||||
environmentVars: "Environment Variables",
|
||||
environmentVarsHelper: "configure the runtime environment variables, one per line, format: KEY=VALUE",
|
||||
},
|
||||
},
|
||||
modal: {
|
||||
|
||||
@@ -800,6 +800,8 @@ export default {
|
||||
reverseProxyHelper: "证书颁发机构ACME地址的反向代理,在申请证书时自动使用",
|
||||
reverseProxyPlaceholder: "http://le.px.handfree.work",
|
||||
reverseProxyEmpty: "未配置反向代理",
|
||||
environmentVars: "环境变量",
|
||||
environmentVarsHelper: "配置运行时环境变量,每行一个,格式:KEY=VALUE",
|
||||
},
|
||||
},
|
||||
modal: {
|
||||
|
||||
@@ -101,6 +101,8 @@ export type SysPrivateSetting = {
|
||||
commonCnameEnabled?: boolean;
|
||||
// 同一个用户同时最大运行流水线数量
|
||||
pipelineMaxRunningCount?: number;
|
||||
// 环境变量
|
||||
environmentVars?: string;
|
||||
|
||||
sms?: {
|
||||
type?: string;
|
||||
|
||||
@@ -14,6 +14,11 @@
|
||||
<div class="helper">{{ t("certd.httpsProxyHelper") }}</div>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item :label="t('certd.sys.setting.environmentVars')" :name="['private', 'environmentVars']">
|
||||
<a-textarea v-model:value="formState.private.environmentVars" :placeholder="environmentVarsExample" rows="4" />
|
||||
<div class="helper">{{ t("certd.sys.setting.environmentVarsHelper") }}</div>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item :label="t('certd.dualStackNetwork')" :name="['private', 'dnsResultOrder']">
|
||||
<a-select v-model:value="formState.private.dnsResultOrder">
|
||||
<a-select-option value="verbatim">{{ t("certd.default") }}</a-select-option>
|
||||
@@ -55,6 +60,11 @@ defineOptions({
|
||||
name: "SettingNetwork",
|
||||
});
|
||||
|
||||
const environmentVarsExample = ref(
|
||||
`ALIYUN_CLIENT_CONNECT_TIMEOUT=16000 #连接超时,单位毫秒
|
||||
ALIYUN_CLIENT_READ_TIMEOUT=16000 #读取数据超时,单位毫秒`
|
||||
);
|
||||
|
||||
const formState = reactive<Partial<SysSettings>>({
|
||||
public: {},
|
||||
private: {},
|
||||
|
||||
Reference in New Issue
Block a user