diff options
Diffstat (limited to 'monitor')
-rwxr-xr-x | monitor/josef_leveldb.py | 2 | ||||
-rwxr-xr-x | monitor/josef_reader.py | 67 |
2 files changed, 44 insertions, 25 deletions
diff --git a/monitor/josef_leveldb.py b/monitor/josef_leveldb.py index fa948ed..9994609 100755 --- a/monitor/josef_leveldb.py +++ b/monitor/josef_leveldb.py @@ -37,7 +37,6 @@ def match_domain(d1, d2): def db_open(fn='./cert_db'): - print "Opening " + fn global dbs if fn in dbs: return dbs[fn] @@ -48,7 +47,6 @@ def db_open(fn='./cert_db'): return db def db_close(): - print "Closing databases." for db in dbs: del db diff --git a/monitor/josef_reader.py b/monitor/josef_reader.py index 92bd510..c1ff10c 100755 --- a/monitor/josef_reader.py +++ b/monitor/josef_reader.py @@ -15,6 +15,34 @@ from monitor_conf import DB_PATH +class monitored_domain: + def __init__(self, url): + self.url = url + self.entries = [] + + def add(self, item): + self.entries.appent(item) + +class monitored_entry: + def __init__(self, subject, issuer, log, status): + self.issuer = issuer + self.subject = subject + self.log = log + self.status = status + + + def __str__(self): + s = self.subject + \ + " certified by " + self.issuer + \ + " (" + self.log + ") " + if self.status: + return "(VALID) " + s + else: + return "(NOT VALID) " + s + + + + parser = argparse.ArgumentParser(description="") parser.add_argument('--domain', default=None) parser.add_argument('--log', default=None) @@ -24,11 +52,10 @@ parser.add_argument('--get-cert', action='store_true') args = parser.parse_args() monitored_domains = [ - "google.com", - "preishelden.de", - "liu.se", - "nordu.net", - "symantec.com", + monitored_domain("*.preishelden.de"), + monitored_domain("*.liu.se"), + monitored_domain("*.kth.se"), + monitored_domain("*.nordu.net"), ] db = DB_PATH @@ -36,7 +63,7 @@ db = DB_PATH def db_monitor_domain(domain, log=None, exclude_invalid=None, get_cert=None): - print domain + # print domain raw = db_lookup_domain(db, domain) cur_time = dt.now() @@ -44,6 +71,7 @@ def db_monitor_domain(domain, log=None, exclude_invalid=None, get_cert=None): count_expired = 0 count_not_yet_valid = 0 count_all = 0 + res = [] for item in raw: try: entry = ast.literal_eval(item) @@ -87,35 +115,28 @@ def db_monitor_domain(domain, log=None, exclude_invalid=None, get_cert=None): # Print matching if success: - s = entry["subject"].split("CN=")[1] + \ - " certified by " + entry["issuer"].split("CN=")[1] + \ - " (" + entry["log"] + ") " - if valid: - print "(VALID) " + s - else: - print "(NOT VALID) " + s + me = monitored_entry(entry["subject"].split("CN=")[1], entry["issuer"].split("CN=")[1], entry["log"],valid) + print str(me) if get_cert: print get_full_cert(entry) + res.append(me) print str(count_all) + " matches found. " \ + str(count_valid) + " valid, " \ + str(count_expired) + " expired and " \ - + str(count_not_yet_valid) + " not yet valid." + + str(count_not_yet_valid) + " not yet valid for " \ + + domain + return res if args.domain: - # if args.log: - # log = args.log - # else: - # log = None - # d = args.domain - db_monitor_domain(args.domain) - # db_monitor_domain(args.domain, args.log, args.exclude_invalid, args.get_cert) + db_monitor_domain(args.domain, args.log, args.exclude_invalid, args.get_cert) else: - print "No domain selected!" - sys.exit() + print "Running on " + str(len(monitored_domains)) + " monitored domains." + for d in monitored_domains: + db_monitor_domain(d.url, args.log, args.exclude_invalid, args.get_cert) |