Albirew/nyaa-pantsu
Albirew
/
nyaa-pantsu
Archivé
1
0
Bifurcation 0

fixing index out of range for announcelist filtering

Fixing anidex tracker not found
Cette révision appartient à :
akuma06 2017-12-21 21:05:33 +01:00
Parent 1aa73e3acc
révision 3400fcd335
3 fichiers modifiés avec 74 ajouts et 15 suppressions

Voir le fichier

@ -226,12 +226,12 @@ func (r *TorrentRequest) ValidateMultipartUpload(c *gin.Context, uploadFormTorre
// We are using here default functions from anacrolix
infohash := torrent.HashInfoBytes()
if infohash.String() == "" {
return errInvalidTorrentFile
}
r.Infohash = infohash.String()
r.Magnet = torrent.Magnet(r.Name, infohash).String()
// extract filesize
r.Filesize = torrentInfos.TotalLength()

Voir le fichier

@ -13,11 +13,12 @@ func CheckTrackers(t *metainfo.MetaInfo) []string {
// TODO: move to runtime configuration
var deadTrackers = config.Get().Torrents.Trackers.DeadTrackers
var trackerRet []string
tempList := t.AnnounceList
for kgroup, group := range tempList {
for ktracker, tracker := range group {
urlTracker, err := url.Parse(tracker)
trackerRet := []string{}
tempList := metainfo.AnnounceList{}
for _, group := range t.AnnounceList {
var trackers []string
for _, tracker := range group {
urlTracker, err := url.ParseRequestURI(tracker)
if err == nil {
good := true
for _, check := range deadTrackers {
@ -30,23 +31,35 @@ func CheckTrackers(t *metainfo.MetaInfo) []string {
}
if good {
// We only keep the good trackers
trackerRet = append(trackerRet, urlTracker.String())
} else {
// if the tracker is no good, we remove it from the group
t.AnnounceList[kgroup] = append(t.AnnounceList[kgroup][:ktracker], t.AnnounceList[kgroup][ktracker+1:]...)
trackers = append(trackers, urlTracker.String())
}
}
}
// We need to update the group of the trackers
// if there is no good trackers in this group, we remove the group
if len(t.AnnounceList[kgroup]) == 0 {
t.AnnounceList = append(t.AnnounceList[:kgroup], t.AnnounceList[kgroup+1:]...)
if len(trackers) > 0 {
tempList = append(tempList, trackers)
trackerRet = append(trackerRet, trackers...)
}
}
t.AnnounceList = tempList
defaultTracker := config.Get().Torrents.Trackers.GetDefault()
if defaultTracker != "" {
t.Announce = defaultTracker
}
for _, key := range config.Get().Torrents.Trackers.NeededTrackers {
inside := false
if key < len(config.Get().Torrents.Trackers.Default) {
tracker := config.Get().Torrents.Trackers.Default[key]
for _, tr := range trackerRet {
if tr == tracker {
inside = true
}
}
if !inside {
trackerRet = append(trackerRet, tracker)
t.AnnounceList = append(t.AnnounceList, []string{tracker})
}
}
}
return trackerRet
}

Voir le fichier

@ -0,0 +1,46 @@
package torrentValidator
import (
"testing"
"github.com/anacrolix/torrent/metainfo"
"github.com/stretchr/testify/assert"
)
func TestCheckTrackers(t *testing.T) {
assert := assert.New(t)
tests := []struct {
Info metainfo.MetaInfo
Expected []string
ExpectedList metainfo.AnnounceList
}{
{
metainfo.MetaInfo{
AnnounceList: [][]string{{"udp://nn.fof:4545/ano", "lol"}, {"://nyaa.tr/ann"}, {".co", "http://mont.co:444/ann"}},
},
[]string{"udp://nn.fof:4545/ano", "http://mont.co:444/ann", "udp://tracker.uw0.xyz:6969/announce", "http://anidex.moe:6969/announce"},
[][]string{{"udp://nn.fof:4545/ano"}, {"http://mont.co:444/ann"}, {"udp://tracker.uw0.xyz:6969/announce"}, {"http://anidex.moe:6969/announce"}},
},
{
metainfo.MetaInfo{
AnnounceList: [][]string{{"http://open.nyaatorrents.info:6544", "http://mont.co:444/ann"}}, // dead tracker
},
[]string{"http://mont.co:444/ann", "udp://tracker.uw0.xyz:6969/announce", "http://anidex.moe:6969/announce"},
[][]string{{"http://mont.co:444/ann"}, {"udp://tracker.uw0.xyz:6969/announce"}, {"http://anidex.moe:6969/announce"}},
},
{
metainfo.MetaInfo{
AnnounceList: [][]string{{"http://open.nyaatorrents.info:6544", "http://mont.co:444/ann", "http://mont.co:4434/ann"}, {"http://mont.co:444/anno"}}, // dead tracker
},
[]string{"http://mont.co:444/ann", "http://mont.co:4434/ann", "http://mont.co:444/anno", "udp://tracker.uw0.xyz:6969/announce", "http://anidex.moe:6969/announce"},
[][]string{{"http://mont.co:444/ann", "http://mont.co:4434/ann"}, {"http://mont.co:444/anno"}, {"udp://tracker.uw0.xyz:6969/announce"}, {"http://anidex.moe:6969/announce"}},
},
}
for _, test := range tests {
trackers := CheckTrackers(&test.Info)
assert.Equal(test.Expected, trackers)
assert.Equal(test.ExpectedList, test.Info.AnnounceList)
}
}