diff options
Diffstat (limited to 'monitor/josef_reader.py')
| -rwxr-xr-x | monitor/josef_reader.py | 118 |
1 files changed, 74 insertions, 44 deletions
diff --git a/monitor/josef_reader.py b/monitor/josef_reader.py index 3abadb2..199fe29 100755 --- a/monitor/josef_reader.py +++ b/monitor/josef_reader.py @@ -2,6 +2,8 @@ # -*- coding: utf-8 -*- import sys +import time +import datetime from josef_lib import * import leveldb import argparse @@ -11,7 +13,7 @@ import subprocess from josef_leveldb import * from datetime import datetime as dt import ast -from monitor_conf import DB_PATH, MONITORED_DOMAINS +from monitor_conf import DB_PATH, MONITORED_DOMAINS, OUTPUT_DIR @@ -20,26 +22,67 @@ class monitored_domain: self.url = url self.entries = [] - def add(self, item): - self.entries.appent(item) + def __eq__(self, other): + return self.url == other.url + + def log(self, string): + s = time.strftime('%Y-%m-%d, %H:%M:%S') + " " + string + with open(OUTPUT_DIR + "monitor.log", 'a') as f: + f.write(s + "\n") + f.close() + + # def add(self, item): + # self.entries.appent(item) def set(self): self.entries = db_monitor_domain(self.url, None, True, None) - print "Got " + str(len(self.entries)) + " certs for " + self.url + self.log("Got " + str(len(self.entries)) + " certs for " + self.url) def update(self): new = db_monitor_domain(self.url, None, True, None) - if len(new) != len(self.entries): + # if len(new) != len(self.entries): # print self.entries # print new - compare_entry_lists(new, self.entries) - self.entries = new - else: - for i in range(len(new)): - if new[i] == self.entries[i]: - pass - else: - print "ITEM CHANGED!" + compare_entry_lists(new, self.entries) + self.entries = new + + + def to_dict(self): + d = {} + d["url"] = self.url + entries = [] + for e in self.entries: + entries.append(e.to_dict()) + d["entries"] = entries + return d + + def load_entries(self, l): + entries = [] + for item in l: + entries.append(monitored_entry(item["subject"],item["issuer"],item["log"],item["status"],item["leaf_hash"])) + self.entries = entries + + def compare_entry_lists(self, new, old): + added_items = [] + removed_items = [] + + for item in new: + if not item in old: + added_items.append(item) + + for item in old: + if not item in new: + removed_items.append(item) + + if len(added_items) != 0: + self.log(str(len(added_items)) + " new item(s):") + for item in added_items: + self.log(item) + + if len(removed_items) != 0: + self.log(str(len(removed_items)) + " removed item(s):") + for item in removed_items: + self.log(item) class monitored_entry: @@ -52,6 +95,7 @@ class monitored_entry: def __eq__(self, other): return self.leaf_hash == other.leaf_hash + # TODO check status (or expired wont expire) def __str__(self): s = self.subject + \ @@ -62,6 +106,14 @@ class monitored_entry: else: return "(NOT VALID) " + s + def to_dict(self): + d = {} + d["issuer"] = self.issuer + d["subject"] = self.subject + d["log"] = self.log + d["status"] = self.status + d["leaf_hash"] = self.leaf_hash + return d @@ -79,28 +131,6 @@ for md in MONITORED_DOMAINS: db = DB_PATH -def compare_entry_lists(new, old): - added_items = [] - removed_items = [] - - for item in new: - if not item in old: - added_items.append(item) - - for item in old: - if not item in new: - removed_items.append(item) - - if len(added_items) != 0: - print str(len(added_items)) + " new item(s):" - for item in added_items: - print item - - if len(removed_items) != 0: - print str(len(removed_items)) + " removed item(s):" - for item in removed_items: - print item - def db_monitor_domain(domain, log=None, exclude_invalid=None, get_cert=None): @@ -178,15 +208,15 @@ def db_monitor_domain(domain, log=None, exclude_invalid=None, get_cert=None): # + domain return res - -if args.domain: - db_monitor_domain(args.domain, args.log, args.exclude_invalid, args.get_cert) -else: - print "Running on " + str(len(monitored_domains)) + " monitored domains." - for d in monitored_domains: - d.set() - for d in monitored_domains: - d.update() +if __name__ == "__main__": + if args.domain: + db_monitor_domain(args.domain, args.log, args.exclude_invalid, args.get_cert) + else: + print "Running on " + str(len(monitored_domains)) + " monitored domains." + for d in monitored_domains: + d.set() + for d in monitored_domains: + print d.to_dict() |
