2 Proxy is a Minetest proxy server
3 supporting multiple concurrent connections.
6 proxy dial:port listen:port
7 where dial:port is the server address
8 and listen:port is the address to listen on.
19 "github.com/Minetest-j45/mt"
23 if len(os.Args) != 3 {
24 fmt.Fprintln(os.Stderr, "usage: proxy dial:port listen:port")
28 srvaddr, err := net.ResolveUDPAddr("udp", os.Args[1])
33 lc, err := net.ListenPacket("udp", os.Args[2])
41 clt, err := l.Accept()
47 log.Print(clt.RemoteAddr().String() + " connected")
49 conn, err := net.DialUDP("udp", nil, srvaddr)
54 srv := mt.Connect(conn)
61 func proxy(src, dest mt.Peer) {
62 s := fmt.Sprint(src.ID(), " (", src.RemoteAddr(), "): ")
65 pkt, err := src.Recv()
67 if errors.Is(err, net.ErrClosed) {
68 if err := src.WhyClosed(); err != nil {
69 log.Print(s, "disconnected: ", err)
71 log.Print(s, "disconnected")
80 if _, err := dest.Send(pkt); err != nil {