16
18
self.hash = hashlib.sha256(data).hexdigest()
17
19
# TODO: Decide on using sha256 or sha1 (or even sha512)^
19
21
class StorageDB(libs.events.Handler):
20
22
'''An database type object to store and sort blocks.'''
21
23
def __init__(self):
26
28
def add_usk(self, block):
27
29
self.usks[block.hash] = block
29
31
def add_uuk(self, block):
30
32
self.uuks[block.hash] = block
32
34
def search(self, query):
33
35
if query.type == 'UUK':
34
36
if query.id in self.uuks:
36
38
elif query.type == 'USK':
37
39
if query.id in self.usks:
38
40
return self.usks[query.id]
40
42
def save(self, path):
41
43
'''Save the database from a storage file.'''
43
45
for block in self.uuks.values():
44
46
out_json[block.hash] = block.data
46
48
db_file = open(path, 'w') # TODO: possibly make a backup?
47
49
db_file.write(json.dumps(out_json, indent = 2))
50
52
def load(self, path):
51
53
'''Load the database to a storage file.'''
52
54
db_file = open(path, 'r')
53
55
db_json = json.loads(db_file.read())
56
58
for block in db_json:
57
59
self.uuks[block] = db_json[block]
60
62
def got_message(self, packet):
61
63
message = packet.message
62
64
self.add_uuk(Block(message))
64
for block in self.uuks.values():
65
out_json[block.hash] = block.data
66
print(json.dumps(out_json, indent = 2))
67
66
def got_request(self, query):
70
72
class Query(object):
71
73
def __init__(self, blocktype, id):
72
74
self.type = blocktype
77
79
'''Create the storage database.'''
78
80
database = StorageDB()
81
database.path = libs.config['vomundir'] + 'blocks.json'
82
print('Path is: ' + database.path)
79
83
libs.events.register_handler(database)