Skip to content

Commit c45f148

Browse files
committed
add unix domain socket support for api & metrics services
1 parent fdc88af commit c45f148

File tree

4 files changed

+35
-8
lines changed

4 files changed

+35
-8
lines changed

cmd/gost/config.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package main
22

33
import (
4+
"strings"
5+
46
"github.com/go-gost/core/auth"
57
"github.com/go-gost/core/logger"
68
"github.com/go-gost/core/service"
@@ -166,8 +168,14 @@ func buildAPIService(cfg *config.APIConfig) (service.Service, error) {
166168
auther = xauth.AuthenticatorGroup(authers...)
167169
}
168170

171+
network := "tcp"
172+
addr := cfg.Addr
173+
if strings.HasPrefix(addr, "unix://") {
174+
network = "unix"
175+
addr = strings.TrimPrefix(addr, "unix://")
176+
}
169177
return api.NewService(
170-
cfg.Addr,
178+
network, addr,
171179
api.PathPrefixOption(cfg.PathPrefix),
172180
api.AccessLogOption(cfg.AccessLog),
173181
api.AutherOption(auther),
@@ -179,8 +187,15 @@ func buildMetricsService(cfg *config.MetricsConfig) (service.Service, error) {
179187
if cfg.Auther != "" {
180188
auther = registry.AutherRegistry().Get(cfg.Auther)
181189
}
190+
191+
network := "tcp"
192+
addr := cfg.Addr
193+
if strings.HasPrefix(addr, "unix://") {
194+
network = "unix"
195+
addr = strings.TrimPrefix(addr, "unix://")
196+
}
182197
return metrics.NewService(
183-
cfg.Addr,
198+
network, addr,
184199
metrics.PathOption(cfg.Path),
185200
metrics.AutherOption(auther),
186201
)

cmd/gost/program.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"strings"
88

99
"github.com/go-gost/core/logger"
10+
"github.com/go-gost/core/service"
1011
"github.com/go-gost/x/config"
1112
"github.com/go-gost/x/config/cmd"
1213
"github.com/go-gost/x/config/parsing"
@@ -18,7 +19,10 @@ import (
1819
"github.com/judwhite/go-svc"
1920
)
2021

21-
type program struct{}
22+
type program struct {
23+
apiSrv service.Service
24+
metricSrv service.Service
25+
}
2226

2327
func (p *program) Init(env svc.Environment) error {
2428
cfg := &config.Config{}
@@ -154,10 +158,11 @@ func (p *program) Start() error {
154158
if err != nil {
155159
return err
156160
}
161+
p.apiSrv = s
157162
go func() {
158163
defer s.Close()
159164
log.Info("api service on ", s.Addr())
160-
log.Fatal(s.Serve())
165+
log.Error(s.Serve())
161166
}()
162167
}
163168
if cfg.Profiling != nil {
@@ -178,10 +183,11 @@ func (p *program) Start() error {
178183
if err != nil {
179184
log.Fatal(err)
180185
}
186+
p.metricSrv = s
181187
go func() {
182188
defer s.Close()
183189
log.Info("metrics service on ", s.Addr())
184-
log.Fatal(s.Serve())
190+
log.Error(s.Serve())
185191
}()
186192
}
187193
}
@@ -201,6 +207,12 @@ func (p *program) Stop() error {
201207
srv.Close()
202208
logger.Default().Debugf("service %s shutdown", name)
203209
}
210+
if p.apiSrv != nil {
211+
p.apiSrv.Close()
212+
}
213+
if p.metricSrv != nil {
214+
p.metricSrv.Close()
215+
}
204216
return nil
205217
}
206218

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ toolchain go1.22.2
66

77
require (
88
github.com/go-gost/core v0.1.11
9-
github.com/go-gost/x v0.2.18
9+
github.com/go-gost/x v0.2.19
1010
github.com/judwhite/go-svc v1.2.1
1111
)
1212

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ github.com/go-gost/relay v0.5.0 h1:JG1tgy/KWiVXS0ukuVXvbM0kbYuJTWxYpJ5JwzsCf/c=
6363
github.com/go-gost/relay v0.5.0/go.mod h1:lcX+23LCQ3khIeASBo+tJ/WbwXFO32/N5YN6ucuYTG8=
6464
github.com/go-gost/tls-dissector v0.1.1 h1:2zUOTPzCQAUQ54Rpy0UEi3JPMQSYsIFSeFeKrzmkCoU=
6565
github.com/go-gost/tls-dissector v0.1.1/go.mod h1:/9QfdewqmHdaE362Hv5nDaSWLx3pCmtD870d6GaquXs=
66-
github.com/go-gost/x v0.2.18 h1:qNUUHoQMw3PaSS9ATLamkpYFw3FHWFh1vdzlxu9U6Ag=
67-
github.com/go-gost/x v0.2.18/go.mod h1:tRK1pmbgYAeAEKm0/1kByL/xhxPZrCVZr5rsufUwFd8=
66+
github.com/go-gost/x v0.2.19 h1:5gw+11L6H707huiuzYKj9JpdPHFo9G7HoBXE3kP44Zg=
67+
github.com/go-gost/x v0.2.19/go.mod h1:tRK1pmbgYAeAEKm0/1kByL/xhxPZrCVZr5rsufUwFd8=
6868
github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
6969
github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
7070
github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=

0 commit comments

Comments
 (0)