]> git.ipfire.org Git - ipfire.org.git/blobdiff - src/backend/releases.py
Use yabencode to decode torrent files
[ipfire.org.git] / src / backend / releases.py
index 5197f3688f62fa3ddf64621ed17d2d24b1ed9e1e..eef8509775b576065e80e619a9c9929245777f72 100644 (file)
@@ -6,9 +6,9 @@ import os
 import re
 import tornado.gen
 import urllib.parse
+import yabencode
 
 from . import database
-from . import tracker
 from .misc import Object
 
 TRACKERS = (
@@ -366,21 +366,14 @@ class Release(Object):
                                        torrent_hash, file.id)
 
        def torrent_read_hash(self, filename):
-               f = None
-               try:
-                       f = open(filename, "rb")
-
-                       metainfo = tracker.bdecode(f.read())
-                       metainfo = tracker.bencode(metainfo["info"])
-
-                       hash = hashlib.sha1()
-                       hash.update(metainfo)
+               with open(filename, "rb") as f:
+                       metainfo = yabencode.decode(f)
+                       metainfo = yabencode.encode(metainfo["info"])
 
-                       return hash.hexdigest()
+                       h = hashlib.new("sha1")
+                       h.update(metainfo)
 
-               finally:
-                       if f:
-                               f.close()
+                       return h.hexdigest()
 
        def supports_arch(self, arch):
                return arch in ("x86_64", "i586")