Add TLS support (only over tcp)
This commit is contained in:
@@ -47,7 +47,7 @@
|
||||
proxies = mkOption {
|
||||
type = attrsOf (submodule ({config, ...}: {
|
||||
options = let
|
||||
proto = enum ["udp" "tcp" "unix"];
|
||||
proto = enum ["udp" "tcp" "unix" "tls"];
|
||||
in {
|
||||
enable = mkOption {
|
||||
type = bool;
|
||||
|
||||
9
main.go
9
main.go
@@ -24,11 +24,18 @@ func (dialer Dialer) Dial() (net.Conn, error) {
|
||||
}
|
||||
|
||||
func Forward(server *tsnet.Server, proto, port, dst string, finish chan error) {
|
||||
var ln net.Listener
|
||||
var err error
|
||||
if proto == "tls" {
|
||||
proto = "tcp"
|
||||
ln, err = server.ListenTLS(proto, fmt.Sprint(":", port))
|
||||
} else {
|
||||
ln, err = server.Listen(proto, fmt.Sprint(":", port))
|
||||
defer ln.Close()
|
||||
}
|
||||
if err != nil {
|
||||
finish <- err
|
||||
}
|
||||
defer ln.Close()
|
||||
err = netforward.Forward(Dialer { proto: proto, addr: dst }, ln)
|
||||
if err != nil {
|
||||
finish <- err
|
||||
|
||||
Reference in New Issue
Block a user