Skip to content

Commit db2ff91

Browse files
committed
fix ul/dl tracking
1 parent bd42042 commit db2ff91

2 files changed

Lines changed: 41 additions & 74 deletions

File tree

api/src/controllers/torrent.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,6 @@ export const downloadTorrent = async (req, res) => {
135135
parsed.announce = `${process.env.SQ_BASE_URL}/sq/${user.uid}/announce`
136136
parsed.info.private = 1
137137

138-
await Torrent.findOneAndUpdate({ infoHash }, { $inc: { downloads: 1 } })
139-
140138
res.setHeader('Content-Type', 'application/x-bittorrent')
141139
res.setHeader(
142140
'Content-Disposition',

api/src/tracker/announce.js

Lines changed: 41 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,14 @@ const handleAnnounce = async (req, res) => {
7070
const response = bencode.encode({
7171
'failure reason': `Announce denied: Ratio is below minimum threshold ${process.env.SQ_MINIMUM_RATIO}.`,
7272
peers: [],
73+
peers6: [],
7374
})
7475
res.send(response)
7576
return
7677
}
7778

7879
const uploaded = Number(params.uploaded)
79-
const downloaded = Number(params.downloaded)
80+
const downloaded = params.event === 'started' ? 0 : Number(params.downloaded)
8081

8182
const prevProgressRecord = await Progress.findOne({
8283
userId: user._id,
@@ -85,11 +86,11 @@ const handleAnnounce = async (req, res) => {
8586

8687
const alreadyUploadedSession = prevProgressRecord?.uploaded?.session ?? 0
8788
const uploadDeltaSession =
88-
uploaded > alreadyUploadedSession ? uploaded - alreadyUploadedSession : 0
89+
uploaded >= alreadyUploadedSession ? uploaded - alreadyUploadedSession : 0
8990

9091
const alreadyDownloadedSession = prevProgressRecord?.downloaded?.session ?? 0
9192
const downloadDeltaSession =
92-
downloaded > alreadyDownloadedSession
93+
downloaded >= alreadyDownloadedSession
9394
? downloaded - alreadyDownloadedSession
9495
: 0
9596

@@ -131,80 +132,48 @@ const handleAnnounce = async (req, res) => {
131132
downloadDeltaSession,
132133
})
133134

134-
if (uploadDeltaSession === 0) {
135-
await Progress.findOneAndUpdate(
136-
{ userId: user._id, infoHash },
137-
{
138-
$set: {
139-
userId: user._id,
140-
infoHash,
141-
uploaded: {
142-
session: 0,
143-
total: prevProgressRecord?.uploaded?.total ?? 0,
144-
},
145-
left: Number(params.left),
146-
},
147-
},
148-
{ upsert: true }
149-
)
150-
} else {
151-
await Progress.findOneAndUpdate(
152-
{ userId: user._id, infoHash },
153-
{
154-
$set: {
155-
userId: user._id,
156-
infoHash,
157-
uploaded: {
158-
session: uploaded,
159-
total:
160-
(prevProgressRecord?.uploaded?.total ?? 0) + uploadDeltaSession,
161-
},
162-
left: Number(params.left),
135+
await Progress.findOneAndUpdate(
136+
{ userId: user._id, infoHash },
137+
{
138+
$set: {
139+
userId: user._id,
140+
infoHash,
141+
uploaded: {
142+
session: uploaded,
143+
total:
144+
(prevProgressRecord?.uploaded?.total ?? 0) + uploadDeltaSession,
163145
},
146+
left: Number(params.left),
164147
},
165-
{ upsert: true }
166-
)
167-
}
148+
},
149+
{ upsert: true }
150+
)
168151

169-
if (downloadDeltaSession === 0) {
170-
await Progress.findOneAndUpdate(
171-
{ userId: user._id, infoHash },
172-
{
173-
$set: {
174-
userId: user._id,
175-
infoHash,
176-
downloaded: {
177-
session: 0,
178-
total: prevProgressRecord?.downloaded?.total ?? 0,
179-
},
180-
left: Number(params.left),
181-
},
182-
},
183-
{ upsert: true }
184-
)
185-
} else {
186-
await Progress.findOneAndUpdate(
187-
{ userId: user._id, infoHash },
188-
{
189-
$set: {
190-
userId: user._id,
191-
infoHash,
192-
downloaded: {
193-
session:
194-
torrent.freeleech || process.env.SQ_SITE_WIDE_FREELEECH === true
195-
? prevProgressRecord?.downloaded?.session ?? 0
196-
: downloaded,
197-
total:
198-
torrent.freeleech || process.env.SQ_SITE_WIDE_FREELEECH === true
199-
? prevProgressRecord?.downloaded?.total ?? 0
200-
: (prevProgressRecord?.downloaded?.total ?? 0) +
201-
downloadDeltaSession,
202-
},
203-
left: Number(params.left),
152+
await Progress.findOneAndUpdate(
153+
{ userId: user._id, infoHash },
154+
{
155+
$set: {
156+
userId: user._id,
157+
infoHash,
158+
downloaded: {
159+
session:
160+
torrent.freeleech || process.env.SQ_SITE_WIDE_FREELEECH === true
161+
? prevProgressRecord?.downloaded?.session ?? 0
162+
: downloaded,
163+
total:
164+
torrent.freeleech || process.env.SQ_SITE_WIDE_FREELEECH === true
165+
? prevProgressRecord?.downloaded?.total ?? 0
166+
: (prevProgressRecord?.downloaded?.total ?? 0) +
167+
downloadDeltaSession,
204168
},
169+
left: Number(params.left),
205170
},
206-
{ upsert: true }
207-
)
171+
},
172+
{ upsert: true }
173+
)
174+
175+
if (params.event === 'completed') {
176+
await Torrent.findOneAndUpdate({ infoHash }, { $inc: { downloads: 1 } })
208177
}
209178
}
210179

0 commit comments

Comments
 (0)