From a2331675d7c747ad7d50830569d4322dea4772ca Mon Sep 17 00:00:00 2001 From: Lykin <137850705+tiny-craft@users.noreply.github.com> Date: Sun, 18 Feb 2024 14:17:06 +0800 Subject: [PATCH] feat: support connect by unix-socket #142 --- backend/services/connection_service.go | 16 +++++++- backend/storage/connections.go | 1 + backend/types/connection.go | 2 + .../components/dialogs/ConnectionDialog.vue | 37 ++++++++++++++----- frontend/src/langs/en-us.json | 1 + frontend/src/langs/zh-cn.json | 1 + frontend/src/stores/connections.js | 2 + 7 files changed, 49 insertions(+), 11 deletions(-) diff --git a/backend/services/connection_service.go b/backend/services/connection_service.go index 2d14bba..7cfbf72 100644 --- a/backend/services/connection_service.go +++ b/backend/services/connection_service.go @@ -122,7 +122,6 @@ func (c *connectionService) buildOption(config types.ConnectionConfig) (*redis.O } option := &redis.Options{ - Addr: fmt.Sprintf("%s:%d", config.Addr, config.Port), Username: config.Username, Password: config.Password, DialTimeout: time.Duration(config.ConnTimeout) * time.Second, @@ -130,6 +129,21 @@ func (c *connectionService) buildOption(config types.ConnectionConfig) (*redis.O WriteTimeout: time.Duration(config.ExecTimeout) * time.Second, TLSConfig: tlsConfig, } + if config.Network == "unix" { + option.Network = "unix" + if len(config.Sock) <= 0 { + option.Addr = "/tmp/redis.sock" + } else { + option.Addr = config.Sock + } + } else { + option.Network = "tcp" + if len(config.Addr) <= 0 { + option.Addr = fmt.Sprintf("127.0.0.1:%d", config.Port) + } else { + option.Addr = fmt.Sprintf("%s:%d", config.Addr, config.Port) + } + } if config.LastDB > 0 { option.DB = config.LastDB } diff --git a/backend/storage/connections.go b/backend/storage/connections.go index 9681e79..452c0c6 100644 --- a/backend/storage/connections.go +++ b/backend/storage/connections.go @@ -27,6 +27,7 @@ func (c *ConnectionsStorage) defaultConnections() types.Connections { func (c *ConnectionsStorage) defaultConnectionItem() types.ConnectionConfig { return types.ConnectionConfig{ Name: "", + Network: "tcp", Addr: "127.0.0.1", Port: 6379, Username: "", diff --git a/backend/types/connection.go b/backend/types/connection.go index dcdfb37..c581633 100644 --- a/backend/types/connection.go +++ b/backend/types/connection.go @@ -6,6 +6,8 @@ type ConnectionConfig struct { Name string `json:"name" yaml:"name"` Group string `json:"group,omitempty" yaml:"-"` LastDB int `json:"lastDB" yaml:"last_db"` + Network string `json:"network,omitempty" yaml:"network,omitempty"` + Sock string `json:"sock,omitempty" yaml:"sock,omitempty"` Addr string `json:"addr,omitempty" yaml:"addr,omitempty"` Port int `json:"port,omitempty" yaml:"port,omitempty"` Username string `json:"username,omitempty" yaml:"username,omitempty"` diff --git a/frontend/src/components/dialogs/ConnectionDialog.vue b/frontend/src/components/dialogs/ConnectionDialog.vue index a496822..d7ef936 100644 --- a/frontend/src/components/dialogs/ConnectionDialog.vue +++ b/frontend/src/components/dialogs/ConnectionDialog.vue @@ -348,16 +348,33 @@ const pasteFromClipboard = async () => { :render-label="({ label, value }) => (value === '' ? $t(label) : label)" /> - - : - + + + + + 6.0)", "test": "Test Connection", diff --git a/frontend/src/langs/zh-cn.json b/frontend/src/langs/zh-cn.json index cf3dca3..47363eb 100644 --- a/frontend/src/langs/zh-cn.json +++ b/frontend/src/langs/zh-cn.json @@ -193,6 +193,7 @@ "pwd": "密码", "name_tip": "连接名", "addr_tip": "Redis服务地址", + "sock_tip": "Redis套接字文件", "usr_tip": "(可选)Redis服务授权用户名", "pwd_tip": "(可选)Redis服务授权密码 (Redis > 6.0)", "test": "测试连接", diff --git a/frontend/src/stores/connections.js b/frontend/src/stores/connections.js index cfe3dd1..f1b3601 100644 --- a/frontend/src/stores/connections.js +++ b/frontend/src/stores/connections.js @@ -153,6 +153,8 @@ const useConnectionStore = defineStore('connections', { return { group: '', name: name || '', + network: 'tcp', + sock: '/tmp/redis.sock', addr: '127.0.0.1', port: 6379, username: '',