🔨 优化系统配置逻辑.
This commit is contained in:
@@ -34,116 +34,116 @@ public interface ConfigKeys {
|
|||||||
/**
|
/**
|
||||||
* SFTP 文件预览大小
|
* SFTP 文件预览大小
|
||||||
*/
|
*/
|
||||||
String SFTP_PREVIEW_SIZE = "sftp_previewSize";
|
String SFTP_PREVIEW_SIZE = "sftp.preview-size";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SFTP 重复文件备份
|
* SFTP 重复文件备份
|
||||||
*/
|
*/
|
||||||
String SFTP_UPLOAD_PRESENT_BACKUP = "sftp_uploadPresentBackup";
|
String SFTP_UPLOAD_PRESENT_BACKUP = "sftp.upload-present-backup";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SFTP 备份文件名称
|
* 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";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ spring:
|
|||||||
port: ${REDIS_PORT:6379}
|
port: ${REDIS_PORT:6379}
|
||||||
password: ${REDIS_PASSWORD:Data@123456}
|
password: ${REDIS_PASSWORD:Data@123456}
|
||||||
database: ${REDIS_DATABASE:1}
|
database: ${REDIS_DATABASE:1}
|
||||||
data-version: ${REDIS_DATA_VERSION:1}
|
data-version: ${REDIS_DATA_VERSION:2}
|
||||||
mock: false
|
mock: false
|
||||||
redisson:
|
redisson:
|
||||||
threads: 2
|
threads: 2
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ spring:
|
|||||||
port: ${REDIS_PORT:6379}
|
port: ${REDIS_PORT:6379}
|
||||||
password: ${REDIS_PASSWORD:Data@123456}
|
password: ${REDIS_PASSWORD:Data@123456}
|
||||||
database: ${REDIS_DATABASE:0}
|
database: ${REDIS_DATABASE:0}
|
||||||
data-version: ${REDIS_DATA_VERSION:1}
|
data-version: ${REDIS_DATA_VERSION:2}
|
||||||
redisson:
|
redisson:
|
||||||
threads: 4
|
threads: 4
|
||||||
netty-threads: 4
|
netty-threads: 4
|
||||||
|
|||||||
@@ -50,12 +50,12 @@ public class AppLogConfig {
|
|||||||
/**
|
/**
|
||||||
* 是否生成详细的执行日志
|
* 是否生成详细的执行日志
|
||||||
*/
|
*/
|
||||||
private final ConfigRef<Boolean> execDetailLog;
|
private final ConfigRef<Boolean> execDetailEnabled;
|
||||||
|
|
||||||
public AppLogConfig(ConfigStore configStore) {
|
public AppLogConfig(ConfigStore configStore) {
|
||||||
this.trackerLoadLines = configStore.int32(ConfigKeys.LOG_TRACKER_LOAD_LINES);
|
this.trackerLoadLines = configStore.int32(ConfigKeys.LOG_TRACKER_LOAD_LINES);
|
||||||
this.trackerLoadInterval = configStore.int32(ConfigKeys.LOG_TRACKER_LOAD_INTERVAL);
|
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() {
|
public Integer getTrackerLoadLines() {
|
||||||
@@ -66,8 +66,8 @@ public class AppLogConfig {
|
|||||||
return trackerLoadInterval.value;
|
return trackerLoadInterval.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getExecDetailLog() {
|
public Boolean getExecDetailEnabled() {
|
||||||
return execDetailLog.value;
|
return execDetailEnabled.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ public class ExecTaskHandler implements IExecTaskHandler {
|
|||||||
* @return handler
|
* @return handler
|
||||||
*/
|
*/
|
||||||
private IExecCommandHandler createCommandHandler(Long execHostId) {
|
private IExecCommandHandler createCommandHandler(Long execHostId) {
|
||||||
if (Booleans.isTrue(appLogConfig.getExecDetailLog())) {
|
if (Booleans.isTrue(appLogConfig.getExecDetailEnabled())) {
|
||||||
// 详细日志
|
// 详细日志
|
||||||
return new ExecCommandDetailHandler(execHostId, execLog, builtParams, timeoutChecker);
|
return new ExecCommandDetailHandler(execHostId, execLog, builtParams, timeoutChecker);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ public interface UserCacheKeyDefine {
|
|||||||
CacheKeyDefine LOGIN_FAILED_COUNT = new CacheKeyBuilder()
|
CacheKeyDefine LOGIN_FAILED_COUNT = new CacheKeyBuilder()
|
||||||
.key("user:login-failed:{}")
|
.key("user:login-failed:{}")
|
||||||
.desc("用户登录失败次数 ${username}")
|
.desc("用户登录失败次数 ${username}")
|
||||||
|
.noPrefix()
|
||||||
.type(Integer.class)
|
.type(Integer.class)
|
||||||
.struct(RedisCacheStruct.STRING)
|
.struct(RedisCacheStruct.STRING)
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ public interface AlarmPolicyCacheKeyDefine {
|
|||||||
CacheKeyDefine ALARM_RULE_SILENCE = new CacheKeyBuilder()
|
CacheKeyDefine ALARM_RULE_SILENCE = new CacheKeyBuilder()
|
||||||
.key("alarm:silence:{}:{}")
|
.key("alarm:silence:{}:{}")
|
||||||
.desc("告警规则沉默标志 ${agentKey} ${ruleId}")
|
.desc("告警规则沉默标志 ${agentKey} ${ruleId}")
|
||||||
|
.noPrefix()
|
||||||
.type(Long.class)
|
.type(Long.class)
|
||||||
.struct(RedisCacheStruct.STRING)
|
.struct(RedisCacheStruct.STRING)
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -45,53 +45,53 @@ export type SystemSetting = SftpSetting
|
|||||||
* SFTP 设置
|
* SFTP 设置
|
||||||
*/
|
*/
|
||||||
export interface SftpSetting {
|
export interface SftpSetting {
|
||||||
sftp_previewSize: number;
|
['sftp.preview-size']: number;
|
||||||
sftp_uploadPresentBackup: string;
|
['sftp.upload-present-backup']: string;
|
||||||
sftp_uploadBackupFileName: string;
|
['sftp.upload-backup-file-name']: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录设置
|
* 登录设置
|
||||||
*/
|
*/
|
||||||
export interface LoginSetting {
|
export interface LoginSetting {
|
||||||
login_allowMultiDevice: string;
|
['login.allow-multi-device']: string;
|
||||||
login_allowRefresh: string;
|
['login.allow-refresh']: string;
|
||||||
login_maxRefreshCount: number;
|
['login.max-refresh-count']: number;
|
||||||
login_refreshInterval: number;
|
['login.refresh-interval']: number;
|
||||||
login_loginFailedLock: string;
|
['login.login-failed-lock']: string;
|
||||||
login_loginFailedLockThreshold: number;
|
['login.login-failed-lock-threshold']: number;
|
||||||
login_loginFailedLockTime: number;
|
['login.login-failed-lock-time']: number;
|
||||||
login_loginFailedSend: string;
|
['login.login-failed-send']: string;
|
||||||
login_loginFailedSendThreshold: number;
|
['login.login-failed-send-threshold']: number;
|
||||||
login_loginSessionTime: number;
|
['login.login-session-time']: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加密设置
|
* 加密设置
|
||||||
*/
|
*/
|
||||||
export interface EncryptSetting {
|
export interface EncryptSetting {
|
||||||
encrypt_publicKey: string;
|
['encrypt.public-key']: string;
|
||||||
encrypt_privateKey: string;
|
['encrypt.private-key']: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 日志设置
|
* 日志设置
|
||||||
*/
|
*/
|
||||||
export interface LogSetting {
|
export interface LogSetting {
|
||||||
log_webScrollLines: number;
|
['log.web-scroll-lines']: number;
|
||||||
log_trackerLoadLines: number;
|
['log.tracker-load-lines']: number;
|
||||||
log_trackerLoadInterval: number;
|
['log.tracker-load-interval']: number;
|
||||||
log_execDetailLog: string;
|
['log.exec-detail.enabled']: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自动清理设置
|
* 自动清理设置
|
||||||
*/
|
*/
|
||||||
export interface AutoClearSetting {
|
export interface AutoClearSetting {
|
||||||
autoClear_execLogEnabled: string;
|
['auto-clear.exec-log.enabled']: string;
|
||||||
autoClear_execLogKeepDays: number;
|
['auto-clear.exec-log.keep-days']: number;
|
||||||
autoClear_terminalLogEnabled: string;
|
['auto-clear.terminal-log.enabled']: string;
|
||||||
autoClear_terminalLogKeepDays: number;
|
['auto-clear.terminal-log.keep-days']: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -55,8 +55,8 @@
|
|||||||
execLog.value = { ...record };
|
execLog.value = { ...record };
|
||||||
currentHostExecId.value = record.hosts[0].id;
|
currentHostExecId.value = record.hosts[0].id;
|
||||||
// 获取最大显示行数
|
// 获取最大显示行数
|
||||||
const { log_webScrollLines } = await useCacheStore().loadSystemSetting();
|
const { 'log.web-scroll-lines': webScrollLines } = await useCacheStore().loadSystemSetting();
|
||||||
const scrollLines = toAnonymousNumber(log_webScrollLines) || 1000;
|
const scrollLines = toAnonymousNumber(webScrollLines) || 1000;
|
||||||
// 创建 appender
|
// 创建 appender
|
||||||
appender.value = markRaw(new LogAppender({
|
appender.value = markRaw(new LogAppender({
|
||||||
id: record.id,
|
id: record.id,
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export const encrypt = async (data: string | undefined): Promise<string | undefi
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
// 获取公钥
|
// 获取公钥
|
||||||
const publicKey = (await useCacheStore().loadSystemSetting()).encrypt_publicKey;
|
const publicKey = (await useCacheStore().loadSystemSetting())['encrypt.public-key'];
|
||||||
const encryptor = new JSEncrypt();
|
const encryptor = new JSEncrypt();
|
||||||
encryptor.setPublicKey(publicKey);
|
encryptor.setPublicKey(publicKey);
|
||||||
|
|
||||||
|
|||||||
@@ -9,11 +9,10 @@
|
|||||||
label-align="right"
|
label-align="right"
|
||||||
:auto-label-width="true">
|
:auto-label-width="true">
|
||||||
<!-- 自动清理执行记录 -->
|
<!-- 自动清理执行记录 -->
|
||||||
<a-form-item field="autoClear_execLogEnabled"
|
<a-form-item label="自动清理执行记录"
|
||||||
label="自动清理执行记录"
|
|
||||||
:rules="[{required: true, message: '请选择此项'}]"
|
:rules="[{required: true, message: '请选择此项'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-switch v-model="setting.autoClear_execLogEnabled"
|
<a-switch v-model="setting['auto-clear.exec-log.enabled']"
|
||||||
type="round"
|
type="round"
|
||||||
checked-value="true"
|
checked-value="true"
|
||||||
unchecked-value="false"
|
unchecked-value="false"
|
||||||
@@ -24,11 +23,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 执行记录保留天数 -->
|
<!-- 执行记录保留天数 -->
|
||||||
<a-form-item field="autoClear_execLogKeepDays"
|
<a-form-item label="执行记录保留天数"
|
||||||
label="执行记录保留天数"
|
|
||||||
:rules="[{required: true, message: '请输入执行记录保留天数'}]"
|
:rules="[{required: true, message: '请输入执行记录保留天数'}]"
|
||||||
hide-asterisk>
|
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"
|
class="input-wrapper"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="99999"
|
:max="99999"
|
||||||
@@ -44,11 +42,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 自动清理终端记录 -->
|
<!-- 自动清理终端记录 -->
|
||||||
<a-form-item field="autoClear_terminalLogEnabled"
|
<a-form-item label="自动清理终端记录"
|
||||||
label="自动清理终端记录"
|
|
||||||
:rules="[{required: true, message: '请选择此项'}]"
|
:rules="[{required: true, message: '请选择此项'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-switch v-model="setting.autoClear_terminalLogEnabled"
|
<a-switch v-model="setting['auto-clear.terminal-log.enabled']"
|
||||||
type="round"
|
type="round"
|
||||||
checked-value="true"
|
checked-value="true"
|
||||||
unchecked-value="false"
|
unchecked-value="false"
|
||||||
@@ -59,11 +56,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 终端记录保留天数 -->
|
<!-- 终端记录保留天数 -->
|
||||||
<a-form-item field="autoClear_terminalLogKeepDays"
|
<a-form-item label="终端记录保留天数"
|
||||||
label="终端记录保留天数"
|
|
||||||
:rules="[{required: true, message: '请输入终端记录保留天数'}]"
|
:rules="[{required: true, message: '请输入终端记录保留天数'}]"
|
||||||
hide-asterisk>
|
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"
|
class="input-wrapper"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="99999"
|
:max="99999"
|
||||||
@@ -138,8 +134,8 @@
|
|||||||
const { data } = await getSystemSetting(SystemSettingTypes.AUTO_CLEAR);
|
const { data } = await getSystemSetting(SystemSettingTypes.AUTO_CLEAR);
|
||||||
setting.value = {
|
setting.value = {
|
||||||
...data,
|
...data,
|
||||||
autoClear_execLogKeepDays: toAnonymousNumber(data.autoClear_execLogKeepDays),
|
'auto-clear.exec-log.keep-days': toAnonymousNumber(data['auto-clear.exec-log.keep-days']),
|
||||||
autoClear_terminalLogKeepDays: toAnonymousNumber(data.autoClear_terminalLogKeepDays),
|
'auto-clear.terminal-log.keep-days': toAnonymousNumber(data['auto-clear.terminal-log.keep-days']),
|
||||||
};
|
};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
} finally {
|
} finally {
|
||||||
@@ -150,7 +146,4 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.input-wrapper {
|
|
||||||
width: 368px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -13,23 +13,21 @@
|
|||||||
<a-alert>请输入 PKCS8 格式的 RSA Base64 密钥, 用于前后端传输时的数据加密</a-alert>
|
<a-alert>请输入 PKCS8 格式的 RSA Base64 密钥, 用于前后端传输时的数据加密</a-alert>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 加密公钥 -->
|
<!-- 加密公钥 -->
|
||||||
<a-form-item field="encrypt_publicKey"
|
<a-form-item label="加密公钥"
|
||||||
label="加密公钥"
|
|
||||||
:rules="[{required: true, message: '请输入加密公钥'}]"
|
:rules="[{required: true, message: '请输入加密公钥'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-textarea v-model="setting.encrypt_publicKey"
|
<a-textarea v-model="setting['encrypt.public-key']"
|
||||||
class="input-wrapper"
|
class="text-wrapper"
|
||||||
placeholder="RSA 公钥 Base64"
|
placeholder="RSA 公钥 Base64"
|
||||||
:auto-size="{ minRows: 5, maxRows: 5 }"
|
:auto-size="{ minRows: 5, maxRows: 5 }"
|
||||||
allow-clear />
|
allow-clear />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 加密私钥 -->
|
<!-- 加密私钥 -->
|
||||||
<a-form-item field="encrypt_privateKey"
|
<a-form-item label="加密私钥"
|
||||||
label="加密私钥"
|
|
||||||
:rules="[{required: true, message: '请输入加密私钥'}]"
|
:rules="[{required: true, message: '请输入加密私钥'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-textarea v-model="setting.encrypt_privateKey"
|
<a-textarea v-model="setting['encrypt.private-key']"
|
||||||
class="input-wrapper"
|
class="text-wrapper"
|
||||||
placeholder="RSA 私钥 Base64"
|
placeholder="RSA 私钥 Base64"
|
||||||
:auto-size="{ minRows: 14, maxRows: 14 }"
|
:auto-size="{ minRows: 14, maxRows: 14 }"
|
||||||
allow-clear />
|
allow-clear />
|
||||||
@@ -97,8 +95,8 @@
|
|||||||
setLoading(true);
|
setLoading(true);
|
||||||
try {
|
try {
|
||||||
const { data } = await generatorKeypair();
|
const { data } = await generatorKeypair();
|
||||||
setting.value.encrypt_publicKey = data.publicKey;
|
setting.value['encrypt.public-key'] = data.publicKey;
|
||||||
setting.value.encrypt_privateKey = data.privateKey;
|
setting.value['encrypt.private-key'] = data.privateKey;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
} finally {
|
} finally {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
@@ -125,7 +123,7 @@
|
|||||||
.main-container {
|
.main-container {
|
||||||
width: 728px !important;
|
width: 728px !important;
|
||||||
|
|
||||||
.input-wrapper {
|
.text-wrapper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,11 +9,10 @@
|
|||||||
label-align="right"
|
label-align="right"
|
||||||
:auto-label-width="true">
|
:auto-label-width="true">
|
||||||
<!-- 执行详细日志 -->
|
<!-- 执行详细日志 -->
|
||||||
<a-form-item field="log_execDetailLog"
|
<a-form-item label="执行详细日志"
|
||||||
label="执行详细日志"
|
|
||||||
:rules="[{required: true, message: '请选择此项'}]"
|
:rules="[{required: true, message: '请选择此项'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-switch v-model="setting.log_execDetailLog"
|
<a-switch v-model="setting['log.exec-detail.enabled']"
|
||||||
type="round"
|
type="round"
|
||||||
checked-value="true"
|
checked-value="true"
|
||||||
unchecked-value="false"
|
unchecked-value="false"
|
||||||
@@ -24,11 +23,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 最大显示行数 -->
|
<!-- 最大显示行数 -->
|
||||||
<a-form-item field="log_webScrollLines"
|
<a-form-item label="最大显示行数"
|
||||||
label="最大显示行数"
|
|
||||||
:rules="[{required: true, message: '请输入日志最大显示行数'}]"
|
:rules="[{required: true, message: '请输入日志最大显示行数'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input-number v-model="setting.log_webScrollLines"
|
<a-input-number v-model="setting['log.web-scroll-lines']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="999999"
|
:max="999999"
|
||||||
@@ -44,11 +42,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 日志加载行数 -->
|
<!-- 日志加载行数 -->
|
||||||
<a-form-item field="log_trackerLoadLines"
|
<a-form-item label="日志加载行数"
|
||||||
label="日志加载行数"
|
|
||||||
:rules="[{required: true, message: '请输入日志加载行数'}]"
|
:rules="[{required: true, message: '请输入日志加载行数'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input-number v-model="setting.log_trackerLoadLines"
|
<a-input-number v-model="setting['log.tracker-load-lines']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="99999"
|
:max="99999"
|
||||||
@@ -64,11 +61,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 日志监听间隔 -->
|
<!-- 日志监听间隔 -->
|
||||||
<a-form-item field="log_trackerLoadInterval"
|
<a-form-item label="日志监听间隔"
|
||||||
label="日志监听间隔"
|
|
||||||
:rules="[{required: true, message: '请输入日志监听间隔'}]"
|
:rules="[{required: true, message: '请输入日志监听间隔'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input-number v-model="setting.log_trackerLoadInterval"
|
<a-input-number v-model="setting['log.tracker-load-interval']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="99999"
|
:max="99999"
|
||||||
@@ -143,9 +139,9 @@
|
|||||||
const { data } = await getSystemSetting(SystemSettingTypes.LOG);
|
const { data } = await getSystemSetting(SystemSettingTypes.LOG);
|
||||||
setting.value = {
|
setting.value = {
|
||||||
...data,
|
...data,
|
||||||
log_webScrollLines: toAnonymousNumber(data.log_webScrollLines),
|
'log.web-scroll-lines': toAnonymousNumber(data['log.web-scroll-lines']),
|
||||||
log_trackerLoadInterval: toAnonymousNumber(data.log_trackerLoadInterval),
|
'log.tracker-load-interval': toAnonymousNumber(data['log.tracker-load-interval']),
|
||||||
log_trackerLoadLines: toAnonymousNumber(data.log_trackerLoadLines),
|
'log.tracker-load-lines': toAnonymousNumber(data['log.tracker-load-lines']),
|
||||||
};
|
};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
} finally {
|
} finally {
|
||||||
@@ -156,7 +152,4 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.input-wrapper {
|
|
||||||
width: 368px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -9,11 +9,10 @@
|
|||||||
label-align="right"
|
label-align="right"
|
||||||
:auto-label-width="true">
|
:auto-label-width="true">
|
||||||
<!-- 允许多端登录 -->
|
<!-- 允许多端登录 -->
|
||||||
<a-form-item field="login_allowMultiDevice"
|
<a-form-item label="允许多端登录"
|
||||||
label="允许多端登录"
|
|
||||||
:rules="[{required: true, message: '请选择此项'}]"
|
:rules="[{required: true, message: '请选择此项'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-switch v-model="setting.login_allowMultiDevice"
|
<a-switch v-model="setting['login.allow-multi-device']"
|
||||||
type="round"
|
type="round"
|
||||||
checked-value="true"
|
checked-value="true"
|
||||||
unchecked-value="false"
|
unchecked-value="false"
|
||||||
@@ -24,11 +23,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 允许凭证续签 -->
|
<!-- 允许凭证续签 -->
|
||||||
<a-form-item field="login_allowRefresh"
|
<a-form-item label="允许凭证续签"
|
||||||
label="允许凭证续签"
|
|
||||||
:rules="[{required: true, message: '请选择此项'}]"
|
:rules="[{required: true, message: '请选择此项'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-switch v-model="setting.login_allowRefresh"
|
<a-switch v-model="setting['login.allow-refresh']"
|
||||||
type="round"
|
type="round"
|
||||||
checked-value="true"
|
checked-value="true"
|
||||||
unchecked-value="false"
|
unchecked-value="false"
|
||||||
@@ -39,11 +37,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 登录失败锁定 -->
|
<!-- 登录失败锁定 -->
|
||||||
<a-form-item field="login_loginFailedLock"
|
<a-form-item label="登录失败锁定"
|
||||||
label="登录失败锁定"
|
|
||||||
:rules="[{required: true, message: '请选择此项'}]"
|
:rules="[{required: true, message: '请选择此项'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-switch v-model="setting.login_loginFailedLock"
|
<a-switch v-model="setting['login.login-failed-lock']"
|
||||||
type="round"
|
type="round"
|
||||||
checked-value="true"
|
checked-value="true"
|
||||||
unchecked-value="false"
|
unchecked-value="false"
|
||||||
@@ -54,11 +51,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 登录失败发信 -->
|
<!-- 登录失败发信 -->
|
||||||
<a-form-item field="login_loginFailedSend"
|
<a-form-item label="登录失败发信"
|
||||||
label="登录失败发信"
|
|
||||||
:rules="[{required: true, message: '请选择此项'}]"
|
:rules="[{required: true, message: '请选择此项'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-switch v-model="setting.login_loginFailedSend"
|
<a-switch v-model="setting['login.login-failed-send']"
|
||||||
type="round"
|
type="round"
|
||||||
checked-value="true"
|
checked-value="true"
|
||||||
unchecked-value="false"
|
unchecked-value="false"
|
||||||
@@ -69,11 +65,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 凭证有效期 -->
|
<!-- 凭证有效期 -->
|
||||||
<a-form-item field="login_loginSessionTime"
|
<a-form-item label="凭证有效期"
|
||||||
label="凭证有效期"
|
|
||||||
:rules="[{required: true, message: '请输入凭证有效期'}]"
|
:rules="[{required: true, message: '请输入凭证有效期'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input-number v-model="setting.login_loginSessionTime"
|
<a-input-number v-model="setting['login.login-session-time']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
:min="1"
|
:min="1"
|
||||||
:max="99999"
|
:max="99999"
|
||||||
@@ -89,11 +84,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 凭证续签间隔 -->
|
<!-- 凭证续签间隔 -->
|
||||||
<a-form-item field="login_refreshInterval"
|
<a-form-item label="凭证续签间隔"
|
||||||
label="凭证续签间隔"
|
|
||||||
:rules="[{required: true, message: '请输入凭证续签间隔时间'}]"
|
:rules="[{required: true, message: '请输入凭证续签间隔时间'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input-number v-model="setting.login_refreshInterval"
|
<a-input-number v-model="setting['login.refresh-interval']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
:min="1"
|
:min="1"
|
||||||
:max="99999"
|
:max="99999"
|
||||||
@@ -109,11 +103,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 凭证续签最大次数 -->
|
<!-- 凭证续签最大次数 -->
|
||||||
<a-form-item field="login_maxRefreshCount"
|
<a-form-item label="凭证续签最大次数"
|
||||||
label="凭证续签最大次数"
|
|
||||||
:rules="[{required: true, message: '请输入凭证续签最大次数'}]"
|
:rules="[{required: true, message: '请输入凭证续签最大次数'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input-number v-model="setting.login_maxRefreshCount"
|
<a-input-number v-model="setting['login.max-refresh-count']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="99999"
|
:max="99999"
|
||||||
@@ -125,11 +118,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 登录失败锁定阈值 -->
|
<!-- 登录失败锁定阈值 -->
|
||||||
<a-form-item field="login_loginFailedLockThreshold"
|
<a-form-item label="登录失败锁定阈值"
|
||||||
label="登录失败锁定阈值"
|
|
||||||
:rules="[{required: true, message: '请输入登录失败锁定阈值'}]"
|
:rules="[{required: true, message: '请输入登录失败锁定阈值'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input-number v-model="setting.login_loginFailedLockThreshold"
|
<a-input-number v-model="setting['login.login-failed-lock-threshold']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="99999"
|
:max="99999"
|
||||||
@@ -141,11 +133,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 登录失败锁定时间 -->
|
<!-- 登录失败锁定时间 -->
|
||||||
<a-form-item field="login_loginFailedLockTime"
|
<a-form-item label="登录失败锁定时间"
|
||||||
label="登录失败锁定时间"
|
|
||||||
:rules="[{required: true, message: '请输入登录失败锁定时间'}]"
|
:rules="[{required: true, message: '请输入登录失败锁定时间'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input-number v-model="setting.login_loginFailedLockTime"
|
<a-input-number v-model="setting['login.login-failed-lock-time']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="999999"
|
:max="999999"
|
||||||
@@ -161,11 +152,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 登录失败发信阈值 -->
|
<!-- 登录失败发信阈值 -->
|
||||||
<a-form-item field="login_loginFailedSendThreshold"
|
<a-form-item label="登录失败发信阈值"
|
||||||
label="登录失败发信阈值"
|
|
||||||
:rules="[{required: true, message: '请输入登录失败发信阈值'}]"
|
:rules="[{required: true, message: '请输入登录失败发信阈值'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input-number v-model="setting.login_loginFailedSendThreshold"
|
<a-input-number v-model="setting['login.login-failed-send-threshold']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="99999"
|
:max="99999"
|
||||||
@@ -236,12 +226,12 @@
|
|||||||
const { data } = await getSystemSetting(SystemSettingTypes.LOGIN);
|
const { data } = await getSystemSetting(SystemSettingTypes.LOGIN);
|
||||||
setting.value = {
|
setting.value = {
|
||||||
...data,
|
...data,
|
||||||
login_loginSessionTime: toAnonymousNumber(data.login_loginSessionTime),
|
'login.login-session-time': toAnonymousNumber(data['login.login-session-time']),
|
||||||
login_maxRefreshCount: toAnonymousNumber(data.login_maxRefreshCount),
|
'login.max-refresh-count': toAnonymousNumber(data['login.max-refresh-count']),
|
||||||
login_refreshInterval: toAnonymousNumber(data.login_refreshInterval),
|
'login.refresh-interval': toAnonymousNumber(data['login.refresh-interval']),
|
||||||
login_loginFailedLockThreshold: toAnonymousNumber(data.login_loginFailedLockThreshold),
|
'login.login-failed-lock-threshold': toAnonymousNumber(data['login.login-failed-lock-threshold']),
|
||||||
login_loginFailedLockTime: toAnonymousNumber(data.login_loginFailedLockTime),
|
'login.login-failed-lock-time': toAnonymousNumber(data['login.login-failed-lock-time']),
|
||||||
login_loginFailedSendThreshold: toAnonymousNumber(data.login_loginFailedSendThreshold),
|
'login.login-failed-send-threshold': toAnonymousNumber(data['login.login-failed-send-threshold']),
|
||||||
};
|
};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
} finally {
|
} finally {
|
||||||
@@ -252,7 +242,4 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.input-wrapper {
|
|
||||||
width: 368px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -9,11 +9,10 @@
|
|||||||
label-align="right"
|
label-align="right"
|
||||||
:auto-label-width="true">
|
:auto-label-width="true">
|
||||||
<!-- 重复文件备份 -->
|
<!-- 重复文件备份 -->
|
||||||
<a-form-item field="sftp_uploadPresentBackup"
|
<a-form-item label="重复文件备份"
|
||||||
label="重复文件备份"
|
|
||||||
:rules="[{required: true, message: '请选择此项'}]"
|
:rules="[{required: true, message: '请选择此项'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-switch v-model="setting.sftp_uploadPresentBackup"
|
<a-switch v-model="setting['sftp.upload-present-backup']"
|
||||||
type="round"
|
type="round"
|
||||||
checked-value="true"
|
checked-value="true"
|
||||||
unchecked-value="false"
|
unchecked-value="false"
|
||||||
@@ -24,11 +23,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 备份文件名称 -->
|
<!-- 备份文件名称 -->
|
||||||
<a-form-item field="sftp_uploadBackupFileName"
|
<a-form-item label="备份文件名称"
|
||||||
label="备份文件名称"
|
|
||||||
:rules="[{required: true, message: '请输入备份文件名称'}]"
|
:rules="[{required: true, message: '请输入备份文件名称'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input v-model="setting.sftp_uploadBackupFileName"
|
<a-input v-model="setting['sftp.upload-backup-file-name']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
placeholder="请输入备份文件名称模板"
|
placeholder="请输入备份文件名称模板"
|
||||||
allow-clear />
|
allow-clear />
|
||||||
@@ -37,11 +35,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<!-- 文件预览大小 -->
|
<!-- 文件预览大小 -->
|
||||||
<a-form-item field="sftp_previewSize"
|
<a-form-item label="文件预览大小"
|
||||||
label="文件预览大小"
|
|
||||||
:rules="[{required: true, message: '请输入文件预览大小'}]"
|
:rules="[{required: true, message: '请输入文件预览大小'}]"
|
||||||
hide-asterisk>
|
hide-asterisk>
|
||||||
<a-input-number v-model="setting.sftp_previewSize"
|
<a-input-number v-model="setting['sftp.preview-size']"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="200"
|
:max="200"
|
||||||
@@ -116,7 +113,7 @@
|
|||||||
const { data } = await getSystemSetting(SystemSettingTypes.SFTP);
|
const { data } = await getSystemSetting(SystemSettingTypes.SFTP);
|
||||||
setting.value = {
|
setting.value = {
|
||||||
...data,
|
...data,
|
||||||
sftp_previewSize: toAnonymousNumber(data.sftp_previewSize),
|
'sftp.preview-size': toAnonymousNumber(data['sftp.preview-size']),
|
||||||
};
|
};
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
} finally {
|
} finally {
|
||||||
@@ -127,7 +124,4 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.input-wrapper {
|
|
||||||
width: 368px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -132,6 +132,10 @@
|
|||||||
.alert-href {
|
.alert-href {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.input-wrapper {
|
||||||
|
width: 368px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ export const SystemSettingTypes = {
|
|||||||
ENCRYPT: 'encrypt',
|
ENCRYPT: 'encrypt',
|
||||||
LOGIN: 'login',
|
LOGIN: 'login',
|
||||||
LOG: 'log',
|
LOG: 'log',
|
||||||
AUTO_CLEAR: 'autoClear',
|
AUTO_CLEAR: 'auto-clear',
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user