package store import ( "log/slog" "github.com/anacrolix/dht/v2/bep44" tlog "github.com/anacrolix/log" "github.com/anacrolix/torrent" "github.com/anacrolix/torrent/storage" "git.kmsign.ru/royalcat/tstor/src/config" dlog "git.kmsign.ru/royalcat/tstor/src/log" ) // MOVE func NewClient(st storage.ClientImpl, fis bep44.Store, cfg *config.TorrentClient, id [20]byte) (*torrent.Client, error) { l := slog.With("component", "torrent-client") // TODO download and upload limits torrentCfg := torrent.NewDefaultClientConfig() torrentCfg.PeerID = string(id[:]) torrentCfg.DefaultStorage = st // torrentCfg.AlwaysWantConns = true // torrentCfg.DisableAggressiveUpload = true // torrentCfg.Seed = true // torrentCfg.DownloadRateLimiter = rate.NewLimiter(rate.Inf, 0) // torrentCfg tl := tlog.NewLogger() tl.SetHandlers(&dlog.Torrent{L: l}) torrentCfg.Logger = tl torrentCfg.Callbacks.NewPeer = append(torrentCfg.Callbacks.NewPeer, func(p *torrent.Peer) { l.Debug("new peer", "ip", p.RemoteAddr.String()) }) torrentCfg.Callbacks.NewPeer = append(torrentCfg.Callbacks.PeerClosed, func(p *torrent.Peer) { l.Debug("peer closed", "ip", p.RemoteAddr.String()) }) // torrentCfg.ConfigureAnacrolixDhtServer = func(cfg *dht.ServerConfig) { // cfg.Store = fis // cfg.Exp = 2 * time.Hour // cfg.NoSecurity = false // } return torrent.NewClient(torrentCfg) }