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: '',