diff options
author | anon5 <anon5clam@protonmail.com> | 2021-06-21 18:47:26 +0000 |
---|---|---|
committer | anon5 <anon5clam@protonmail.com> | 2021-06-21 18:47:26 +0000 |
commit | 425da65ed46061303604610bb539d6495b2b1f3f (patch) | |
tree | 10ae3e665132c369ce0207676321cef870679923 /rudp/proxy | |
parent | 9f239d341ef46b656dda759020da87bdd0606344 (diff) | |
download | mt-425da65ed46061303604610bb539d6495b2b1f3f.tar.xz |
Add high-level protocol (de)serialization
Diffstat (limited to 'rudp/proxy')
-rw-r--r-- | rudp/proxy/proxy.go | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/rudp/proxy/proxy.go b/rudp/proxy/proxy.go deleted file mode 100644 index b8ca9f4..0000000 --- a/rudp/proxy/proxy.go +++ /dev/null @@ -1,79 +0,0 @@ -/* -Proxy is a Minetest RUDP proxy server -supporting multiple concurrent connections. - -Usage: - proxy dial:port listen:port -where dial:port is the server address -and listen:port is the address to listen on. -*/ -package main - -import ( - "errors" - "fmt" - "log" - "net" - "os" - - "github.com/anon55555/mt/rudp" -) - -func main() { - if len(os.Args) != 3 { - fmt.Fprintln(os.Stderr, "usage: proxy dial:port listen:port") - os.Exit(1) - } - - pc, err := net.ListenPacket("udp", os.Args[2]) - if err != nil { - log.Fatal(err) - } - defer pc.Close() - - l := rudp.Listen(pc) - for { - clt, err := l.Accept() - if err != nil { - log.Print("accept: ", err) - continue - } - - log.Print(clt.ID(), ": connected") - - conn, err := net.Dial("udp", os.Args[1]) - if err != nil { - log.Print(err) - continue - } - srv := rudp.Connect(conn) - - go proxy(clt, srv) - go proxy(srv, clt) - } -} - -func proxy(src, dest *rudp.Conn) { - s := fmt.Sprint(src.ID(), " (", src.RemoteAddr(), "): ") - - for { - pkt, err := src.Recv() - if err != nil { - if errors.Is(err, net.ErrClosed) { - if err := src.WhyClosed(); err != nil { - log.Print(s, "disconnected: ", err) - } else { - log.Print(s, "disconnected") - } - break - } - - log.Print(s, err) - continue - } - - dest.Send(pkt) - } - - dest.Close() -} |