mirror of
https://github.com/sot-tech/mochi.git
synced 2026-05-20 06:44:48 -07:00
(minor) sanitize code
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package bittorrent
|
package bittorrent
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"net/netip"
|
"net/netip"
|
||||||
"sort"
|
"sort"
|
||||||
"time"
|
"time"
|
||||||
@@ -21,16 +20,6 @@ func (a RequestAddress) Validate() bool {
|
|||||||
return a.IsValid() && !a.IsUnspecified()
|
return a.IsValid() && !a.IsUnspecified()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a RequestAddress) String() string {
|
|
||||||
var p string
|
|
||||||
if a.Provided {
|
|
||||||
p = "(provided)"
|
|
||||||
} else {
|
|
||||||
p = "(detected)"
|
|
||||||
}
|
|
||||||
return fmt.Sprint(a.Addr.String(), p)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MarshalZerologObject writes fields into zerolog event
|
// MarshalZerologObject writes fields into zerolog event
|
||||||
func (a RequestAddress) MarshalZerologObject(e *zerolog.Event) {
|
func (a RequestAddress) MarshalZerologObject(e *zerolog.Event) {
|
||||||
e.Stringer("address", a.Addr).Bool("provided", a.Provided)
|
e.Stringer("address", a.Addr).Bool("provided", a.Provided)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
logger = log.NewLogger("bittorrent")
|
logger = log.NewLogger("request sanitizer")
|
||||||
// ErrInvalidIP indicates an invalid IP for an Announce.
|
// ErrInvalidIP indicates an invalid IP for an Announce.
|
||||||
ErrInvalidIP = ClientError("invalid IP")
|
ErrInvalidIP = ClientError("invalid IP")
|
||||||
|
|
||||||
@@ -16,6 +16,7 @@ var (
|
|||||||
// SanitizeAnnounce enforces a max and default NumWant and coerces the peer's
|
// SanitizeAnnounce enforces a max and default NumWant and coerces the peer's
|
||||||
// IP address into the proper format.
|
// IP address into the proper format.
|
||||||
func SanitizeAnnounce(r *AnnounceRequest, maxNumWant, defaultNumWant uint32) error {
|
func SanitizeAnnounce(r *AnnounceRequest, maxNumWant, defaultNumWant uint32) error {
|
||||||
|
logger.Trace().Object("request", r).Msg("source announce")
|
||||||
if r.Port == 0 {
|
if r.Port == 0 {
|
||||||
return ErrInvalidPort
|
return ErrInvalidPort
|
||||||
}
|
}
|
||||||
@@ -30,13 +31,14 @@ func SanitizeAnnounce(r *AnnounceRequest, maxNumWant, defaultNumWant uint32) err
|
|||||||
r.NumWant = maxNumWant
|
r.NumWant = maxNumWant
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Debug().Object("request", r).Msg("sanitized announce")
|
logger.Trace().Object("request", r).Msg("sanitized announce")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SanitizeScrape enforces a max number of infohashes for a single scrape
|
// SanitizeScrape enforces a max number of infohashes for a single scrape
|
||||||
// request and checks if addresses are valid.
|
// request and checks if addresses are valid.
|
||||||
func SanitizeScrape(r *ScrapeRequest, maxScrapeInfoHashes uint32) error {
|
func SanitizeScrape(r *ScrapeRequest, maxScrapeInfoHashes uint32) error {
|
||||||
|
logger.Trace().Object("request", r).Msg("source scrape")
|
||||||
if len(r.InfoHashes) > int(maxScrapeInfoHashes) {
|
if len(r.InfoHashes) > int(maxScrapeInfoHashes) {
|
||||||
r.InfoHashes = r.InfoHashes[:maxScrapeInfoHashes]
|
r.InfoHashes = r.InfoHashes[:maxScrapeInfoHashes]
|
||||||
}
|
}
|
||||||
@@ -45,6 +47,6 @@ func SanitizeScrape(r *ScrapeRequest, maxScrapeInfoHashes uint32) error {
|
|||||||
return ErrInvalidIP
|
return ErrInvalidIP
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Debug().Object("request", r).Msg("sanitized scrape")
|
logger.Trace().Object("request", r).Msg("sanitized scrape")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
// needs for async file logging
|
// needs for async file logging
|
||||||
_ "code.cloudfoundry.org/go-diodes"
|
_ "code.cloudfoundry.org/go-diodes"
|
||||||
"github.com/rs/zerolog"
|
"github.com/rs/zerolog"
|
||||||
|
|||||||
@@ -198,6 +198,10 @@ func (ps *peerStore) PutSeeder(ih bittorrent.InfoHash, p bittorrent.Peer) error
|
|||||||
panic("attempted to interact with stopped memory store")
|
panic("attempted to interact with stopped memory store")
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
logger.Trace().
|
||||||
|
Stringer("infoHash", ih).
|
||||||
|
Object("peer", p).
|
||||||
|
Msg("put seeder")
|
||||||
|
|
||||||
shard := ps.shards[ps.shardIndex(ih, p.Addr().Is6())]
|
shard := ps.shards[ps.shardIndex(ih, p.Addr().Is6())]
|
||||||
shard.Lock()
|
shard.Lock()
|
||||||
@@ -227,6 +231,10 @@ func (ps *peerStore) DeleteSeeder(ih bittorrent.InfoHash, p bittorrent.Peer) err
|
|||||||
panic("attempted to interact with stopped memory store")
|
panic("attempted to interact with stopped memory store")
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
logger.Trace().
|
||||||
|
Stringer("infoHash", ih).
|
||||||
|
Object("peer", p).
|
||||||
|
Msg("delete seeder")
|
||||||
|
|
||||||
shard := ps.shards[ps.shardIndex(ih, p.Addr().Is6())]
|
shard := ps.shards[ps.shardIndex(ih, p.Addr().Is6())]
|
||||||
shard.Lock()
|
shard.Lock()
|
||||||
@@ -256,6 +264,10 @@ func (ps *peerStore) PutLeecher(ih bittorrent.InfoHash, p bittorrent.Peer) error
|
|||||||
panic("attempted to interact with stopped memory store")
|
panic("attempted to interact with stopped memory store")
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
logger.Trace().
|
||||||
|
Stringer("infoHash", ih).
|
||||||
|
Object("peer", p).
|
||||||
|
Msg("put leecher")
|
||||||
|
|
||||||
shard := ps.shards[ps.shardIndex(ih, p.Addr().Is6())]
|
shard := ps.shards[ps.shardIndex(ih, p.Addr().Is6())]
|
||||||
shard.Lock()
|
shard.Lock()
|
||||||
@@ -285,6 +297,10 @@ func (ps *peerStore) DeleteLeecher(ih bittorrent.InfoHash, p bittorrent.Peer) er
|
|||||||
panic("attempted to interact with stopped memory store")
|
panic("attempted to interact with stopped memory store")
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
logger.Trace().
|
||||||
|
Stringer("infoHash", ih).
|
||||||
|
Object("peer", p).
|
||||||
|
Msg("delete leecher")
|
||||||
|
|
||||||
shard := ps.shards[ps.shardIndex(ih, p.Addr().Is6())]
|
shard := ps.shards[ps.shardIndex(ih, p.Addr().Is6())]
|
||||||
shard.Lock()
|
shard.Lock()
|
||||||
@@ -314,6 +330,10 @@ func (ps *peerStore) GraduateLeecher(ih bittorrent.InfoHash, p bittorrent.Peer)
|
|||||||
panic("attempted to interact with stopped memory store")
|
panic("attempted to interact with stopped memory store")
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
logger.Trace().
|
||||||
|
Stringer("infoHash", ih).
|
||||||
|
Object("peer", p).
|
||||||
|
Msg("graduate leecher")
|
||||||
|
|
||||||
shard := ps.shards[ps.shardIndex(ih, p.Addr().Is6())]
|
shard := ps.shards[ps.shardIndex(ih, p.Addr().Is6())]
|
||||||
shard.Lock()
|
shard.Lock()
|
||||||
@@ -376,6 +396,12 @@ func (ps *peerStore) AnnouncePeers(ih bittorrent.InfoHash, seeder bool, numWant
|
|||||||
panic("attempted to interact with stopped memory store")
|
panic("attempted to interact with stopped memory store")
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
logger.Trace().
|
||||||
|
Stringer("infoHash", ih).
|
||||||
|
Bool("seeder", seeder).
|
||||||
|
Int("numWant", numWant).
|
||||||
|
Bool("v6", v6).
|
||||||
|
Msg("announce peers")
|
||||||
|
|
||||||
peers = ps.getPeers(ps.shards[ps.shardIndex(ih, v6)], ih, numWant, seeder)
|
peers = ps.getPeers(ps.shards[ps.shardIndex(ih, v6)], ih, numWant, seeder)
|
||||||
|
|
||||||
@@ -399,6 +425,9 @@ func (ps *peerStore) ScrapeSwarm(ih bittorrent.InfoHash) (leechers uint32, seede
|
|||||||
panic("attempted to interact with stopped memory store")
|
panic("attempted to interact with stopped memory store")
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
logger.Trace().
|
||||||
|
Stringer("infoHash", ih).
|
||||||
|
Msg("scrape swarm")
|
||||||
|
|
||||||
leechers, seeders = ps.countPeers(ih, true)
|
leechers, seeders = ps.countPeers(ih, true)
|
||||||
l, s := ps.countPeers(ih, false)
|
l, s := ps.countPeers(ih, false)
|
||||||
|
|||||||
Reference in New Issue
Block a user