commit 59cf04d4dc0211793764a4c5a8d860e1b7e87967
Author: Tom Ritter <[email protected]>
Date:   Wed Jan 4 14:05:44 2017 -0600

    Add a Protocol section for #20762
---
 website.py | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/website.py b/website.py
index 232c046..6bb3e6d 100755
--- a/website.py
+++ b/website.py
@@ -39,6 +39,7 @@ class WebsiteWriter:
                self._write_recommended_versions()
                self._write_consensus_parameters()
                self._write_authority_keys()
+               self._write_protocols()
                self._write_bandwidth_scanner_status(True)
                self._write_fallback_directory_status(True)
                self._write_authority_versions()
@@ -540,6 +541,98 @@ class WebsiteWriter:
                        + "</p>\n")
 
        
#-----------------------------------------------------------------------------------------
+       def protocolsToString(self, keys, v, c=None):
+               s = ""
+               for k in keys:
+                       s += k + "="
+                       if c and c[k] != v[k]:
+                               s += "<span class=\"oiv\">"
+                       s += ",".join([str(i) for i in v[k]])
+                       if c and c[k] != v[k]:
+                               s += "</span>"
+                       s += " "
+               return s
+       def _write_protocols(self):
+               """
+               Write the recommended and required protocols
+               """
+               self.site.write("<br>\n\n\n"
+               + " <!-- 
================================================================= -->"
+               + "<a name=\"protocols\">\n"
+               + "<h3><a href=\"#protocols\" class=\"anchor\">"
+               + "Protocols</a></h3>\n"
+               + "<br>\n"
+               + "<table border=\"0\" cellpadding=\"4\" cellspacing=\"0\" 
summary=\"\">\n"
+               + "  <colgroup>\n"
+               + "    <col width=\"140\">\n"
+               + "    <col width=\"180\">\n"
+               + "    <col width=\"480\">\n"
+               + "  </colgroup>\n")            
+               if not self.votes:
+                       self.site.write("  <tr><td>(No 
votes.)</td><td></td></tr>\n")
+               else:
+                       protocol_keys = set()
+                       for dirauth_nickname in self.known_authorities:
+                               if dirauth_nickname in self.votes:
+                                       vote = self.votes[dirauth_nickname]
+                                       protocol_keys = 
protocol_keys.union(vote.recommended_client_protocols.keys())
+                                       protocol_keys = 
protocol_keys.union(vote.required_client_protocols.keys())
+                                       protocol_keys = 
protocol_keys.union(vote.recommended_relay_protocols.keys())
+                                       protocol_keys = 
protocol_keys.union(vote.required_relay_protocols.keys())
+                       protocol_keys = list(protocol_keys)
+                       protocol_keys.sort()
+                       for dirauth_nickname in self.known_authorities:
+                               if dirauth_nickname in self.votes:
+                                       vote = self.votes[dirauth_nickname]
+
+                                       self.site.write("  <tr>\n"
+                                       + "    <td>" + dirauth_nickname + 
"</td>\n"
+                                       + "    <td>Recommended Client</td>\n"
+                                       + "    <td>" + 
self.protocolsToString(protocol_keys, vote.recommended_client_protocols, 
self.consensus.recommended_client_protocols) + "</td>\n"
+                                       + "  </tr>\n"
+                                       + "  <tr>\n"
+                                       + "    <td></td>\n"
+                                       + "    <td>Required Client</td>\n"
+                                       + "    <td>" + 
self.protocolsToString(protocol_keys, vote.required_client_protocols, 
self.consensus.required_client_protocols) + "</td>\n"
+                                       + "  </tr>\n"
+                                       + "  <tr>\n"
+                                       + "    <td></td>\n"
+                                       + "    <td>Recommended Relay</td>\n"
+                                       + "    <td>" + 
self.protocolsToString(protocol_keys, vote.recommended_relay_protocols, 
self.consensus.recommended_relay_protocols) + "</td>\n"
+                                       + "  </tr>\n"
+                                       + "  <tr>\n"
+                                       + "    <td></td>\n"
+                                       + "    <td>Required Relay</td>\n"
+                                       + "    <td>" + 
self.protocolsToString(protocol_keys, vote.required_relay_protocols, 
self.consensus.required_relay_protocols) + "</td>\n"
+                                       + "  </tr>\n")
+                               else:
+                                       self.site.write("  <tr>\n"
+                                       + "    <td>" + dirauth_nickname + 
"</td>\n"
+                                       + "    <td colspan=\"2\" 
class=\"oiv\">Vote Not Present</td>\n" 
+                                       + "  </tr>\n")
+                       self.site.write("  <tr>\n"
+                       + "    <td class=\"ic\">consensus</td>\n"
+                       + "    <td class=\"ic\">Recommended Client</td>\n"
+                       + "    <td class=\"ic\">" + 
self.protocolsToString(protocol_keys, 
self.consensus.recommended_client_protocols) + "</td>\n"
+                       + "  </tr>\n"
+                       + "  <tr>\n"
+                       + "    <td></td>\n"
+                       + "    <td class=\"ic\">Required Client</td>\n"
+                       + "    <td class=\"ic\">" + 
self.protocolsToString(protocol_keys, self.consensus.required_client_protocols) 
+ "</td>\n"
+                       + "  </tr>\n"
+                       + "  <tr>\n"
+                       + "    <td></td>\n"
+                       + "    <td class=\"ic\">Recommended Relay</td>\n"
+                       + "    <td class=\"ic\">" + 
self.protocolsToString(protocol_keys, 
self.consensus.recommended_relay_protocols) + "</td>\n"
+                       + "  </tr>\n"
+                       + "  <tr>\n"
+                       + "    <td></td>\n"
+                       + "    <td class=\"ic\">Required Relay</td>\n"
+                       + "    <td class=\"ic\">" + 
self.protocolsToString(protocol_keys, self.consensus.required_relay_protocols) 
+ "</td>\n"
+                       + "  </tr>\n"
+                       + "</table>\n")
+
+       
#-----------------------------------------------------------------------------------------
        def _write_bandwidth_scanner_status(self, linkToGraph):
                """
                Write the status of bandwidth scanners and results being 
contained in votes.

_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to