Merge branch 'master' into old-engine

This commit is contained in:
nikk gitanes
2022-05-25 23:17:51 +03:00
21 changed files with 105 additions and 47 deletions

View File

@@ -1,12 +1,14 @@
package torr
import (
"context"
"fmt"
"log"
"net"
"strconv"
"sync"
"github.com/anacrolix/publicip"
"github.com/anacrolix/torrent"
"github.com/anacrolix/torrent/metainfo"
@@ -58,7 +60,7 @@ func (bt *BTServer) Connect() error {
bt.mu.Lock()
defer bt.mu.Unlock()
var err error
bt.configure()
bt.configure(context.TODO())
bt.client, err = torrent.NewClient(bt.config)
bt.torrents = make(map[metainfo.Hash]*Torrent)
InitApiHelper(bt)
@@ -75,7 +77,7 @@ func (bt *BTServer) Disconnect() {
}
}
func (bt *BTServer) configure() {
func (bt *BTServer) configure(ctx context.Context) (err error) {
blocklist, _ := utils.ReadBlockedIP()
bt.config = torrent.NewDefaultClientConfig()
@@ -121,24 +123,28 @@ func (bt *BTServer) configure() {
if settings.BTsets.UploadRateLimit > 0 {
bt.config.UploadRateLimiter = utils.Limit(settings.BTsets.UploadRateLimit * 1024)
}
if settings.BTsets.PeersListenPort > 0 {
log.Println("Set listen port", settings.BTsets.PeersListenPort)
bt.config.ListenPort = settings.BTsets.PeersListenPort
if settings.TorAddr != "" {
bt.config.SetListenAddr(settings.TorAddr)
} else {
upnpport := 32000
for {
log.Println("Check upnp port", upnpport)
l, err := net.Listen("tcp", ":"+strconv.Itoa(upnpport))
if l != nil {
l.Close()
if settings.BTsets.PeersListenPort > 0 {
log.Println("Set listen port", settings.BTsets.PeersListenPort)
bt.config.ListenPort = settings.BTsets.PeersListenPort
} else {
upnpport := 32000
for {
log.Println("Check upnp port", upnpport)
l, err := net.Listen("tcp", ":"+strconv.Itoa(upnpport))
if l != nil {
l.Close()
}
if err == nil {
break
}
upnpport++
}
if err == nil {
break
}
upnpport++
log.Println("Set upnp port", upnpport)
bt.config.ListenPort = upnpport
}
log.Println("Set upnp port", upnpport)
bt.config.ListenPort = upnpport
}
log.Println("Client config:", settings.BTsets)
@@ -150,7 +156,10 @@ func (bt *BTServer) configure() {
}
}
if bt.config.PublicIp4 == nil {
bt.config.PublicIp4 = getPublicIp4()
bt.config.PublicIp4, err = publicip.Get4(ctx)
if err != nil {
log.Printf("error getting public ipv4 address: %v", err)
}
}
if bt.config.PublicIp4 != nil {
log.Println("PublicIp4:", bt.config.PublicIp4)
@@ -163,11 +172,15 @@ func (bt *BTServer) configure() {
}
}
if bt.config.PublicIp6 == nil {
bt.config.PublicIp6 = getPublicIp6()
bt.config.PublicIp6, err = publicip.Get6(ctx)
if err != nil {
log.Printf("error getting public ipv6 address: %v", err)
}
}
if bt.config.PublicIp6 != nil {
log.Println("PublicIp6:", bt.config.PublicIp6)
}
return err
}
func (bt *BTServer) GetTorrent(hash torrent.InfoHash) *Torrent {