mirror of
https://github.com/bhpike65/go-stun.git
synced 2024-05-03 14:24:56 +08:00
42 lines
882 B
Go
42 lines
882 B
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"github.com/bhpike65/go-stun/nat"
|
|
"net"
|
|
"os"
|
|
)
|
|
|
|
var server = flag.String("server", "stun.l.google.com:19302", "STUN server to query")
|
|
var altServer = flag.String("alt-server", "", "alternative STUN server to query")
|
|
var local = flag.String("local", "", "local ip:port to use")
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
|
|
if *local == "" {
|
|
addrs, err := net.InterfaceAddrs()
|
|
if err != nil {
|
|
fmt.Println("get interface addrs error: ", err.Error())
|
|
os.Exit(-1)
|
|
}
|
|
for _, a := range addrs {
|
|
if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
|
|
if ipnet.IP.To4() != nil {
|
|
*local = ipnet.IP.String() + ":0"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
res, err := nat.Discovery(*local, *server, *altServer)
|
|
if err != nil {
|
|
fmt.Println("nat discovery error: ", err.Error())
|
|
os.Exit(-1)
|
|
}
|
|
|
|
fmt.Printf("nat discovery result:\n%s", res)
|
|
return
|
|
}
|