[tor-commits] [depictor/master] Add bandwidth file info. Closes #29946 and #29947

tom at torproject.org tom at torproject.org
Thu Jun 20 14:04:22 UTC 2019


commit d7aca8850f4bbff25d8c6155ac094c937d680bc5
Author: Tom Ritter <tom at 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



More information about the tor-commits mailing list