From 40f425137158a71e70d0fb07cff8d90f049b1a7e Mon Sep 17 00:00:00 2001 From: Christian Weichel Date: Tue, 13 Apr 2021 13:15:41 +0000 Subject: [PATCH] Support direct control of the server listener --- server/server.go | 3 +++ server/server_listen.go | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/server/server.go b/server/server.go index 5ecdda4..74c943f 100644 --- a/server/server.go +++ b/server/server.go @@ -4,6 +4,7 @@ import ( "context" "errors" "log" + "net" "net/http" "net/http/httputil" "net/url" @@ -30,6 +31,8 @@ type Config struct { Reverse bool KeepAlive time.Duration TLS TLSConfig + + Listener net.Listener } // Server respresent a chisel service diff --git a/server/server_listen.go b/server/server_listen.go index a7dcfe8..c2da711 100644 --- a/server/server_listen.go +++ b/server/server_listen.go @@ -23,6 +23,10 @@ type TLSConfig struct { } func (s *Server) listener(host, port string) (net.Listener, error) { + if s.config.Listener != nil { + return s.config.Listener, nil + } + hasDomains := len(s.config.TLS.Domains) > 0 hasKeyCert := s.config.TLS.Key != "" && s.config.TLS.Cert != "" if hasDomains && hasKeyCert {