From 2a0526ee2cae20df38d9f7c51cba703a1247da6e Mon Sep 17 00:00:00 2001 From: oliverpool Date: Wed, 8 Sep 2021 10:18:49 +0200 Subject: [PATCH] bind to outbound ip --- main.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 7454db9..3a26b11 100644 --- a/main.go +++ b/main.go @@ -5,6 +5,7 @@ import ( "fmt" "io/fs" "log" + "net" "net/http" "os" "path" @@ -26,7 +27,7 @@ func main() { }, }), UploadDir: "./upload", - Addr: ":54321", + Addr: getOutboundIP().String() + ":54321", }.run() if err != nil { log.Fatal(err) @@ -87,7 +88,7 @@ func (s server) run() error { mux.Handle("/files/", http.StripPrefix("/files/", handler)) mux.Handle("/", http.FileServer(s.PublicDir)) - log.Println("Listening on " + s.Addr) + log.Println("Listening on http://" + s.Addr) return http.ListenAndServe(s.Addr, mux) } @@ -117,3 +118,16 @@ type subFS struct { func (s subFS) Open(name string) (fs.File, error) { return s.fs.Open(path.Join(s.folder, name)) } + +// Get preferred outbound ip of this machine +func getOutboundIP() net.IP { + conn, err := net.Dial("udp", "1.1.1.1:80") + if err != nil { + log.Fatal(err) + } + defer conn.Close() + + localAddr := conn.LocalAddr().(*net.UDPAddr) + + return localAddr.IP +} -- 2.38.5