diff --git a/tlssniffer.go b/tlssniffer.go index cf733d7..10e2b0a 100644 --- a/tlssniffer.go +++ b/tlssniffer.go @@ -2,6 +2,7 @@ package starnet import ( "bytes" + "context" "crypto/tls" "io" "net" @@ -92,6 +93,28 @@ func Listen(network, address string) (*Listener, error) { return &Listener{Listener: listener}, nil } +func ListenTLSWithListenConfig(liscfg net.ListenConfig, network, address string, config *tls.Config, getConfigForClient func(hostname string) *tls.Config, allowNonTls bool) (*Listener, error) { + listener, err := liscfg.Listen(context.Background(), network, address) + if err != nil { + return nil, err + } + return &Listener{ + Listener: listener, + cfg: config, + getConfigForClient: getConfigForClient, + allowNonTls: allowNonTls, + }, nil +} + +func ListenWithListener(listener net.Listener, config *tls.Config, getConfigForClient func(hostname string) *tls.Config, allowNonTls bool) (*Listener, error) { + return &Listener{ + Listener: listener, + cfg: config, + getConfigForClient: getConfigForClient, + allowNonTls: allowNonTls, + }, nil +} + func ListenTLSWithConfig(network, address string, config *tls.Config, getConfigForClient func(hostname string) *tls.Config, allowNonTls bool) (*Listener, error) { listener, err := net.Listen(network, address) if err != nil {