perf: block add or update connection when name contains illegal characters
This commit is contained in:
parent
96a11bdb9c
commit
397c31d502
|
@ -101,12 +101,16 @@ func (c *connectionService) GetConnection(name string) (resp types.JSResp) {
|
||||||
// SaveConnection save connection config to local profile
|
// SaveConnection save connection config to local profile
|
||||||
func (c *connectionService) SaveConnection(name string, param types.ConnectionConfig) (resp types.JSResp) {
|
func (c *connectionService) SaveConnection(name string, param types.ConnectionConfig) (resp types.JSResp) {
|
||||||
var err error
|
var err error
|
||||||
|
if strings.ContainsAny(param.Name, "/") {
|
||||||
|
err = errors.New("connection name contains illegal characters")
|
||||||
|
} else {
|
||||||
if len(name) > 0 {
|
if len(name) > 0 {
|
||||||
// update connection
|
// update connection
|
||||||
err = c.conns.UpdateConnection(name, param)
|
err = c.conns.UpdateConnection(name, param)
|
||||||
} else {
|
} else {
|
||||||
err = c.conns.CreateConnection(param)
|
err = c.conns.CreateConnection(param)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
resp.Msg = err.Error()
|
resp.Msg = err.Error()
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { get, isEmpty, map } from 'lodash'
|
import { every, get, includes, isEmpty, map } from 'lodash'
|
||||||
import { computed, nextTick, ref, watch } from 'vue'
|
import { computed, nextTick, ref, watch } from 'vue'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
import { TestConnection } from 'wailsjs/go/services/connectionService.js'
|
import { TestConnection } from 'wailsjs/go/services/connectionService.js'
|
||||||
|
@ -19,8 +19,18 @@ const editName = ref('')
|
||||||
const generalForm = ref(null)
|
const generalForm = ref(null)
|
||||||
const generalFormRules = () => {
|
const generalFormRules = () => {
|
||||||
const requiredMsg = i18n.t('field_required')
|
const requiredMsg = i18n.t('field_required')
|
||||||
|
const illegalChars = ['/', '\\']
|
||||||
return {
|
return {
|
||||||
name: { required: true, message: requiredMsg, trigger: 'input' },
|
name: [
|
||||||
|
{ required: true, message: requiredMsg, trigger: 'input' },
|
||||||
|
{
|
||||||
|
validator: (rule, value) => {
|
||||||
|
return every(illegalChars, (c) => !includes(value, c))
|
||||||
|
},
|
||||||
|
message: i18n.t('illegal_characters'),
|
||||||
|
trigger: 'input',
|
||||||
|
},
|
||||||
|
],
|
||||||
addr: { required: true, message: requiredMsg, trigger: 'input' },
|
addr: { required: true, message: requiredMsg, trigger: 'input' },
|
||||||
defaultFilter: { required: true, message: requiredMsg, trigger: 'input' },
|
defaultFilter: { required: true, message: requiredMsg, trigger: 'input' },
|
||||||
keySeparator: { required: true, message: requiredMsg, trigger: 'input' },
|
keySeparator: { required: true, message: requiredMsg, trigger: 'input' },
|
||||||
|
@ -232,7 +242,7 @@ const onClose = () => {
|
||||||
v-if="showTestResult"
|
v-if="showTestResult"
|
||||||
:title="isEmpty(testResult) ? '' : $t('conn_test_fail')"
|
:title="isEmpty(testResult) ? '' : $t('conn_test_fail')"
|
||||||
:type="isEmpty(testResult) ? 'success' : 'error'">
|
:type="isEmpty(testResult) ? 'success' : 'error'">
|
||||||
<template v-if="isEmpty(testResult)"> {{ $t('conn_test_succ') }}</template>
|
<template v-if="isEmpty(testResult)">{{ $t('conn_test_succ') }}</template>
|
||||||
<template v-else>{{ testResult }}</template>
|
<template v-else>{{ testResult }}</template>
|
||||||
</n-alert>
|
</n-alert>
|
||||||
</n-spin>
|
</n-spin>
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
"reload_succ": "Reloaded!",
|
"reload_succ": "Reloaded!",
|
||||||
"field_required": "This item should not be blank",
|
"field_required": "This item should not be blank",
|
||||||
"spec_field_required": "\"{key}\" should not be blank",
|
"spec_field_required": "\"{key}\" should not be blank",
|
||||||
|
"illegal_characters": "Include illegal characters",
|
||||||
"nonexist_tab_content": "Selected key does not exist. Please retry",
|
"nonexist_tab_content": "Selected key does not exist. Please retry",
|
||||||
"empty_server_content": "Select and open a connection from the left",
|
"empty_server_content": "Select and open a connection from the left",
|
||||||
"empty_server_list": "No redis server",
|
"empty_server_list": "No redis server",
|
||||||
|
|
|
@ -132,6 +132,7 @@
|
||||||
"reload_succ": "已重新载入",
|
"reload_succ": "已重新载入",
|
||||||
"field_required": "此项不能为空",
|
"field_required": "此项不能为空",
|
||||||
"spec_field_required": "{key} 不能为空",
|
"spec_field_required": "{key} 不能为空",
|
||||||
|
"illegal_characters": "包含非法字符",
|
||||||
"nonexist_tab_content": "所选键不存在,请尝试刷新重试",
|
"nonexist_tab_content": "所选键不存在,请尝试刷新重试",
|
||||||
"empty_server_content": "可以从左边选择并打开连接",
|
"empty_server_content": "可以从左边选择并打开连接",
|
||||||
"empty_server_list": "还没添加Redis服务器",
|
"empty_server_list": "还没添加Redis服务器",
|
||||||
|
|
Loading…
Reference in New Issue