summaryrefslogtreecommitdiff
path: root/monitor/josef_monitor.py
diff options
context:
space:
mode:
Diffstat (limited to 'monitor/josef_monitor.py')
-rwxr-xr-xmonitor/josef_monitor.py59
1 files changed, 33 insertions, 26 deletions
diff --git a/monitor/josef_monitor.py b/monitor/josef_monitor.py
index c52f29c..af5067b 100755
--- a/monitor/josef_monitor.py
+++ b/monitor/josef_monitor.py
@@ -17,21 +17,29 @@ from josef_reader import monitored_domain
from josef_leveldb import db_add_certs, db_open
import os.path
+
+parser = argparse.ArgumentParser(description="")
+parser.add_argument('--config', default="monitor_conf.py")
+args = parser.parse_args()
+
# Import from config file
-if os.path.isfile("monitor_conf.py"):
- from monitor_conf import ctlogs, OUTPUT_DIR, INTERVAL, DEFAULT_CERT_FILE, DB_PATH, MONITORED_DOMAINS, DOMAINS_FILE
+if os.path.isfile(args.config):
+ moduleNames = [args.config[:-2]]
+ modules = map(__import__, moduleNames)
+ # print modules
+ CONFIG = modules[0]
+ # from monitor_conf import ctlogs, OUTPUT_DIR, INTERVAL, DEFAULT_CERT_FILE, DB_PATH, MONITORED_DOMAINS, DOMAINS_FILE
else:
print "Config file not found!"
sys.exit()
-if not os.path.exists(OUTPUT_DIR):
- os.makedirs(OUTPUT_DIR)
+if not os.path.exists(CONFIG.OUTPUT_DIR):
+ os.makedirs(CONFIG.OUTPUT_DIR)
-if not os.path.exists(DB_PATH):
- os.makedirs(DB_PATH)
+if not os.path.exists(CONFIG.DB_PATH):
+ os.makedirs(CONFIG.DB_PATH)
-parser = argparse.ArgumentParser(description="")
class ctlog:
def __init__(self, name, url, key, log_id=None):
@@ -39,8 +47,8 @@ class ctlog:
self.url = url
self.key = key
self.log_id = log_id
- self.logfile = OUTPUT_DIR + name + ".log"
- self.savefile = OUTPUT_DIR + name + "-state-info.json"
+ self.logfile = CONFIG.OUTPUT_DIR + name + ".log"
+ self.savefile = CONFIG.OUTPUT_DIR + name + "-state-info.json"
self.subtree = [[]]
self.sth = None
self.entries = 0
@@ -71,7 +79,6 @@ class ctlog:
else:
self.log("ERROR Failed to build tree from entries.")
-
def fetch_and_increment_subtree(self, first, last, url, subtree =[[]]):
new_leafs = []
if first <= last:
@@ -84,14 +91,13 @@ class ctlog:
tmp_data["leaf_hash"] = base64.b64encode(entry_hash)
tmp_cert_data.append(tmp_data)
new_leafs.append(entry_hash)
- if DB_PATH:
- db_add_certs(DB_PATH, tmp_cert_data)
- if DEFAULT_CERT_FILE:
- append_file(DEFAULT_CERT_FILE, tmp_cert_data)
+ if CONFIG.DB_PATH:
+ db_add_certs(CONFIG.DB_PATH, tmp_cert_data)
+ if CONFIG.DEFAULT_CERT_FILE:
+ append_file(CONFIG.DEFAULT_CERT_FILE, tmp_cert_data)
subtree = reduce_tree(new_leafs, subtree)
return subtree, len(new_leafs) + first
-
def to_dict(self):
d = {}
d["entries"] = self.entries
@@ -141,7 +147,6 @@ class ctlog:
self.log("STH updated. Size: " + str(new_sth["tree_size"]) + ", Time: " + sth_time)
self.sth = new_sth
-
def update_roots(self):
try:
roots = get_all_roots(self.url)
@@ -153,7 +158,7 @@ class ctlog:
if new_root_hash != self.root_hash:
self.root_hash = new_root_hash
- cert_dir = OUTPUT_DIR + self.name + "-roots"
+ cert_dir = CONFIG.OUTPUT_DIR + self.name + "-roots"
if not os.path.exists(cert_dir):
os.makedirs(cert_dir)
@@ -367,14 +372,12 @@ def get_proof_by_index(baseurl, index, tree_size):
def get_all_roots(base_url):
result = urlopen(base_url + "ct/v1/get-roots").read()
certs = json.loads(result)["certificates"]
- # print time.strftime('%H:%M:%S') + " Received " + str(len(certs)) + " root certs from " + base_url
return certs
-
def setup_domain_monitoring():
monitored_domains = []
try:
- with open(DOMAINS_FILE) as fp:
+ with open(CONFIG.DOMAINS_FILE) as fp:
for line in fp:
tmp = json.loads(line)
for domain in tmp:
@@ -384,7 +387,7 @@ def setup_domain_monitoring():
except IOError:
pass
- for md in MONITORED_DOMAINS:
+ for md in CONFIG.MONITORED_DOMAINS:
tmp = monitored_domain(md)
if not tmp in monitored_domains:
print "New domain (not in file) " + md
@@ -392,14 +395,18 @@ def setup_domain_monitoring():
monitored_domains.append(tmp)
return monitored_domains
+
+def load_config(path):
+ pass
+
def main(args):
- global DB
+
monitored_domains = setup_domain_monitoring()
# Create logs
logs = []
try:
- for item in ctlogs:
+ for item in CONFIG.CTLOGS:
logs.append(ctlog(item["name"], item["url"], item["key"], item["id"]))
print time.strftime('%H:%M:%S') + " Setting up monitor for " + str(len(logs)) + " logs..."
@@ -439,7 +446,7 @@ def main(args):
domain_dict = []
for md in monitored_domains:
domain_dict.append(md.to_dict())
- open(DOMAINS_FILE, 'w').write(json.dumps(domain_dict))
+ open(CONFIG.DOMAINS_FILE, 'w').write(json.dumps(domain_dict))
# Something went horribly wrong!
except Exception, err:
@@ -451,12 +458,12 @@ def main(args):
domain_dict = []
for md in monitored_domains:
domain_dict.append(md.to_dict())
- open(DOMAINS_FILE, 'w').write(json.dumps(domain_dict))
+ open(CONFIG.DOMAINS_FILE, 'w').write(json.dumps(domain_dict))
if __name__ == '__main__':
- main(parser.parse_args())
+ main(args)