mirror of
https://github.com/meehow/privtracker.git
synced 2026-09-03 07:24:24 +08:00
downgrade fiber
This commit is contained in:
2
go.mod
2
go.mod
@@ -3,7 +3,7 @@ module github.com/meehow/privtracker
|
||||
go 1.21.4
|
||||
|
||||
require (
|
||||
github.com/gofiber/fiber/v2 v2.52.6
|
||||
github.com/gofiber/fiber/v2 v2.52.5
|
||||
github.com/jackpal/bencode-go v1.0.2
|
||||
golang.org/x/crypto v0.32.0
|
||||
)
|
||||
|
||||
4
go.sum
4
go.sum
@@ -1,7 +1,7 @@
|
||||
github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M=
|
||||
github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
|
||||
github.com/gofiber/fiber/v2 v2.52.6 h1:Rfp+ILPiYSvvVuIPvxrBns+HJp8qGLDnLJawAu27XVI=
|
||||
github.com/gofiber/fiber/v2 v2.52.6/go.mod h1:YEcBbO/FB+5M1IZNBP9FO3J9281zgPAreiI1oqg8nDw=
|
||||
github.com/gofiber/fiber/v2 v2.52.5 h1:tWoP1MJQjGEe4GB5TUGOi7P2E0ZMMRx5ZTG4rT+yGMo=
|
||||
github.com/gofiber/fiber/v2 v2.52.5/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/jackpal/bencode-go v1.0.2 h1:LcCNfZ344u0LpBPOZNjpCLps/wUOuN4r87Fy9+5yU8g=
|
||||
|
||||
33
storage.go
33
storage.go
@@ -24,18 +24,23 @@ func (peer Peer) String() string {
|
||||
return fmt.Sprintf("%s:%d", net.IP(peer[:16]), binary.BigEndian.Uint16(peer[16:]))
|
||||
}
|
||||
|
||||
// type serializedPeer [18]byte
|
||||
|
||||
type shard struct {
|
||||
swarms map[Hash]swarm
|
||||
swarms map[Hash]Swarm
|
||||
sync.RWMutex
|
||||
}
|
||||
|
||||
type swarm struct {
|
||||
type Swarm struct {
|
||||
seeders map[Peer]int64
|
||||
leechers map[Peer]int64
|
||||
}
|
||||
|
||||
func NewSwarm() Swarm {
|
||||
return Swarm{
|
||||
seeders: make(map[Peer]int64),
|
||||
leechers: make(map[Peer]int64),
|
||||
}
|
||||
}
|
||||
|
||||
var shards = NewShards(512)
|
||||
var v4InV6Prefix = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff}
|
||||
|
||||
@@ -47,29 +52,18 @@ func NewShards(size int) []*shard {
|
||||
shards := make([]*shard, size)
|
||||
for i := 0; i < size; i++ {
|
||||
shards[i] = &shard{
|
||||
swarms: make(map[Hash]swarm),
|
||||
swarms: make(map[Hash]Swarm),
|
||||
}
|
||||
}
|
||||
return shards
|
||||
}
|
||||
|
||||
// func serialize(ip net.IP, port uint16) serializedPeer {
|
||||
// var sp serializedPeer
|
||||
// copy(sp[:], ip)
|
||||
// sp[16] = byte(port >> 8)
|
||||
// sp[17] = byte(port)
|
||||
// return sp
|
||||
// }
|
||||
|
||||
func PutPeer(room, infoHash string, peer Peer, seeding bool) {
|
||||
h := sha1.Sum([]byte(room + infoHash))
|
||||
shard := shards[shardIndex(h)]
|
||||
shard.Lock()
|
||||
if _, ok := shard.swarms[h]; !ok {
|
||||
shard.swarms[h] = swarm{
|
||||
seeders: make(map[Peer]int64),
|
||||
leechers: make(map[Peer]int64),
|
||||
}
|
||||
shard.swarms[h] = NewSwarm()
|
||||
}
|
||||
if seeding {
|
||||
shard.swarms[h].seeders[peer] = time.Now().Unix()
|
||||
@@ -96,10 +90,7 @@ func GraduateLeecher(room, infoHash string, peer Peer) {
|
||||
shard := shards[shardIndex(h)]
|
||||
shard.Lock()
|
||||
if _, ok := shard.swarms[h]; !ok {
|
||||
shard.swarms[h] = swarm{
|
||||
seeders: make(map[Peer]int64),
|
||||
leechers: make(map[Peer]int64),
|
||||
}
|
||||
shard.swarms[h] = NewSwarm()
|
||||
}
|
||||
shard.swarms[h].seeders[peer] = time.Now().Unix()
|
||||
delete(shard.swarms[h].leechers, peer)
|
||||
|
||||
Reference in New Issue
Block a user