Store peer reputation, time_found in peer db
This commit is contained in:
parent
4fe33268ac
commit
7dcde3e585
1 changed files with 8 additions and 5 deletions
|
@ -22,12 +22,14 @@ class ContentDbPlugin(object):
|
||||||
["address", "TEXT NOT NULL"],
|
["address", "TEXT NOT NULL"],
|
||||||
["port", "INTEGER NOT NULL"],
|
["port", "INTEGER NOT NULL"],
|
||||||
["hashfield", "BLOB"],
|
["hashfield", "BLOB"],
|
||||||
["time_added", "INTEGER NOT NULL"]
|
["reputation", "INTEGER NOT NULL"],
|
||||||
|
["time_added", "INTEGER NOT NULL"],
|
||||||
|
["time_found", "INTEGER NOT NULL"]
|
||||||
],
|
],
|
||||||
"indexes": [
|
"indexes": [
|
||||||
"CREATE UNIQUE INDEX peer_key ON peer (site_id, address, port)"
|
"CREATE UNIQUE INDEX peer_key ON peer (site_id, address, port)"
|
||||||
],
|
],
|
||||||
"schema_changed": 1
|
"schema_changed": 2
|
||||||
}
|
}
|
||||||
|
|
||||||
return schema
|
return schema
|
||||||
|
@ -46,7 +48,8 @@ class ContentDbPlugin(object):
|
||||||
peer.hashfield.replaceFromString(row["hashfield"])
|
peer.hashfield.replaceFromString(row["hashfield"])
|
||||||
num_hashfield += 1
|
num_hashfield += 1
|
||||||
peer.time_added = row["time_added"]
|
peer.time_added = row["time_added"]
|
||||||
peer.reputation = int((time.time() - peer.time_added) / (60 * 60 * 24)) # Boost reputation for older peers (1 point for every day)
|
peer.time_found = row["time_found"]
|
||||||
|
peer.reputation = row["reputation"]
|
||||||
if row["address"].endswith(".onion"):
|
if row["address"].endswith(".onion"):
|
||||||
peer.reputation = peer.reputation / 2 # Onion peers less likely working
|
peer.reputation = peer.reputation / 2 # Onion peers less likely working
|
||||||
num += 1
|
num += 1
|
||||||
|
@ -62,7 +65,7 @@ class ContentDbPlugin(object):
|
||||||
hashfield = sqlite3.Binary(peer.hashfield.tostring())
|
hashfield = sqlite3.Binary(peer.hashfield.tostring())
|
||||||
else:
|
else:
|
||||||
hashfield = ""
|
hashfield = ""
|
||||||
yield (site_id, address, port, hashfield, int(peer.time_added))
|
yield (site_id, address, port, hashfield, peer.reputation, int(peer.time_added), int(peer.time_found))
|
||||||
|
|
||||||
def savePeers(self, site, spawn=False):
|
def savePeers(self, site, spawn=False):
|
||||||
if spawn:
|
if spawn:
|
||||||
|
@ -78,7 +81,7 @@ class ContentDbPlugin(object):
|
||||||
try:
|
try:
|
||||||
self.execute("DELETE FROM peer WHERE site_id = :site_id", {"site_id": site_id})
|
self.execute("DELETE FROM peer WHERE site_id = :site_id", {"site_id": site_id})
|
||||||
self.cur.cursor.executemany(
|
self.cur.cursor.executemany(
|
||||||
"INSERT INTO peer (site_id, address, port, hashfield, time_added) VALUES (?, ?, ?, ?, ?)",
|
"INSERT INTO peer (site_id, address, port, hashfield, reputation, time_added, time_found) VALUES (?, ?, ?, ?, ?, ?, ?)",
|
||||||
self.iteratePeers(site)
|
self.iteratePeers(site)
|
||||||
)
|
)
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
|
|
Loading…
Reference in a new issue