diff options
Diffstat (limited to 'network')
-rw-r--r-- | network/ip.go | 33 | ||||
-rw-r--r-- | network/network.go | 27 | ||||
-rw-r--r-- | network/session.go | 23 |
3 files changed, 56 insertions, 27 deletions
diff --git a/network/ip.go b/network/ip.go new file mode 100644 index 0000000..0c6451e --- /dev/null +++ b/network/ip.go @@ -0,0 +1,33 @@ +package network + +import ( + "fmt" + "log/slog" + "math/rand" + "net" +) + +func GetOutboundIP() net.IP { + conn, err := net.Dial("udp", "8.8.8.8:80") + if err != nil { + slog.Error("err", err) + } + defer conn.Close() + + localAddr := conn.LocalAddr().(*net.UDPAddr) + + return localAddr.IP +} + +func GetRandomAvailablePort() (int, error) { + for i := 0; i < 100; i += 1 { + port := rand.Intn(65535-1024) + 1024 + addr := fmt.Sprintf(":%d", port) + ln, err := net.Listen("tcp", addr) + if err == nil { + defer ln.Close() + return port, nil + } + } + return 0, fmt.Errorf("failed to find an available port after multiple attempts") +} diff --git a/network/network.go b/network/network.go index 5ab2dac..8283993 100644 --- a/network/network.go +++ b/network/network.go @@ -4,8 +4,6 @@ import ( "bufio" "encoding/json" "fmt" - "log/slog" - "math/rand" "net" "sync" "time" @@ -213,28 +211,3 @@ func (n *TCPNetwork) IsConnected() bool { defer n.Unlock() return n.isConnected } - -func GetOutboundIP() net.IP { - conn, err := net.Dial("udp", "8.8.8.8:80") - if err != nil { - slog.Error("err", err) - } - defer conn.Close() - - localAddr := conn.LocalAddr().(*net.UDPAddr) - - return localAddr.IP -} - -func GetRandomAvailablePort() (int, error) { - for i := 0; i < 100; i += 1 { - port := rand.Intn(65535-1024) + 1024 - addr := fmt.Sprintf(":%d", port) - ln, err := net.Listen("tcp", addr) - if err == nil { - defer ln.Close() - return port, nil - } - } - return 0, fmt.Errorf("failed to find an available port after multiple attempts") -} diff --git a/network/session.go b/network/session.go new file mode 100644 index 0000000..a4f60aa --- /dev/null +++ b/network/session.go @@ -0,0 +1,23 @@ +package network + +import ( + "math/rand" +) + +var adjectives = []string{ + "adamant", "adept", "adventurous", "arcadian", "auspicious", + "awesome", "blossoming", "brave", "charming", "chatty", + "circular", "considerate", "cubic", "curious", "delighted", +} + +var nouns = []string{ + "aardvark", "accordion", "apple", "apricot", "bee", + "brachiosaur", "cactus", "capsicum", "clarinet", "cowbell", + "crab", "cuckoo", "cymbal", "diplodocus", "donkey", +} + +func NewSession() string { + noun := nouns[rand.Intn(len(nouns))] + adjective := adjectives[rand.Intn(len(adjectives))] + return noun + "-" + adjective +} |