commit d7aca8850f4bbff25d8c6155ac094c937d680bc5 Author: Tom Ritter <t...@ritter.vg> Date: Thu Jun 20 07:02:34 2019 -0700
Add bandwidth file info. Closes #29946 and #29947 --- utility.py | 8 ++++++++ website.py | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/utility.py b/utility.py index c931c59..38fb47a 100755 --- a/utility.py +++ b/utility.py @@ -26,6 +26,14 @@ def get_bwauths(): global config return dict((k.lower(), v) for (k, v) in stem.descriptor.remote.get_authorities().items() if v.nickname.lower() in config['bwauths']) +# How to grab a vote or consensus with stem: +""" +import stem.descriptor.remote +authority = stem.descriptor.remote.get_authorities()['moria1'] +downloader = stem.descriptor.remote.DescriptorDownloader(fall_back_to_authority = False, document_handler = stem.descriptor.DocumentHandler.DOCUMENT) +vote = downloader.query('/tor/status-vote/current/authority.z', default_params = False, endpoints=[(authority.address, authority.dir_port)]).run()[0] +""" + downloader = stem.descriptor.remote.DescriptorDownloader( timeout = 30, fall_back_to_authority = False, diff --git a/website.py b/website.py index 6d43e6f..f035da2 100755 --- a/website.py +++ b/website.py @@ -57,6 +57,7 @@ class WebsiteWriter: self._write_protocols() self._write_bandwidth_weights() self._write_bandwidth_scanner_status(True) + self._write_bandwidth_scanner_info() self._write_fallback_directory_status(True) self._write_authority_versions() self._write_download_statistics() @@ -1071,6 +1072,46 @@ class WebsiteWriter: self.site.write("</table>\n") #----------------------------------------------------------------------------------------- + def _write_bandwidth_scanner_info(self): + """ + Write the headers and digest from the bandwidth file + """ + self.site.write("<br>\n\n\n" + + " <!-- ================================================================= -->" + + "<a name=\"bwauthinfo\">\n" + + "<h3><a href=\"#bwauthinfo\" class=\"anchor\">" + + "Bandwidth scanner information</a></h3>\n") + self.site.write("<table border=\"0\" cellpadding=\"4\" cellspacing=\"0\" summary=\"\">\n" + + " <colgroup>\n" + + " <col width=\"160\">\n" + + " <col width=\"640\">\n" + + " </colgroup>\n") + if not self.votes: + self.site.write(" <tr><td>(No votes.)</td><td></td></tr>\n") + else: + for dirauth_nickname in self.bandwidth_authorities: + if dirauth_nickname not in self.votes: + self.site.write(" <tr>\n" + + " <td>" + dirauth_nickname + "</td>\n" + + " <td class=\"oiv\">Missing vote</td>\n" + + " </tr>\n") + else: + vote = self.votes[dirauth_nickname] + self.site.write(" <tr>\n" + + " <td>" + dirauth_nickname + "</td>\n" + + " <td>") + for h in vote.bandwidth_file_headers: + self.site.write(h + "=" + vote.bandwidth_file_headers[h] + " ") + if h == "timestamp": + friendly = datetime.datetime.utcfromtimestamp(int(vote.bandwidth_file_headers[h])).isoformat().replace("T", " ") + self.site.write("(" + friendly + ") ") + for h in vote.bandwidth_file_digest: + self.site.write(h + "=" + vote.bandwidth_file_digest[h] + " ") + self.site.write("</td>\n" + + " </tr>\n") + self.site.write("</table>\n") + + #----------------------------------------------------------------------------------------- def _write_fallback_directory_status(self, linkToGraph): """ Write the status of the fallback directory mirrors _______________________________________________ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits