set PublicIp6 and sort IPs

This commit is contained in:
nikk gitanes
2022-01-20 00:54:20 +03:00
parent 3f8ee962ec
commit 705e15df48
3 changed files with 37 additions and 1 deletions

View File

@@ -8,6 +8,7 @@ import (
"os/user" "os/user"
"path/filepath" "path/filepath"
"runtime" "runtime"
"sort"
"strconv" "strconv"
"time" "time"
@@ -185,6 +186,7 @@ func getDefaultFriendlyName() string {
} }
} }
if len(list) > 0 { if len(list) > 0 {
sort.Strings(list)
return ret + " " + list[0] return ret + " " + list[0]
} }
} }

View File

@@ -117,6 +117,12 @@ func (bt *BTServer) configure() {
} }
log.Println("Client config:", settings.BTsets) log.Println("Client config:", settings.BTsets)
// set public IPv6
bt.config.PublicIp6 = getPublicIp6()
if bt.config.PublicIp6 != nil {
log.Println("PublicIp6:", bt.config.PublicIp6)
}
} }
func (bt *BTServer) GetTorrent(hash torrent.InfoHash) *Torrent { func (bt *BTServer) GetTorrent(hash torrent.InfoHash) *Torrent {
@@ -139,3 +145,29 @@ func (bt *BTServer) RemoveTorrent(hash torrent.InfoHash) {
torr.Close() torr.Close()
} }
} }
func getPublicIp6() net.IP {
ifaces, err := net.Interfaces()
if err != nil {
log.Println("Error get public IPv6")
return nil
}
for _, i := range ifaces {
addrs, _ := i.Addrs()
if i.Flags&net.FlagUp == net.FlagUp {
for _, addr := range addrs {
var ip net.IP
switch v := addr.(type) {
case *net.IPNet:
ip = v.IP
case *net.IPAddr:
ip = v.IP
}
if !ip.IsLoopback() && !ip.IsPrivate() && ip.To4 == nil && ip.To16 != nil {
return ip
}
}
}
}
return nil
}

View File

@@ -2,6 +2,7 @@ package web
import ( import (
"net" "net"
"sort"
"github.com/gin-contrib/cors" "github.com/gin-contrib/cors"
"github.com/gin-contrib/location" "github.com/gin-contrib/location"
@@ -29,7 +30,7 @@ func Start(port string) {
log.TLogln("Start TorrServer") log.TLogln("Start TorrServer")
ips := getLocalIps() ips := getLocalIps()
if len(ips) > 0 { if len(ips) > 0 {
log.TLogln("IP:", ips) log.TLogln("IPs:", ips)
} }
err := BTS.Connect() err := BTS.Connect()
if err != nil { if err != nil {
@@ -107,5 +108,6 @@ func getLocalIps() []string {
} }
} }
} }
sort.Strings(list)
return list return list
} }