From c4aa7bff21458b8c3163e0ecd83470b21c6bfcef Mon Sep 17 00:00:00 2001 From: Jordan Orelli Date: Tue, 4 Dec 2018 10:24:52 -0600 Subject: [PATCH] tuntun is here --- main.go | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 main.go diff --git a/main.go b/main.go new file mode 100644 index 0000000..b154df0 --- /dev/null +++ b/main.go @@ -0,0 +1,57 @@ +package main + +import ( + "flag" + "fmt" + "net" + "os" + "strings" + + "github.com/hypebeast/go-osc/osc" +) + +var options struct { + listen string + forward string +} + +func exit(status int, t string, args ...interface{}) { + if !strings.HasSuffix(t, "\n") { + t += "\n" + } + + if status != 0 { + fmt.Fprintf(os.Stderr, t, args...) + } else { + fmt.Fprintf(os.Stdout, t, args...) + } + os.Exit(status) +} + +func main() { + flag.StringVar(&options.listen, "listen", "0.0.0.0:9220", "listen address for receiving OSC messages") + flag.StringVar(&options.forward, "forward", "127.0.0.1:9225", "forward address for sending TCP data") + flag.Parse() + + fmt.Printf("dialing %s\n", options.forward) + conn, err := net.Dial("tcp", options.forward) + if err != nil { + exit(1, "unable to dial upstream server: %v", err) + } + defer conn.Close() + fmt.Println("connected to upstream tcp handler") + + server := &osc.Server{Addr: options.listen} + server.Handle("/example", func(msg *osc.Message) { + fmt.Printf("received OSC message: %v\n", *msg) + if len(msg.Arguments) == 0 { + return + } + _, err := fmt.Fprintf(conn, "%d\n", msg.Arguments[0]) + if err != nil { + exit(1, "ERROR: unable to forward message to upstream: %v\n", err) + } + }) + fmt.Printf("listening on %s\n", options.listen) + server.ListenAndServe() +}