~oliverpool/tuspload-me

2a0526ee2cae20df38d9f7c51cba703a1247da6e — oliverpool 1 year, 6 months ago b5b5c82
bind to outbound ip
1 files changed, 16 insertions(+), 2 deletions(-)

M main.go
M main.go => main.go +16 -2
@@ 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
}