@@ -118,9 +134,11 @@
+
+
@@ -134,6 +152,7 @@
+
@@ -143,7 +162,7 @@
-
+
@@ -218,6 +237,7 @@
import { ElMessage, ElMessageBox } from 'element-plus'
import { getSystemConfig, reloadSystem, setSystemConfig } from '@/api/system'
import { emailTest } from '@/api/email'
+ import { CreateUUID } from '@/utils/format'
defineOptions({ name: 'Config' })
@@ -229,10 +249,10 @@
routerPrefix: '',
jwt: { signingKey: '******', expiresTime: '168h', bufferTime: '24h', issuer: 'kra' },
captcha: { keyLong: 6, imgWidth: 240, imgHeight: 80, storeExpiration: '3m' },
- local: { storePath: 'uploads/file', pathPrefix: 'uploads/file' }, media: { sessionTtl: 24, maxFileSize: 0 },
+ local: { storePath: 'uploads/file', pathPrefix: 'uploads/file' }, media: { sessionTtl: 24, maxFileSize: 0, chunkDir: 'uploads/chunks' },
zap: { level: 'info', prefix: '[kra] ', format: 'json', director: 'logs', encode_level: 'LowercaseLevelEncoder', stacktrace_key: 'stacktrace', show_line: true, log_in_console: true, retention_day: 7, access_req_body: true, access_resp_data: true, access_req_headers: true, access_log_max_bytes: 1024, file_only_modules: [] },
cors: { mode: 'whitelist', whitelist: [] }, app: { node: '', app_id: 'kra', env: 'development' },
- system: { useRedis: false, useMultipoint: false, useStrictAuth: false, disableAutoMigrate: false, useMongo: false },
+ system: { useRedis: false, useMultipoint: false, useStrictAuth: false, disableAutoMigrate: false, useMongo: false, addr: 8000, iplimitCount: 0, iplimitTime: 0 },
storage: { type: 'local', qiniu: {}, aliyun_oss: {}, huawei_obs: {}, tencent_cos: {}, aws_s3: {}, cloudflare_r2: {}, minio: {} }
},
email: {
@@ -258,6 +278,8 @@
const databaseListText = ref('[]')
const redisListText = ref('[]')
const corsRulesText = ref('[]')
+ const diskListText = ref('[]')
+ const fileOnlyModulesText = ref('')
const initForm = async () => {
const res = await getSystemConfig()
@@ -296,6 +318,8 @@
databaseListText.value = JSON.stringify(config.value.data.database_list || [], null, 2)
redisListText.value = JSON.stringify(config.value.data.redis_list || [], null, 2)
corsRulesText.value = JSON.stringify(config.value.admin.cors.whitelist || [], null, 2)
+ diskListText.value = JSON.stringify(config.value.admin.disk_list || [], null, 2)
+ fileOnlyModulesText.value = (config.value.admin.zap.file_only_modules || []).join('\n')
}
}
@@ -308,8 +332,10 @@
config.value.data.database_list = JSON.parse(databaseListText.value || '[]')
config.value.data.redis_list = JSON.parse(redisListText.value || '[]')
config.value.admin.cors.whitelist = JSON.parse(corsRulesText.value || '[]')
+ config.value.admin.disk_list = JSON.parse(diskListText.value || '[]')
+ config.value.admin.zap.file_only_modules = fileOnlyModulesText.value.split('\n').map(item => item.trim()).filter(Boolean)
} catch {
- ElMessage.error('MongoDB 或多数据库 JSON 格式不正确')
+ ElMessage.error('JSON 配置格式不正确')
return
}
const res = await setSystemConfig({ config: config.value })
@@ -322,8 +348,17 @@
}
}
+ const generateSigningKey = () => {
+ config.value.admin.jwt.signingKey = CreateUUID()
+ }
+
const reload = async () => {
- await ElMessageBox.confirm('确定要重载服务配置吗?', '提示')
+ try {
+ await ElMessageBox.confirm('确定要重载服务配置吗?', '提示')
+ } catch {
+ ElMessage.info('取消重载')
+ return
+ }
const res = await reloadSystem()
if (res.code === 0) ElMessage.success('配置已重载')
}
@@ -332,7 +367,12 @@
testing.value = true
try {
const res = await emailTest()
- if (res.code === 0) ElMessage.success('测试邮件发送成功')
+ if (res.code === 0) {
+ ElMessage.success('测试邮件发送成功')
+ await initForm()
+ } else {
+ ElMessage.error('测试邮件发送失败')
+ }
} finally {
testing.value = false
}