commit f5071fd7bdfe716c81c9761defb0baa53134e51d
Author: Tom <t...@ritter.vg>
Date:   Mon Oct 24 13:00:11 2016 -0500

    Refactor to use the config file more
    
    Remove hardcoded historical dirauths and put them into the config file.
    Remove hardcoded brideauths and put them there
    Add maatuska as a bwauth
---
 data/consensus.cfg | 20 ++++++++++++++++++++
 website.py         | 11 +++++++++--
 write_website.py   | 15 ++++++++++-----
 3 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/data/consensus.cfg b/data/consensus.cfg
index c57144a..8452beb 100644
--- a/data/consensus.cfg
+++ b/data/consensus.cfg
@@ -8,6 +8,26 @@ bandwidth_authorities moria1
 bandwidth_authorities gabelmoo
 bandwidth_authorities tor26
 bandwidth_authorities longclaw
+bandwidth_authorities maatuska
+
+# all current/historical bridge auths
+
+historical_bridge_authorities tonga
+historical_bridge_authorities bifrost
+
+# for creating tables in historical.db
+
+historical_dirauths faravahar
+historical_dirauths gabelmoo
+historical_dirauths dizum
+historical_dirauths moria1
+historical_dirauths urras
+historical_dirauths maatuska
+historical_dirauths longclaw
+historical_dirauths tor26
+historical_dirauths dannenberg
+historical_dirauths turtles
+
 
 # recognized tor consensus parameters
 
diff --git a/website.py b/website.py
index ba16c32..7b79ec9 100755
--- a/website.py
+++ b/website.py
@@ -18,7 +18,10 @@ class WebsiteWriter:
        consensus = None
        votes = None
        fallback_dirs = None
+       config_set = False
        known_authorities = []
+       historical_bridge_authorities = []
+       bandwidth_authorities = []
        consensus_expirey = datetime.timedelta(hours=3)
        directory_key_warning_time = datetime.timedelta(days=14)
        known_params = []
@@ -46,11 +49,13 @@ class WebsiteWriter:
                self.site.close()
 
        def set_consensuses(self, c):
+               if not self.config_set:
+                       raise Exception("Set config before calling")
                self.consensuses = c
                self.consensus = max(c.itervalues(), 
key=operator.attrgetter('valid_after'))
-               self.known_authorities = set([r.nickname for r in 
self.consensus.routers.values() if 'Authority' in r.flags and r.nickname != 
"Tonga" and r.nickname != "Bifroest"])
+               self.known_authorities = set([r.nickname for r in 
self.consensus.routers.values() if 'Authority' in r.flags and r.nickname not in 
self.historical_bridge_authorities])
                self.known_authorities.update([r.nickname for r in 
self.consensus.directory_authorities])
-               self.known_authorities.update([r for r in 
stem.descriptor.remote.get_authorities().keys() if r != "Tonga" and r != 
"Bifroest"])
+               self.known_authorities.update([r for r in 
stem.descriptor.remote.get_authorities().keys() if r not in 
self.historical_bridge_authorities])
        def set_votes(self, v):
                self.votes = v
        def set_consensus_expirey(self, timedelta):
@@ -58,7 +63,9 @@ class WebsiteWriter:
        def set_directory_key_warning_time(self, timedelta):
                self.directory_key_warning_time = timedelta
        def set_config(self, config):
+               self.config_set = True
                self.known_params = config['known_params']
+               self.historical_bridge_authorities = 
config['historical_bridge_authorities']
                self.bandwidth_authorities = config['bandwidth_authorities']
        def set_fallback_dirs(self, fallback_dirs):
                self.fallback_dirs = fallback_dirs
diff --git a/write_website.py b/write_website.py
index d76d242..70edf3e 100755
--- a/write_website.py
+++ b/write_website.py
@@ -33,6 +33,8 @@ CONFIG = stem.util.conf.config_dict('consensus', {
        'ignored_authorities': [],
        'bandwidth_authorities': [],
        'known_params': [],
+       'historical_dirauths' : [],
+       'historical_bridge_authorities' : []
 })
 
 downloader = stem.descriptor.remote.DescriptorDownloader(
@@ -107,7 +109,6 @@ def main():
        f.close()
 
        # Calculate the number of known and measured relays for each dirauth 
and insert it into the database
-       databaseDirAuths = "faravahar, gabelmoo, dizum, moria1, urras, 
maatuska, longclaw, tor26, dannenberg, turtles".split(", ")
        data = {}
        for dirauth_nickname in votes:
                vote = votes[dirauth_nickname]
@@ -122,7 +123,9 @@ def main():
                data[dirauth_nickname] = {'known' : len(vote.routers.values()), 
'running' : runningRelays, 'bwlines' : bandwidthWeights}
 
        insertValues = [unix_time(consensuses.values()[0].valid_after)]
-       for dirauth_nickname in databaseDirAuths:
+       createColumns = ""
+       for dirauth_nickname in CONFIG['historical_dirauths']:
+               createColumns += dirauth_nickname + "_known integer, " + 
dirauth_nickname + "_running integer, " + dirauth_nickname + "_bwauth integer, "
                if dirauth_nickname in votes:
                        insertValues.append(data[dirauth_nickname]['known'])
                        insertValues.append(data[dirauth_nickname]['running'])
@@ -132,7 +135,9 @@ def main():
                        insertValues.append(None)
                        insertValues.append(None)
 
-       dbc = sqlite3.connect(os.path.join('data', 'historical.db'))
+       dbc.execute("CREATE TABLE IF NOT EXISTS vote_data(date integer, " + 
createColumns + " PRIMARY KEY(date ASC));")
+       dbc.commit()
+
        dbc.execute("INSERT OR REPLACE INTO vote_data VALUES 
(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", insertValues)
        dbc.commit()
 
@@ -157,10 +162,10 @@ def main():
 
        # produces the website
        w = WebsiteWriter()
+       w.set_config(CONFIG)
        w.set_consensuses(consensuses)
        w.set_votes(votes)
        w.set_fallback_dirs(fallback_dirs)
-       w.set_config(CONFIG)
        w.write_website(os.path.join(os.path.dirname(__file__), 'out', 
'consensus-health.html'), True)
        w.write_website(os.path.join(os.path.dirname(__file__), 'out', 
'index.html'), False)
 
@@ -169,10 +174,10 @@ def main():
 
        # produces the website
        g = GraphWriter()
+       g.set_config(CONFIG)
        g.set_consensuses(consensuses)
        g.set_votes(votes)
        g.set_fallback_dirs(fallback_dirs)
-       g.set_config(CONFIG)
        g.write_website(os.path.join(os.path.dirname(__file__), 'out', 
'graphs.html'))
 
        del g



_______________________________________________
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to