commit 9162164ad821bcebd4cf79d25bae6965128643d4 Author: Arlo Breault arlolra@gmail.com Date: Mon May 5 20:26:36 2014 -0700
Add a user agent check for TBB
* Warn if it isn't a known Firefox.
* This is trac 9041. --- check.pot | 3 +++ handlers.go | 18 ++++++++++++++++-- public/base.html | 2 +- public/img/tor-not.png | Bin 0 -> 9745 bytes public/index.html | 20 +++++++++++++++----- utils.go | 11 +++++++++++ 6 files changed, 46 insertions(+), 8 deletions(-)
diff --git a/check.pot b/check.pot index 0b06910..ed65512 100644 --- a/check.pot +++ b/check.pot @@ -86,3 +86,6 @@ msgstr ""
msgid "JavaScript is disabled." msgstr "" + +msgid "However, it does not appear to be the Tor Browser Bundle." +msgstr "" diff --git a/handlers.go b/handlers.go index db5fe0b..3b220e0 100644 --- a/handlers.go +++ b/handlers.go @@ -20,6 +20,7 @@ type Page struct { IsTor bool NotUpToDate bool Small bool + NotTBB bool Fingerprint string OnOff string Lang string @@ -55,10 +56,22 @@ func RootHandler(Layout *template.Template, Exits *Exits, domain *gettext.Domain return }
+ // try to determine if it's TBB + notTBB := !LikelyTBB(r.UserAgent()) + + // users shouldn't be relying on check + // to determine the TBB is up-to-date + // always return false to this param + notUpToDate := IsParamSet(r, "uptodate") + // string used for classes and such // in the template if isTor { - onOff = "on" + if notTBB || notUpToDate { + onOff = "not" + } else { + onOff = "on" + } } else { onOff = "off" } @@ -66,8 +79,9 @@ func RootHandler(Layout *template.Template, Exits *Exits, domain *gettext.Domain // instance of your page model p := Page{ isTor, - IsParamSet(r, "uptodate"), + notUpToDate, IsParamSet(r, "small"), + notTBB, fingerprint, onOff, Lang(r), diff --git a/public/base.html b/public/base.html index bd46b69..366d912 100644 --- a/public/base.html +++ b/public/base.html @@ -13,7 +13,7 @@ font-family: Helvetica, sans-serif; margin: 0; } - h1 { font-size: 2.4em; } + h1 { font-size: 2.2em; } a { text-decoration: none; } a:hover { text-decoration: underline; } ul { margin: 0; padding: 0; } diff --git a/public/img/tor-not.png b/public/img/tor-not.png new file mode 100644 index 0000000..591e7cd Binary files /dev/null and b/public/img/tor-not.png differ diff --git a/public/index.html b/public/index.html index dec740a..82360a7 100644 --- a/public/index.html +++ b/public/index.html @@ -3,6 +3,7 @@ {{ define "css" }} .on { color: green; } .off { color: red; } + .not { color: goldenrod; } .mid { margin: 3em 0; } .mid a { text-decoration: underline; @@ -77,11 +78,20 @@ {{ end }} </h1> <p>{{ GetText .Lang "Your IP address appears to be: " }} <strong>{{ .IP }}</strong></p> - {{ if And .IsTor .NotUpToDate }} - <p class="security"> - {{ GetText .Lang "There is a security update available for the Tor Browser Bundle." }}<br /> - {{ GetText .Lang "<a href="https://www.torproject.org/download/download-easy.html%5C%22%3EClick here to go to the download page</a>" | UnEscaped }} - </p> + {{ if .IsTor }} + {{ if .NotUpToDate }} + <p class="security"> + {{ GetText .Lang "There is a security update available for the Tor Browser Bundle." }}<br /> + {{ GetText .Lang "<a href="https://www.torproject.org/download/download-easy.html%5C%22%3EClick here to go to the download page</a>" | UnEscaped }} + </p> + {{ else }} + {{ if .NotTBB }} + <p class="security"> + {{ GetText .Lang "However, it does not appear to be the Tor Browser Bundle." }}<br /> + {{ GetText .Lang "<a href="https://www.torproject.org/download/download-easy.html%5C%22%3EClick here to go to the download page</a>" | UnEscaped }} + </p> + {{ end }} + {{ end }} {{ end }} <p class="mid"> {{ if .IsTor }} diff --git a/utils.go b/utils.go index 79ba81e..8e05a07 100644 --- a/utils.go +++ b/utils.go @@ -57,6 +57,17 @@ func GetHost(r *http.Request) (host string, err error) { return }
+var TBBUserAgents = map[string]bool{ + "Mozilla/5.0 (Windows NT 6.1; rv:10.0) Gecko/20100101 Firefox/10.0": true, + "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0": true, + "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0": true, +} + +func LikelyTBB(ua string) bool { + _, ok := TBBUserAgents[ua] + return ok +} + var HaveManual = map[string]bool{ "ar": true, "cs": true,
tor-commits@lists.torproject.org