0f66ec9340
* Missing comments and Function renaming * Added some missing comments * Renamed functions to get user followers/following * GetFollowers to get followers * GetLikings to get who the user is following * Renaming + Add support of previous trackers * Renaming user.Likings in user.Followers * Renaming user.Liked in user.Likings * Add a new string field Trackers in torrent model * Trackers from torrent file are now populated to the databse * Needed trackers are added to the torrent trackers if not provided or if trackers is empty in DB (backward compatibility) * New check and url encoding * No more regex for verifying tracker url * Encodes tracker url for "&" & "?" character possibly existing in tracker url and breaking magnet link * Improvements * Trackers are now encoded in torrent.ParseTrackers * Faster check by using the for loop of checktrackers * No more boolean, we need to check len of array returned * torrent.Trackers can be directly used in url as they are encoded like : tr=tracker1&tr=tracker2&tr=...
62 lignes
1,4 Kio
Go
62 lignes
1,4 Kio
Go
package uploadService
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"net/url"
|
|
|
|
"github.com/NyaaPantsu/nyaa/config"
|
|
"github.com/NyaaPantsu/nyaa/model"
|
|
)
|
|
|
|
// CheckTrackers : Check if there is good trackers in torrent
|
|
func CheckTrackers(trackers []string) []string {
|
|
// TODO: move to runtime configuration
|
|
var deadTrackers = []string{ // substring matches!
|
|
"://open.nyaatorrents.info:6544",
|
|
"://tracker.openbittorrent.com:80",
|
|
"://tracker.publicbt.com:80",
|
|
"://stats.anisource.net:2710",
|
|
"://exodus.desync.com",
|
|
"://open.demonii.com:1337",
|
|
"://tracker.istole.it:80",
|
|
"://tracker.ccc.de:80",
|
|
"://bt2.careland.com.cn:6969",
|
|
"://announce.torrentsmd.com:8080",
|
|
"://open.demonii.com:1337",
|
|
"://tracker.btcake.com",
|
|
"://tracker.prq.to",
|
|
"://bt.rghost.net"}
|
|
|
|
var trackerRet []string
|
|
for _, t := range trackers {
|
|
urlTracker, err := url.Parse(t)
|
|
if err == nil {
|
|
good := true
|
|
for _, check := range deadTrackers {
|
|
if strings.Contains(t, check) {
|
|
good = false
|
|
break // No need to continue the for loop
|
|
}
|
|
}
|
|
if good {
|
|
trackerRet = append(trackerRet, urlTracker.String())
|
|
}
|
|
}
|
|
}
|
|
return trackerRet
|
|
}
|
|
|
|
// IsUploadEnabled : Check if upload is enabled in config
|
|
func IsUploadEnabled(u model.User) bool {
|
|
if config.UploadsDisabled {
|
|
if config.AdminsAreStillAllowedTo && u.IsModerator() {
|
|
return true
|
|
}
|
|
if config.TrustedUsersAreStillAllowedTo && u.IsTrusted() {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
return true
|
|
}
|