package main import ( "flag" "fmt" "log" "net" "github.com/goburrow/netforward" "tailscale.com/tsnet" ) var ( host_proto = flag.Arg(0) hostname = flag.Arg(1) host_port = flag.Arg(2) dst_proto = flag.Arg(3) dst_addr = flag.Arg(4) ) type Dialer struct{} func (dialer Dialer) Dial() (net.Conn, error) { return net.Dial(dst_proto, dst_addr) } func main() { flag.Parse() s := &tsnet.Server{ Hostname: hostname, } defer s.Close() ln, err := s.Listen(host_proto, fmt.Sprint(":", host_port)) if err != nil { log.Fatal(err) } defer ln.Close() err = netforward.Forward(Dialer{}, ln) if err != nil { log.Fatal(err) } }