Files
tsnet-proxy/main.go
2023-11-28 22:20:02 +00:00

51 lines
897 B
Go

package main
import (
"flag"
"fmt"
"log"
"net"
"os"
"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()
if !(host_proto != "" && hostname != "" && host_port != "" && dst_proto != "" && dst_addr != "") {
fmt.Println("Usage: tsnet-proxy PROTO HOSTNAME PORT DST-PROTO DST")
fmt.Println("Where PROTO is one of tcp, udp, unix")
os.Exit(1)
}
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)
}
}