🔨 优化系统配置逻辑.

This commit is contained in:
lijiahangmax
2025-10-09 14:31:43 +08:00
parent 37fc271741
commit b0be444fba
17 changed files with 129 additions and 158 deletions

View File

@@ -34,116 +34,116 @@ public interface ConfigKeys {
/**
* SFTP 文件预览大小
*/
String SFTP_PREVIEW_SIZE = "sftp_previewSize";
String SFTP_PREVIEW_SIZE = "sftp.preview-size";
/**
* SFTP 重复文件备份
*/
String SFTP_UPLOAD_PRESENT_BACKUP = "sftp_uploadPresentBackup";
String SFTP_UPLOAD_PRESENT_BACKUP = "sftp.upload-present-backup";
/**
* SFTP 备份文件名称
*/
String SFTP_UPLOAD_BACKUP_FILE_NAME = "sftp_uploadBackupFileName";
String SFTP_UPLOAD_BACKUP_FILE_NAME = "sftp.upload-backup-file-name";
/**
* 加密公钥
*/
String ENCRYPT_PUBLIC_KEY = "encrypt_publicKey";
String ENCRYPT_PUBLIC_KEY = "encrypt.public-key";
/**
* 加密私钥
*/
String ENCRYPT_PRIVATE_KEY = "encrypt_privateKey";
String ENCRYPT_PRIVATE_KEY = "encrypt.private-key";
/**
* 日志前端显示行数
*/
String LOG_WEB_SCROLL_LINES = "log_webScrollLines";
String LOG_WEB_SCROLL_LINES = "log.web-scroll-lines";
/**
* 日志加载偏移行
*/
String LOG_TRACKER_LOAD_LINES = "log_trackerLoadLines";
String LOG_TRACKER_LOAD_LINES = "log.tracker-load-lines";
/**
* 日志加载间隔毫秒
*/
String LOG_TRACKER_LOAD_INTERVAL = "log_trackerLoadInterval";
String LOG_TRACKER_LOAD_INTERVAL = "log.tracker-load-interval";
/**
* 是否生成详细的执行日志
*/
String LOG_EXEC_DETAIL_LOG = "log_execDetailLog";
String LOG_EXEC_DETAIL_ENABLED = "log.exec-detail.enabled";
/**
* 凭证有效期分
* 凭证有效期
*/
String LOGIN_LOGIN_SESSION_TIME = "login_loginSessionTime";
String LOGIN_LOGIN_SESSION_TIME = "login.login-session-time";
/**
* 允许多端登录
*/
String LOGIN_ALLOW_MULTI_DEVICE = "login_allowMultiDevice";
String LOGIN_ALLOW_MULTI_DEVICE = "login.allow-multi-device";
/**
* 允许凭证续签
*/
String LOGIN_ALLOW_REFRESH = "login_allowRefresh";
String LOGIN_ALLOW_REFRESH = "login.allow-refresh";
/**
* 凭证续签最大次数
*/
String LOGIN_MAX_REFRESH_COUNT = "login_maxRefreshCount";
String LOGIN_MAX_REFRESH_COUNT = "login.max-refresh-count";
/**
* 凭证续签间隔分
*/
String LOGIN_REFRESH_INTERVAL = "login_refreshInterval";
String LOGIN_REFRESH_INTERVAL = "login.refresh-interval";
/**
* 登录失败锁定
*/
String LOGIN_LOGIN_FAILED_LOCK = "login_loginFailedLock";
String LOGIN_LOGIN_FAILED_LOCK = "login.login-failed-lock";
/**
* 登录失败锁定阈值
* 登录失败锁定阈值
*/
String LOGIN_LOGIN_FAILED_LOCK_THRESHOLD = "login_loginFailedLockThreshold";
String LOGIN_LOGIN_FAILED_LOCK_THRESHOLD = "login.login-failed-lock-threshold";
/**
* 登录失败锁定时间分
* 登录失败锁定时间
*/
String LOGIN_LOGIN_FAILED_LOCK_TIME = "login_loginFailedLockTime";
String LOGIN_LOGIN_FAILED_LOCK_TIME = "login.login-failed-lock-time";
/**
* 登录失败发信
*/
String LOGIN_LOGIN_FAILED_SEND = "login_loginFailedSend";
String LOGIN_LOGIN_FAILED_SEND = "login.login-failed-send";
/**
* 登录失败发信阈值
*/
String LOGIN_LOGIN_FAILED_SEND_THRESHOLD = "login_loginFailedSendThreshold";
String LOGIN_LOGIN_FAILED_SEND_THRESHOLD = "login.login-failed-send-threshold";
/**
* 是否开启自动清理命令记录
*/
String AUTO_CLEAR_EXEC_LOG_ENABLED = "autoClear_execLogEnabled";
String AUTO_CLEAR_EXEC_LOG_ENABLED = "auto-clear.exec-log.enabled";
/**
* 自动清理命令记录保留天数
*/
String AUTO_CLEAR_EXEC_LOG_KEEP_DAYS = "autoClear_execLogKeepDays";
String AUTO_CLEAR_EXEC_LOG_KEEP_DAYS = "auto-clear.exec-log.keep-days";
/**
* 是否开启自动清理终端连接记录
*/
String AUTO_CLEAR_TERMINAL_LOG_ENABLED = "autoClear_terminalLogEnabled";
String AUTO_CLEAR_TERMINAL_LOG_ENABLED = "auto-clear.terminal-log.enabled";
/**
* 自动清理终端连接记录保留天数
*/
String AUTO_CLEAR_TERMINAL_LOG_KEEP_DAYS = "autoClear_terminalLogKeepDays";
String AUTO_CLEAR_TERMINAL_LOG_KEEP_DAYS = "auto-clear.terminal-log.keep-days";
}

View File

@@ -14,7 +14,7 @@ spring:
port: ${REDIS_PORT:6379}
password: ${REDIS_PASSWORD:Data@123456}
database: ${REDIS_DATABASE:1}
data-version: ${REDIS_DATA_VERSION:1}
data-version: ${REDIS_DATA_VERSION:2}
mock: false
redisson:
threads: 2

View File

@@ -25,7 +25,7 @@ spring:
port: ${REDIS_PORT:6379}
password: ${REDIS_PASSWORD:Data@123456}
database: ${REDIS_DATABASE:0}
data-version: ${REDIS_DATA_VERSION:1}
data-version: ${REDIS_DATA_VERSION:2}
redisson:
threads: 4
netty-threads: 4

View File

@@ -50,12 +50,12 @@ public class AppLogConfig {
/**
* 是否生成详细的执行日志
*/
private final ConfigRef<Boolean> execDetailLog;
private final ConfigRef<Boolean> execDetailEnabled;
public AppLogConfig(ConfigStore configStore) {
this.trackerLoadLines = configStore.int32(ConfigKeys.LOG_TRACKER_LOAD_LINES);
this.trackerLoadInterval = configStore.int32(ConfigKeys.LOG_TRACKER_LOAD_INTERVAL);
this.execDetailLog = configStore.bool(ConfigKeys.LOG_EXEC_DETAIL_LOG);
this.execDetailEnabled = configStore.bool(ConfigKeys.LOG_EXEC_DETAIL_ENABLED);
}
public Integer getTrackerLoadLines() {
@@ -66,8 +66,8 @@ public class AppLogConfig {
return trackerLoadInterval.value;
}
public Boolean getExecDetailLog() {
return execDetailLog.value;
public Boolean getExecDetailEnabled() {
return execDetailEnabled.value;
}
}

View File

@@ -193,7 +193,7 @@ public class ExecTaskHandler implements IExecTaskHandler {
* @return handler
*/
private IExecCommandHandler createCommandHandler(Long execHostId) {
if (Booleans.isTrue(appLogConfig.getExecDetailLog())) {
if (Booleans.isTrue(appLogConfig.getExecDetailEnabled())) {
// 详细日志
return new ExecCommandDetailHandler(execHostId, execLog, builtParams, timeoutChecker);
} else {

View File

@@ -59,6 +59,7 @@ public interface UserCacheKeyDefine {
CacheKeyDefine LOGIN_FAILED_COUNT = new CacheKeyBuilder()
.key("user:login-failed:{}")
.desc("用户登录失败次数 ${username}")
.noPrefix()
.type(Integer.class)
.struct(RedisCacheStruct.STRING)
.build();

View File

@@ -49,6 +49,7 @@ public interface AlarmPolicyCacheKeyDefine {
CacheKeyDefine ALARM_RULE_SILENCE = new CacheKeyBuilder()
.key("alarm:silence:{}:{}")
.desc("告警规则沉默标志 ${agentKey} ${ruleId}")
.noPrefix()
.type(Long.class)
.struct(RedisCacheStruct.STRING)
.build();

View File

@@ -45,53 +45,53 @@ export type SystemSetting = SftpSetting
* SFTP 设置
*/
export interface SftpSetting {
sftp_previewSize: number;
sftp_uploadPresentBackup: string;
sftp_uploadBackupFileName: string;
['sftp.preview-size']: number;
['sftp.upload-present-backup']: string;
['sftp.upload-backup-file-name']: string;
}
/**
* 登录设置
*/
export interface LoginSetting {
login_allowMultiDevice: string;
login_allowRefresh: string;
login_maxRefreshCount: number;
login_refreshInterval: number;
login_loginFailedLock: string;
login_loginFailedLockThreshold: number;
login_loginFailedLockTime: number;
login_loginFailedSend: string;
login_loginFailedSendThreshold: number;
login_loginSessionTime: number;
['login.allow-multi-device']: string;
['login.allow-refresh']: string;
['login.max-refresh-count']: number;
['login.refresh-interval']: number;
['login.login-failed-lock']: string;
['login.login-failed-lock-threshold']: number;
['login.login-failed-lock-time']: number;
['login.login-failed-send']: string;
['login.login-failed-send-threshold']: number;
['login.login-session-time']: number;
}
/**
* 加密设置
*/
export interface EncryptSetting {
encrypt_publicKey: string;
encrypt_privateKey: string;
['encrypt.public-key']: string;
['encrypt.private-key']: string;
}
/**
* 日志设置
*/
export interface LogSetting {
log_webScrollLines: number;
log_trackerLoadLines: number;
log_trackerLoadInterval: number;
log_execDetailLog: string;
['log.web-scroll-lines']: number;
['log.tracker-load-lines']: number;
['log.tracker-load-interval']: number;
['log.exec-detail.enabled']: string;
}
/**
* 自动清理设置
*/
export interface AutoClearSetting {
autoClear_execLogEnabled: string;
autoClear_execLogKeepDays: number;
autoClear_terminalLogEnabled: string;
autoClear_terminalLogKeepDays: number;
['auto-clear.exec-log.enabled']: string;
['auto-clear.exec-log.keep-days']: number;
['auto-clear.terminal-log.enabled']: string;
['auto-clear.terminal-log.keep-days']: number;
}
/**

View File

@@ -55,8 +55,8 @@
execLog.value = { ...record };
currentHostExecId.value = record.hosts[0].id;
// 获取最大显示行数
const { log_webScrollLines } = await useCacheStore().loadSystemSetting();
const scrollLines = toAnonymousNumber(log_webScrollLines) || 1000;
const { 'log.web-scroll-lines': webScrollLines } = await useCacheStore().loadSystemSetting();
const scrollLines = toAnonymousNumber(webScrollLines) || 1000;
// 创建 appender
appender.value = markRaw(new LogAppender({
id: record.id,

View File

@@ -12,7 +12,7 @@ export const encrypt = async (data: string | undefined): Promise<string | undefi
return data;
}
// 获取公钥
const publicKey = (await useCacheStore().loadSystemSetting()).encrypt_publicKey;
const publicKey = (await useCacheStore().loadSystemSetting())['encrypt.public-key'];
const encryptor = new JSEncrypt();
encryptor.setPublicKey(publicKey);

View File

@@ -9,11 +9,10 @@
label-align="right"
:auto-label-width="true">
<!-- 自动清理执行记录 -->
<a-form-item field="autoClear_execLogEnabled"
label="自动清理执行记录"
<a-form-item label="自动清理执行记录"
:rules="[{required: true, message: '请选择此项'}]"
hide-asterisk>
<a-switch v-model="setting.autoClear_execLogEnabled"
<a-switch v-model="setting['auto-clear.exec-log.enabled']"
type="round"
checked-value="true"
unchecked-value="false"
@@ -24,11 +23,10 @@
</template>
</a-form-item>
<!-- 执行记录保留天数 -->
<a-form-item field="autoClear_execLogKeepDays"
label="执行记录保留天数"
<a-form-item label="执行记录保留天数"
:rules="[{required: true, message: '请输入执行记录保留天数'}]"
hide-asterisk>
<a-input-number v-model="setting.autoClear_execLogKeepDays"
<a-input-number v-model="setting['auto-clear.exec-log.keep-days']"
class="input-wrapper"
:min="0"
:max="99999"
@@ -44,11 +42,10 @@
</template>
</a-form-item>
<!-- 自动清理终端记录 -->
<a-form-item field="autoClear_terminalLogEnabled"
label="自动清理终端记录"
<a-form-item label="自动清理终端记录"
:rules="[{required: true, message: '请选择此项'}]"
hide-asterisk>
<a-switch v-model="setting.autoClear_terminalLogEnabled"
<a-switch v-model="setting['auto-clear.terminal-log.enabled']"
type="round"
checked-value="true"
unchecked-value="false"
@@ -59,11 +56,10 @@
</template>
</a-form-item>
<!-- 终端记录保留天数 -->
<a-form-item field="autoClear_terminalLogKeepDays"
label="终端记录保留天数"
<a-form-item label="终端记录保留天数"
:rules="[{required: true, message: '请输入终端记录保留天数'}]"
hide-asterisk>
<a-input-number v-model="setting.autoClear_terminalLogKeepDays"
<a-input-number v-model="setting['auto-clear.terminal-log.keep-days']"
class="input-wrapper"
:min="0"
:max="99999"
@@ -138,8 +134,8 @@
const { data } = await getSystemSetting(SystemSettingTypes.AUTO_CLEAR);
setting.value = {
...data,
autoClear_execLogKeepDays: toAnonymousNumber(data.autoClear_execLogKeepDays),
autoClear_terminalLogKeepDays: toAnonymousNumber(data.autoClear_terminalLogKeepDays),
'auto-clear.exec-log.keep-days': toAnonymousNumber(data['auto-clear.exec-log.keep-days']),
'auto-clear.terminal-log.keep-days': toAnonymousNumber(data['auto-clear.terminal-log.keep-days']),
};
} catch (e) {
} finally {
@@ -150,7 +146,4 @@
</script>
<style lang="less" scoped>
.input-wrapper {
width: 368px;
}
</style>

View File

@@ -13,23 +13,21 @@
<a-alert>请输入 PKCS8 格式的 RSA Base64 密钥, 用于前后端传输时的数据加密</a-alert>
</a-form-item>
<!-- 加密公钥 -->
<a-form-item field="encrypt_publicKey"
label="加密公钥"
<a-form-item label="加密公钥"
:rules="[{required: true, message: '请输入加密公钥'}]"
hide-asterisk>
<a-textarea v-model="setting.encrypt_publicKey"
class="input-wrapper"
<a-textarea v-model="setting['encrypt.public-key']"
class="text-wrapper"
placeholder="RSA 公钥 Base64"
:auto-size="{ minRows: 5, maxRows: 5 }"
allow-clear />
</a-form-item>
<!-- 加密私钥 -->
<a-form-item field="encrypt_privateKey"
label="加密私钥"
<a-form-item label="加密私钥"
:rules="[{required: true, message: '请输入加密私钥'}]"
hide-asterisk>
<a-textarea v-model="setting.encrypt_privateKey"
class="input-wrapper"
<a-textarea v-model="setting['encrypt.private-key']"
class="text-wrapper"
placeholder="RSA 私钥 Base64"
:auto-size="{ minRows: 14, maxRows: 14 }"
allow-clear />
@@ -97,8 +95,8 @@
setLoading(true);
try {
const { data } = await generatorKeypair();
setting.value.encrypt_publicKey = data.publicKey;
setting.value.encrypt_privateKey = data.privateKey;
setting.value['encrypt.public-key'] = data.publicKey;
setting.value['encrypt.private-key'] = data.privateKey;
} catch (e) {
} finally {
setLoading(false);
@@ -125,7 +123,7 @@
.main-container {
width: 728px !important;
.input-wrapper {
.text-wrapper {
width: 100%;
}
}

View File

@@ -9,11 +9,10 @@
label-align="right"
:auto-label-width="true">
<!-- 执行详细日志 -->
<a-form-item field="log_execDetailLog"
label="执行详细日志"
<a-form-item label="执行详细日志"
:rules="[{required: true, message: '请选择此项'}]"
hide-asterisk>
<a-switch v-model="setting.log_execDetailLog"
<a-switch v-model="setting['log.exec-detail.enabled']"
type="round"
checked-value="true"
unchecked-value="false"
@@ -24,11 +23,10 @@
</template>
</a-form-item>
<!-- 最大显示行数 -->
<a-form-item field="log_webScrollLines"
label="最大显示行数"
<a-form-item label="最大显示行数"
:rules="[{required: true, message: '请输入日志最大显示行数'}]"
hide-asterisk>
<a-input-number v-model="setting.log_webScrollLines"
<a-input-number v-model="setting['log.web-scroll-lines']"
class="input-wrapper"
:min="0"
:max="999999"
@@ -44,11 +42,10 @@
</template>
</a-form-item>
<!-- 日志加载行数 -->
<a-form-item field="log_trackerLoadLines"
label="日志加载行数"
<a-form-item label="日志加载行数"
:rules="[{required: true, message: '请输入日志加载行数'}]"
hide-asterisk>
<a-input-number v-model="setting.log_trackerLoadLines"
<a-input-number v-model="setting['log.tracker-load-lines']"
class="input-wrapper"
:min="0"
:max="99999"
@@ -64,11 +61,10 @@
</template>
</a-form-item>
<!-- 日志监听间隔 -->
<a-form-item field="log_trackerLoadInterval"
label="日志监听间隔"
<a-form-item label="日志监听间隔"
:rules="[{required: true, message: '请输入日志监听间隔'}]"
hide-asterisk>
<a-input-number v-model="setting.log_trackerLoadInterval"
<a-input-number v-model="setting['log.tracker-load-interval']"
class="input-wrapper"
:min="0"
:max="99999"
@@ -143,9 +139,9 @@
const { data } = await getSystemSetting(SystemSettingTypes.LOG);
setting.value = {
...data,
log_webScrollLines: toAnonymousNumber(data.log_webScrollLines),
log_trackerLoadInterval: toAnonymousNumber(data.log_trackerLoadInterval),
log_trackerLoadLines: toAnonymousNumber(data.log_trackerLoadLines),
'log.web-scroll-lines': toAnonymousNumber(data['log.web-scroll-lines']),
'log.tracker-load-interval': toAnonymousNumber(data['log.tracker-load-interval']),
'log.tracker-load-lines': toAnonymousNumber(data['log.tracker-load-lines']),
};
} catch (e) {
} finally {
@@ -156,7 +152,4 @@
</script>
<style lang="less" scoped>
.input-wrapper {
width: 368px;
}
</style>

View File

@@ -9,11 +9,10 @@
label-align="right"
:auto-label-width="true">
<!-- 允许多端登录 -->
<a-form-item field="login_allowMultiDevice"
label="允许多端登录"
<a-form-item label="允许多端登录"
:rules="[{required: true, message: '请选择此项'}]"
hide-asterisk>
<a-switch v-model="setting.login_allowMultiDevice"
<a-switch v-model="setting['login.allow-multi-device']"
type="round"
checked-value="true"
unchecked-value="false"
@@ -24,11 +23,10 @@
</template>
</a-form-item>
<!-- 允许凭证续签 -->
<a-form-item field="login_allowRefresh"
label="允许凭证续签"
<a-form-item label="允许凭证续签"
:rules="[{required: true, message: '请选择此项'}]"
hide-asterisk>
<a-switch v-model="setting.login_allowRefresh"
<a-switch v-model="setting['login.allow-refresh']"
type="round"
checked-value="true"
unchecked-value="false"
@@ -39,11 +37,10 @@
</template>
</a-form-item>
<!-- 登录失败锁定 -->
<a-form-item field="login_loginFailedLock"
label="登录失败锁定"
<a-form-item label="登录失败锁定"
:rules="[{required: true, message: '请选择此项'}]"
hide-asterisk>
<a-switch v-model="setting.login_loginFailedLock"
<a-switch v-model="setting['login.login-failed-lock']"
type="round"
checked-value="true"
unchecked-value="false"
@@ -54,11 +51,10 @@
</template>
</a-form-item>
<!-- 登录失败发信 -->
<a-form-item field="login_loginFailedSend"
label="登录失败发信"
<a-form-item label="登录失败发信"
:rules="[{required: true, message: '请选择此项'}]"
hide-asterisk>
<a-switch v-model="setting.login_loginFailedSend"
<a-switch v-model="setting['login.login-failed-send']"
type="round"
checked-value="true"
unchecked-value="false"
@@ -69,11 +65,10 @@
</template>
</a-form-item>
<!-- 凭证有效期 -->
<a-form-item field="login_loginSessionTime"
label="凭证有效期"
<a-form-item label="凭证有效期"
:rules="[{required: true, message: '请输入凭证有效期'}]"
hide-asterisk>
<a-input-number v-model="setting.login_loginSessionTime"
<a-input-number v-model="setting['login.login-session-time']"
class="input-wrapper"
:min="1"
:max="99999"
@@ -89,11 +84,10 @@
</template>
</a-form-item>
<!-- 凭证续签间隔 -->
<a-form-item field="login_refreshInterval"
label="凭证续签间隔"
<a-form-item label="凭证续签间隔"
:rules="[{required: true, message: '请输入凭证续签间隔时间'}]"
hide-asterisk>
<a-input-number v-model="setting.login_refreshInterval"
<a-input-number v-model="setting['login.refresh-interval']"
class="input-wrapper"
:min="1"
:max="99999"
@@ -109,11 +103,10 @@
</template>
</a-form-item>
<!-- 凭证续签最大次数 -->
<a-form-item field="login_maxRefreshCount"
label="凭证续签最大次数"
<a-form-item label="凭证续签最大次数"
:rules="[{required: true, message: '请输入凭证续签最大次数'}]"
hide-asterisk>
<a-input-number v-model="setting.login_maxRefreshCount"
<a-input-number v-model="setting['login.max-refresh-count']"
class="input-wrapper"
:min="0"
:max="99999"
@@ -125,11 +118,10 @@
</template>
</a-form-item>
<!-- 登录失败锁定阈值 -->
<a-form-item field="login_loginFailedLockThreshold"
label="登录失败锁定阈值"
<a-form-item label="登录失败锁定阈值"
:rules="[{required: true, message: '请输入登录失败锁定阈值'}]"
hide-asterisk>
<a-input-number v-model="setting.login_loginFailedLockThreshold"
<a-input-number v-model="setting['login.login-failed-lock-threshold']"
class="input-wrapper"
:min="0"
:max="99999"
@@ -141,11 +133,10 @@
</template>
</a-form-item>
<!-- 登录失败锁定时间 -->
<a-form-item field="login_loginFailedLockTime"
label="登录失败锁定时间"
<a-form-item label="登录失败锁定时间"
:rules="[{required: true, message: '请输入登录失败锁定时间'}]"
hide-asterisk>
<a-input-number v-model="setting.login_loginFailedLockTime"
<a-input-number v-model="setting['login.login-failed-lock-time']"
class="input-wrapper"
:min="0"
:max="999999"
@@ -161,11 +152,10 @@
</template>
</a-form-item>
<!-- 登录失败发信阈值 -->
<a-form-item field="login_loginFailedSendThreshold"
label="登录失败发信阈值"
<a-form-item label="登录失败发信阈值"
:rules="[{required: true, message: '请输入登录失败发信阈值'}]"
hide-asterisk>
<a-input-number v-model="setting.login_loginFailedSendThreshold"
<a-input-number v-model="setting['login.login-failed-send-threshold']"
class="input-wrapper"
:min="0"
:max="99999"
@@ -236,12 +226,12 @@
const { data } = await getSystemSetting(SystemSettingTypes.LOGIN);
setting.value = {
...data,
login_loginSessionTime: toAnonymousNumber(data.login_loginSessionTime),
login_maxRefreshCount: toAnonymousNumber(data.login_maxRefreshCount),
login_refreshInterval: toAnonymousNumber(data.login_refreshInterval),
login_loginFailedLockThreshold: toAnonymousNumber(data.login_loginFailedLockThreshold),
login_loginFailedLockTime: toAnonymousNumber(data.login_loginFailedLockTime),
login_loginFailedSendThreshold: toAnonymousNumber(data.login_loginFailedSendThreshold),
'login.login-session-time': toAnonymousNumber(data['login.login-session-time']),
'login.max-refresh-count': toAnonymousNumber(data['login.max-refresh-count']),
'login.refresh-interval': toAnonymousNumber(data['login.refresh-interval']),
'login.login-failed-lock-threshold': toAnonymousNumber(data['login.login-failed-lock-threshold']),
'login.login-failed-lock-time': toAnonymousNumber(data['login.login-failed-lock-time']),
'login.login-failed-send-threshold': toAnonymousNumber(data['login.login-failed-send-threshold']),
};
} catch (e) {
} finally {
@@ -252,7 +242,4 @@
</script>
<style lang="less" scoped>
.input-wrapper {
width: 368px;
}
</style>

View File

@@ -9,11 +9,10 @@
label-align="right"
:auto-label-width="true">
<!-- 重复文件备份 -->
<a-form-item field="sftp_uploadPresentBackup"
label="重复文件备份"
<a-form-item label="重复文件备份"
:rules="[{required: true, message: '请选择此项'}]"
hide-asterisk>
<a-switch v-model="setting.sftp_uploadPresentBackup"
<a-switch v-model="setting['sftp.upload-present-backup']"
type="round"
checked-value="true"
unchecked-value="false"
@@ -24,11 +23,10 @@
</template>
</a-form-item>
<!-- 备份文件名称 -->
<a-form-item field="sftp_uploadBackupFileName"
label="备份文件名称"
<a-form-item label="备份文件名称"
:rules="[{required: true, message: '请输入备份文件名称'}]"
hide-asterisk>
<a-input v-model="setting.sftp_uploadBackupFileName"
<a-input v-model="setting['sftp.upload-backup-file-name']"
class="input-wrapper"
placeholder="请输入备份文件名称模板"
allow-clear />
@@ -37,11 +35,10 @@
</template>
</a-form-item>
<!-- 文件预览大小 -->
<a-form-item field="sftp_previewSize"
label="文件预览大小"
<a-form-item label="文件预览大小"
:rules="[{required: true, message: '请输入文件预览大小'}]"
hide-asterisk>
<a-input-number v-model="setting.sftp_previewSize"
<a-input-number v-model="setting['sftp.preview-size']"
class="input-wrapper"
:min="0"
:max="200"
@@ -116,7 +113,7 @@
const { data } = await getSystemSetting(SystemSettingTypes.SFTP);
setting.value = {
...data,
sftp_previewSize: toAnonymousNumber(data.sftp_previewSize),
'sftp.preview-size': toAnonymousNumber(data['sftp.preview-size']),
};
} catch (e) {
} finally {
@@ -127,7 +124,4 @@
</script>
<style lang="less" scoped>
.input-wrapper {
width: 368px;
}
</style>

View File

@@ -132,6 +132,10 @@
.alert-href {
text-decoration: none;
}
.input-wrapper {
width: 368px;
}
}
</style>

View File

@@ -4,5 +4,5 @@ export const SystemSettingTypes = {
ENCRYPT: 'encrypt',
LOGIN: 'login',
LOG: 'log',
AUTO_CLEAR: 'autoClear',
AUTO_CLEAR: 'auto-clear',
};