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