From be7079cd8f1cbdbab0a08c7b36bec86dc8bcc3c8 Mon Sep 17 00:00:00 2001 From: Cristiano Prato Date: Fri, 21 Jul 2023 14:38:44 +0200 Subject: [PATCH] add support for gRPC services exposed locally via UNIX sockets UNIX sockets are already supported by google.golang.org/grpc, it is only required to omit the port to be able to use them --- mode/common.go | 8 +++++++- repl/repl.go | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/mode/common.go b/mode/common.go index dfc7839e..f39378cd 100644 --- a/mode/common.go +++ b/mode/common.go @@ -13,7 +13,13 @@ import ( ) func newGRPCClient(cfg *config.Config) (grpc.Client, error) { - addr := fmt.Sprintf("%s:%s", cfg.Server.Host, cfg.Server.Port) + var addr string + if strings.HasPrefix(cfg.Server.Host, "unix://") { + addr = cfg.Server.Host + } else { + addr = fmt.Sprintf("%s:%s", cfg.Server.Host, cfg.Server.Port) + } + if cfg.Request.Web { //TODO: remove second arg return grpc.NewWebClient(addr, cfg.Server.Reflection, false, "", "", "", grpc.Headers(cfg.Request.Header)), nil diff --git a/repl/repl.go b/repl/repl.go index bd91a893..2a31a6d7 100644 --- a/repl/repl.go +++ b/repl/repl.go @@ -188,7 +188,13 @@ func (r *REPL) printSplash(p string) { } func (r *REPL) makePrefix() string { - p := fmt.Sprintf("%s:%s> ", r.serverCfg.Host, r.serverCfg.Port) + var p string + if strings.HasPrefix(r.serverCfg.Host, "unix://") { + p = fmt.Sprintf("%s> ", r.serverCfg.Host) + } else { + p = fmt.Sprintf("%s:%s> ", r.serverCfg.Host, r.serverCfg.Port) + } + dsn := usecase.GetDomainSourceName() if dsn != "" { p = fmt.Sprintf("%s@%s", dsn, p)