mirror of
https://github.com/simon987/nyaa.git
synced 2025-12-16 00:09:05 +00:00
Implement torrent nuking ability for mods (#377)
* Implement torrent nuking ability for mods This deletes all torrents of a specific user. A current caveat is that it will delete both sukebei and nyaa torrents, but will only leave a log entry in the current flavour's log. Also did some bootstrap untangling on the user view page. * Per-flavour logging Hopefully this works. Maybe. * Tracker API: chunk into 100-element sublists * isort * Restrict nuking to superadmins Also do a lint.sh.
This commit is contained in:
@@ -333,25 +333,32 @@ def handle_torrent_upload(upload_form, uploading_user=None, fromAPI=False):
|
||||
|
||||
|
||||
def tracker_api(info_hashes, method):
|
||||
url = app.config.get('TRACKER_API_URL')
|
||||
if not url:
|
||||
api_url = app.config.get('TRACKER_API_URL')
|
||||
if not api_url:
|
||||
return False
|
||||
|
||||
qs = []
|
||||
qs.append(('auth', app.config.get('TRACKER_API_AUTH')))
|
||||
qs.append(('method', method))
|
||||
# Split list into at most 100 elements
|
||||
chunk_size = 100
|
||||
chunk_range = range(0, len(info_hashes), chunk_size)
|
||||
chunked_info_hashes = (info_hashes[i:i + chunk_size] for i in chunk_range)
|
||||
|
||||
for infohash in info_hashes:
|
||||
qs.append(('info_hash', infohash))
|
||||
for info_hashes_chunk in chunked_info_hashes:
|
||||
qs = [
|
||||
('auth', app.config.get('TRACKER_API_AUTH')),
|
||||
('method', method)
|
||||
]
|
||||
|
||||
qs = urlencode(qs)
|
||||
url += '?' + qs
|
||||
try:
|
||||
req = urlopen(url)
|
||||
except:
|
||||
return False
|
||||
qs.extend(('info_hash', info_hash) for info_hash in info_hashes_chunk)
|
||||
|
||||
return req.status == 200
|
||||
api_url += '?' + urlencode(qs)
|
||||
try:
|
||||
req = urlopen(api_url)
|
||||
except:
|
||||
return False
|
||||
|
||||
if req.status != 200:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def _delete_cached_torrent_file(torrent_id):
|
||||
|
||||
Reference in New Issue
Block a user