From 6ba22b0935eceb8b884636541278ed152ca9843d Mon Sep 17 00:00:00 2001 From: Christian Groschupp Date: Mon, 15 Apr 2024 21:40:47 +0200 Subject: [PATCH] feat: expand homedir of ssh private key --- dialer/ssh/metadata.go | 5 +++++ dialer/sshd/metadata.go | 5 +++++ go.mod | 7 ++++++- go.sum | 4 ++-- listener/ssh/metadata.go | 5 +++++ listener/sshd/metadata.go | 5 +++++ 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/dialer/ssh/metadata.go b/dialer/ssh/metadata.go index 2fa8315..a50378c 100644 --- a/dialer/ssh/metadata.go +++ b/dialer/ssh/metadata.go @@ -6,6 +6,7 @@ import ( mdata "github.com/go-gost/core/metadata" mdutil "github.com/go-gost/core/metadata/util" + "github.com/mitchellh/go-homedir" "golang.org/x/crypto/ssh" ) @@ -26,6 +27,10 @@ func (d *sshDialer) parseMetadata(md mdata.Metadata) (err error) { ) if key := mdutil.GetString(md, privateKeyFile); key != "" { + key, err = homedir.Expand(key) + if err != nil { + return err + } data, err := os.ReadFile(key) if err != nil { return err diff --git a/dialer/sshd/metadata.go b/dialer/sshd/metadata.go index 4a9b484..f06eea1 100644 --- a/dialer/sshd/metadata.go +++ b/dialer/sshd/metadata.go @@ -6,6 +6,7 @@ import ( mdata "github.com/go-gost/core/metadata" mdutil "github.com/go-gost/core/metadata/util" + "github.com/mitchellh/go-homedir" "golang.org/x/crypto/ssh" ) @@ -26,6 +27,10 @@ func (d *sshdDialer) parseMetadata(md mdata.Metadata) (err error) { ) if key := mdutil.GetString(md, privateKeyFile); key != "" { + key, err = homedir.Expand(key) + if err != nil { + return err + } data, err := os.ReadFile(key) if err != nil { return err diff --git a/go.mod b/go.mod index d4e06ab..ce7c107 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/go-gost/x -go 1.21 +go 1.22 + +toolchain go1.22.2 require ( github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 @@ -19,6 +21,7 @@ require ( github.com/google/uuid v1.4.0 github.com/gorilla/websocket v1.5.1 github.com/miekg/dns v1.1.57 + github.com/mitchellh/go-homedir v1.1.0 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/pion/dtls/v2 v2.2.6 github.com/pires/go-proxyproto v0.7.0 @@ -114,3 +117,5 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect gopkg.in/ini.v1 v1.67.0 // indirect ) + +replace github.com/go-gost/core => ../gost-core diff --git a/go.sum b/go.sum index d08bdff..0059b54 100644 --- a/go.sum +++ b/go.sum @@ -49,8 +49,6 @@ github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= -github.com/go-gost/core v0.0.0-20240131151724-a06608ccafbf h1:akQ96Ibm+P7IftDluZPoMCzBzbLR/TjFu8Wpjy3H7hM= -github.com/go-gost/core v0.0.0-20240131151724-a06608ccafbf/go.mod h1:ndkgWVYRLwupVaFFWv8ML1Nr8tD3xhHK245PLpUDg4E= github.com/go-gost/gosocks4 v0.0.1 h1:+k1sec8HlELuQV7rWftIkmy8UijzUt2I6t+iMPlGB2s= github.com/go-gost/gosocks4 v0.0.1/go.mod h1:3B6L47HbU/qugDg4JnoFPHgJXE43Inz8Bah1QaN9qCc= github.com/go-gost/gosocks5 v0.4.0 h1:EIrOEkpJez4gwHrMa33frA+hHXJyevjp47thpMQsJzI= @@ -135,6 +133,8 @@ github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zk github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= github.com/miekg/dns v1.1.57/go.mod h1:uqRjCRUuEAA6qsOiJvDd+CFo/vW+y5WR6SNmHE55hZk= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= diff --git a/listener/ssh/metadata.go b/listener/ssh/metadata.go index cb9c32e..c291f9f 100644 --- a/listener/ssh/metadata.go +++ b/listener/ssh/metadata.go @@ -6,6 +6,7 @@ import ( mdata "github.com/go-gost/core/metadata" mdutil "github.com/go-gost/core/metadata/util" ssh_util "github.com/go-gost/x/internal/util/ssh" + "github.com/mitchellh/go-homedir" "golang.org/x/crypto/ssh" ) @@ -29,6 +30,10 @@ func (l *sshListener) parseMetadata(md mdata.Metadata) (err error) { ) if key := mdutil.GetString(md, privateKeyFile); key != "" { + key, err = homedir.Expand(key) + if err != nil { + return err + } data, err := os.ReadFile(key) if err != nil { return err diff --git a/listener/sshd/metadata.go b/listener/sshd/metadata.go index f4d3497..4d2e5ed 100644 --- a/listener/sshd/metadata.go +++ b/listener/sshd/metadata.go @@ -6,6 +6,7 @@ import ( mdata "github.com/go-gost/core/metadata" mdutil "github.com/go-gost/core/metadata/util" ssh_util "github.com/go-gost/x/internal/util/ssh" + "github.com/mitchellh/go-homedir" "golang.org/x/crypto/ssh" ) @@ -29,6 +30,10 @@ func (l *sshdListener) parseMetadata(md mdata.Metadata) (err error) { ) if key := mdutil.GetString(md, privateKeyFile); key != "" { + key, err = homedir.Expand(key) + if err != nil { + return err + } data, err := os.ReadFile(key) if err != nil { return err