Initial commit: docker compose config
Release Docker multi arch / docker (push) Has been cancelled
Test Install Script / Test Script Syntax (push) Has been cancelled
Test Install Script / Test on almalinux-10 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-10 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (root) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (default) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (root) (push) Has been cancelled
Test Install Script / Test on debian-11 (default) (push) Has been cancelled
Test Install Script / Test on debian-11 (root) (push) Has been cancelled
Test Install Script / Test on debian-12 (default) (push) Has been cancelled
Test Install Script / Test on debian-12 (root) (push) Has been cancelled
Test Install Script / Test on debian-13 (default) (push) Has been cancelled
Test Install Script / Test on debian-13 (root) (push) Has been cancelled
Test Install Script / Test on fedora-latest (default) (push) Has been cancelled
Test Install Script / Test on fedora-latest (root) (push) Has been cancelled
Test Install Script / Test on rocky-10 (default) (push) Has been cancelled
Test Install Script / Test on rocky-10 (root) (push) Has been cancelled
Test Install Script / Test on rocky-8 (default) (push) Has been cancelled
Test Install Script / Test on rocky-8 (root) (push) Has been cancelled
Test Install Script / Test on rocky-9 (default) (push) Has been cancelled
Test Install Script / Test on rocky-9 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (root) (push) Has been cancelled
Release Docker multi arch / docker (push) Has been cancelled
Test Install Script / Test Script Syntax (push) Has been cancelled
Test Install Script / Test on almalinux-10 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-10 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-8 (root) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (default) (push) Has been cancelled
Test Install Script / Test on almalinux-9 (root) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (default) (push) Has been cancelled
Test Install Script / Test on amazonlinux-2 (root) (push) Has been cancelled
Test Install Script / Test on debian-11 (default) (push) Has been cancelled
Test Install Script / Test on debian-11 (root) (push) Has been cancelled
Test Install Script / Test on debian-12 (default) (push) Has been cancelled
Test Install Script / Test on debian-12 (root) (push) Has been cancelled
Test Install Script / Test on debian-13 (default) (push) Has been cancelled
Test Install Script / Test on debian-13 (root) (push) Has been cancelled
Test Install Script / Test on fedora-latest (default) (push) Has been cancelled
Test Install Script / Test on fedora-latest (root) (push) Has been cancelled
Test Install Script / Test on rocky-10 (default) (push) Has been cancelled
Test Install Script / Test on rocky-10 (root) (push) Has been cancelled
Test Install Script / Test on rocky-8 (default) (push) Has been cancelled
Test Install Script / Test on rocky-8 (root) (push) Has been cancelled
Test Install Script / Test on rocky-9 (default) (push) Has been cancelled
Test Install Script / Test on rocky-9 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-22.04 (root) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (default) (push) Has been cancelled
Test Install Script / Test on ubuntu-24.04 (root) (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"server/log"
|
||||
|
||||
"server/settings"
|
||||
|
||||
"github.com/anacrolix/torrent/iplist"
|
||||
)
|
||||
|
||||
func ReadBlockedIP() (ranger iplist.Ranger, err error) {
|
||||
buf, err := os.ReadFile(filepath.Join(settings.Path, "blocklist"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
log.TLogln("Read block list...")
|
||||
scanner := bufio.NewScanner(strings.NewReader(string(buf)))
|
||||
var ranges []iplist.Range
|
||||
for scanner.Scan() {
|
||||
r, ok, err := iplist.ParseBlocklistP2PLine(scanner.Bytes())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if ok {
|
||||
ranges = append(ranges, r)
|
||||
}
|
||||
}
|
||||
err = scanner.Err()
|
||||
if len(ranges) > 0 {
|
||||
ranger = iplist.New(ranges)
|
||||
log.TLogln("Readed ranges:", len(ranges))
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
)
|
||||
|
||||
func FreeOSMem() {
|
||||
debug.FreeOSMemory()
|
||||
}
|
||||
|
||||
func FreeOSMemGC() {
|
||||
runtime.GC()
|
||||
debug.FreeOSMemory()
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"encoding/base32"
|
||||
"io"
|
||||
"math/rand"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"server/settings"
|
||||
|
||||
"github.com/anacrolix/torrent"
|
||||
"github.com/anacrolix/torrent/metainfo"
|
||||
"golang.org/x/time/rate"
|
||||
)
|
||||
|
||||
var defTrackers = []string{
|
||||
"http://retracker.local/announce",
|
||||
"http://bt4.t-ru.org/ann?magnet",
|
||||
"http://retracker.mgts.by:80/announce",
|
||||
"http://tracker.city9x.com:2710/announce",
|
||||
"http://tracker.electro-torrent.pl:80/announce",
|
||||
"http://tracker.internetwarriors.net:1337/announce",
|
||||
"http://tracker2.itzmx.com:6961/announce",
|
||||
"udp://opentor.org:2710",
|
||||
"udp://public.popcorn-tracker.org:6969/announce",
|
||||
"udp://tracker.opentrackr.org:1337/announce",
|
||||
"http://bt.svao-ix.ru/announce",
|
||||
"udp://explodie.org:6969/announce",
|
||||
"wss://tracker.btorrent.xyz",
|
||||
"wss://tracker.openwebtorrent.com",
|
||||
}
|
||||
|
||||
var loadedTrackers []string
|
||||
|
||||
func GetTrackerFromFile() []string {
|
||||
name := filepath.Join(settings.Path, "trackers.txt")
|
||||
buf, err := os.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 {
|
||||
return defTrackers
|
||||
}
|
||||
return loadedTrackers
|
||||
}
|
||||
|
||||
func loadNewTracker() {
|
||||
if len(loadedTrackers) > 0 {
|
||||
return
|
||||
}
|
||||
resp, err := http.Get("https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best_ip.txt")
|
||||
if err == nil {
|
||||
defer resp.Body.Close()
|
||||
buf, err := io.ReadAll(resp.Body)
|
||||
if err == nil {
|
||||
arr := strings.Split(string(buf), "\n")
|
||||
var ret []string
|
||||
for _, s := range arr {
|
||||
s = strings.TrimSpace(s)
|
||||
if len(s) > 0 {
|
||||
ret = append(ret, s)
|
||||
}
|
||||
}
|
||||
loadedTrackers = append(ret, defTrackers...)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func PeerIDRandom(peer string) string {
|
||||
randomBytes := make([]byte, 32)
|
||||
_, err := rand.Read(randomBytes)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return peer + base32.StdEncoding.EncodeToString(randomBytes)[:20-len(peer)]
|
||||
}
|
||||
|
||||
func Limit(i int) *rate.Limiter {
|
||||
l := rate.NewLimiter(rate.Inf, 0)
|
||||
if i > 0 {
|
||||
b := i
|
||||
if b < 16*1024 {
|
||||
b = 16 * 1024
|
||||
}
|
||||
l = rate.NewLimiter(rate.Limit(i), b)
|
||||
}
|
||||
return l
|
||||
}
|
||||
|
||||
func OpenTorrentFile(path string) (*torrent.TorrentSpec, error) {
|
||||
minfo, err := metainfo.LoadFromFile(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
info, err := minfo.UnmarshalInfo()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// mag := minfo.Magnet(info.Name, minfo.HashInfoBytes())
|
||||
mag := minfo.Magnet(nil, &info)
|
||||
return &torrent.TorrentSpec{
|
||||
InfoBytes: minfo.InfoBytes,
|
||||
Trackers: [][]string{mag.Trackers},
|
||||
DisplayName: info.Name,
|
||||
InfoHash: minfo.HashInfoBytes(),
|
||||
}, nil
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"context"
|
||||
"image"
|
||||
_ "image/gif"
|
||||
_ "image/jpeg"
|
||||
_ "image/png"
|
||||
"io"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"golang.org/x/image/webp"
|
||||
|
||||
"server/log"
|
||||
)
|
||||
|
||||
func CheckImgUrl(link string) bool {
|
||||
if link == "" {
|
||||
return false
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
|
||||
req, err := http.NewRequestWithContext(ctx, "GET", link, nil)
|
||||
if err != nil {
|
||||
log.TLogln("Error create request for image:", err)
|
||||
return false
|
||||
}
|
||||
|
||||
client := &http.Client{
|
||||
Timeout: 5 * time.Second,
|
||||
}
|
||||
|
||||
resp, err := client.Do(req)
|
||||
if err != nil {
|
||||
log.TLogln("Error check image:", err)
|
||||
return false
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
limitedReader := io.LimitReader(resp.Body, 2*1024*1024)
|
||||
|
||||
if strings.HasSuffix(link, ".webp") {
|
||||
_, err = webp.Decode(limitedReader)
|
||||
} else {
|
||||
_, _, err = image.Decode(limitedReader)
|
||||
}
|
||||
if err != nil {
|
||||
log.TLogln("Error decode image:", err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
Reference in New Issue
Block a user