diff --git a/server/torr/torrent.go b/server/torr/torrent.go index dd25d49..0705037 100644 --- a/server/torr/torrent.go +++ b/server/torr/torrent.go @@ -65,6 +65,11 @@ func NewTorrent(spec *torrent.TorrentSpec, bt *BTServer) (*Torrent, error) { spec.Trackers = [][]string{utils.GetDefTrackers()} } + trackers := utils.GetTrackerFromFile() + if len(trackers) > 0 { + spec.Trackers = append(spec.Trackers, [][]string{trackers}...) + } + goTorrent, _, err := bt.client.AddTorrentSpec(spec) if err != nil { return nil, err diff --git a/server/torr/utils/torrent.go b/server/torr/utils/torrent.go index 9ec3fa0..a0b4fb1 100644 --- a/server/torr/utils/torrent.go +++ b/server/torr/utils/torrent.go @@ -5,8 +5,11 @@ import ( "io/ioutil" "math/rand" "net/http" + "path/filepath" "strings" + "server/settings" + "golang.org/x/time/rate" ) @@ -27,6 +30,22 @@ var defTrackers = []string{ var loadedTrackers []string +func GetTrackerFromFile() []string { + name := filepath.Join(settings.Path, "trackers.txt") + buf, err := ioutil.ReadFile(name) + if err == nil { + list := strings.Split(string(buf), "\n") + var ret []string + for _, l := range list { + if strings.HasPrefix(l, "udp") || strings.HasPrefix(l, "http") { + ret = append(ret, l) + } + } + return ret + } + return nil +} + func GetDefTrackers() []string { loadNewTracker() if len(loadedTrackers) == 0 {