diff options
author | Josef Gustafsson <josef.gson@gmail.com> | 2015-09-11 15:52:55 +0200 |
---|---|---|
committer | Josef Gustafsson <josef.gson@gmail.com> | 2015-09-11 15:52:55 +0200 |
commit | a8a6e53a026bddb04948b2a9c52b70c4bc63c2c2 (patch) | |
tree | e1bf171a7660a624e62dbf9c9e59e460e518d364 /monitor | |
parent | 7523d471cebb7650b9aee7160aa46229e3048276 (diff) |
using separate cert database, key hahses in other databases
Diffstat (limited to 'monitor')
-rwxr-xr-x | monitor/josef_leveldb.py | 69 |
1 files changed, 35 insertions, 34 deletions
diff --git a/monitor/josef_leveldb.py b/monitor/josef_leveldb.py index b4b3255..d10514e 100755 --- a/monitor/josef_leveldb.py +++ b/monitor/josef_leveldb.py @@ -58,8 +58,13 @@ def db_append(db, key, val): tmpl.append(val) db.Put(key,SEP.join(tmpl)) -def db_add_domain_2(db_dir, key_in, val, db_in=None): +def db_add_domain_2(db_dir, key_in, val_in, db_in=None): if db_in == None: + val = str(hash(val_in)) + cert_db = db_open(db_dir + "certificates") + print "Storing cert " + val_in + " with key " + val + cert_db.Put(val, val_in) + key_list = key_in.split('/')[0].split(',')[0].split('.') if key_list[-1] == "com": key = '.'.join(key_list[:-1]) @@ -67,16 +72,13 @@ def db_add_domain_2(db_dir, key_in, val, db_in=None): else: key = '.'.join(key_list) db = db_open(db_dir + "other") - # key = '.'.join(key_list) - # db = db_open(db_dir + key_list[-1]) - # key = '.'.join(key_list) - # db = db_open(db_dir) - # print "DB: " + db_dir + key_list[-1] else: db = db_in key = key_in + val = val_in # print "key: ", key, " val: ", val + # hash_val = hash(val) try: tmp = db.Get(key) tmpl = tmp.split(SEP) @@ -85,28 +87,17 @@ def db_add_domain_2(db_dir, key_in, val, db_in=None): else: tmpl.append(val) db.Put(key,SEP.join(tmpl)) + + # cert_db = db_open(db_dir + "certificates") + # cert_db.Put(str(hash_val), val) except KeyError: + # cert_db = db_open(db_dir + "certificates") + # cert_db.Put(str(hash_val), val) + db.Put(key,SEP.join([val])) new_key = key.split('.',1)[-1] if new_key != key: - db_add_domain_2(db,new_key,key, db) - - -def db_add_domain(db, domain, data): - if db is None: - print "ERROR: NO DATABASE SET!" - return - - tmpl = domain.split('.') - k = "" - for item in reversed(tmpl): - if k == "": - next_k = item - else: - next_k = item + '.' + k - db_append(db, k, next_k) - k = next_k - db_append(db, k, data) + db_add_domain_2(db_dir,new_key,key, db) def db_add_certs(db_dir, data): @@ -131,11 +122,16 @@ def db_add_certs(db_dir, data): def db_lookup_domain(db_dir, domain): domain_list = domain.split('.') res = [] - db = db_open(db_dir + domain_list[-1]) - domain_list = domain_list[:-1] + if domain_list[-1] == "com": + key = '.'.join(domain_list[:-1]) + db = db_open(db_dir + domain_list[-1]) + else: + key = '.'.join(domain) + db = db_open(db_dir + "other") + + domain_list = domain_list[:-1] cur_domain = domain_list.pop() - # print cur_domain intermediate = db.Get(cur_domain).split(SEP) last = False one_more = False @@ -148,24 +144,29 @@ def db_lookup_domain(db_dir, domain): try: cur_domain = domain_list.pop() + "." + cur_domain except IndexError: - return res + break # Prune next_level = [] - # print intermediate for item in intermediate: if match_domain(cur_domain, item): try: tmp = db.Get(item).split(SEP) for tmp_item in tmp: - if tmp_item[0] == '{': - res.append(tmp_item) - else: + try: + res.append(int(tmp_item)) + except: next_level.append(tmp_item) except KeyError: pass - intermediate = next_level - return res + + certs = [] + cert_db = db_open(db_dir + "certificates") + for item in res: + tmp = cert_db.Get(str(item)) + certs.append(tmp) + + return certs |