Browse Source

Bootstrapper use python date functions instead of sqlite

shortcutme 6 years ago
parent
commit
9f762a0230
2 changed files with 12 additions and 5 deletions
  1. 5 3
      plugins/disabled-Bootstrapper/BootstrapperDb.py
  2. 7 2
      src/Site/SiteStorage.py

+ 5 - 3
plugins/disabled-Bootstrapper/BootstrapperDb.py

@@ -20,8 +20,9 @@ class BootstrapperDb(Db):
 
     def cleanup(self):
         while 1:
-            self.execute("DELETE FROM peer WHERE date_announced < DATETIME('now', '-40 minute')")
             time.sleep(4*60)
+            timeout = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time() - 60 * 40))
+            self.execute("DELETE FROM peer WHERE date_announced < ?", [timeout])
 
     def updateHashCache(self):
         res = self.execute("SELECT * FROM hash")
@@ -96,14 +97,15 @@ class BootstrapperDb(Db):
             res = self.execute("SELECT * FROM peer WHERE ? LIMIT 1", {"ip4": ip4, "port": port})
 
         user_row = res.fetchone()
+        now = time.strftime("%Y-%m-%d %H:%M:%S")
         if user_row:
             peer_id = user_row["peer_id"]
-            self.execute("UPDATE peer SET date_announced = DATETIME('now') WHERE ?", {"peer_id": peer_id})
+            self.execute("UPDATE peer SET date_announced = ? WHERE peer_id = ?", (now, peer_id))
         else:
             self.log.debug("New peer: %s %s signed: %s" % (ip4, onion, onion_signed))
             if onion and not onion_signed:
                 return len(hashes)
-            self.execute("INSERT INTO peer ?", {"ip4": ip4, "onion": onion, "port": port})
+            self.execute("INSERT INTO peer ?", {"ip4": ip4, "onion": onion, "port": port, "date_announced": now})
             peer_id = self.cur.cursor.lastrowid
 
         # Check user's hashes

+ 7 - 2
src/Site/SiteStorage.py

@@ -163,8 +163,13 @@ class SiteStorage(object):
         return res
 
     # Open file object
-    def open(self, inner_path, mode="rb"):
-        return open(self.getPath(inner_path), mode)
+    def open(self, inner_path, mode="rb", create_dirs=False):
+        file_path = self.getPath(inner_path)
+        if create_dirs:
+            file_dir = os.path.dirname(file_path)
+            if not os.path.isdir(file_dir):
+                os.makedirs(file_dir)
+        return open(file_path, mode)
 
     # Open file object
     def read(self, inner_path, mode="r"):