50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
|
import sqlite3
|
||
|
def get_user_info(core_inst, peer, info):
|
||
|
'''
|
||
|
Get info about a peer from their database entry
|
||
|
|
||
|
id text 0
|
||
|
name text, 1
|
||
|
adders text, 2
|
||
|
dateSeen not null, 3
|
||
|
trust int 4
|
||
|
hashID text 5
|
||
|
'''
|
||
|
conn = sqlite3.connect(core_inst.peerDB, timeout=30)
|
||
|
c = conn.cursor()
|
||
|
|
||
|
command = (peer,)
|
||
|
infoNumbers = {'id': 0, 'name': 1, 'adders': 2, 'dateSeen': 3, 'trust': 4, 'hashID': 5}
|
||
|
info = infoNumbers[info]
|
||
|
iterCount = 0
|
||
|
retVal = ''
|
||
|
|
||
|
for row in c.execute('SELECT * FROM peers WHERE id=?;', command):
|
||
|
for i in row:
|
||
|
if iterCount == info:
|
||
|
retVal = i
|
||
|
break
|
||
|
else:
|
||
|
iterCount += 1
|
||
|
|
||
|
conn.close()
|
||
|
|
||
|
return retVal
|
||
|
|
||
|
def set_peer_info(core_inst, peer, key, data):
|
||
|
'''
|
||
|
Update a peer for a key
|
||
|
'''
|
||
|
|
||
|
conn = sqlite3.connect(core_inst.peerDB, timeout=30)
|
||
|
c = conn.cursor()
|
||
|
|
||
|
command = (data, peer)
|
||
|
|
||
|
# TODO: validate key on whitelist
|
||
|
if key not in ('id', 'name', 'pubkey', 'forwardKey', 'dateSeen', 'trust'):
|
||
|
raise Exception("Got invalid database key when setting peer info")
|
||
|
|
||
|
c.execute('UPDATE peers SET ' + key + ' = ? WHERE id=?', command)
|
||
|
conn.commit()
|
||
|
conn.close()
|