[or-cvs] r14456: This includes all of the changes that Nick suggested. Furthe (check/trunk/cgi-bin)

ioerror at seul.org ioerror at seul.org
Fri Apr 25 03:34:06 UTC 2008


Author: ioerror
Date: 2008-04-24 23:34:06 -0400 (Thu, 24 Apr 2008)
New Revision: 14456

Added:
   check/trunk/cgi-bin/TorCheck.pot
Modified:
   check/trunk/cgi-bin/index.py
Log:
This includes all of the changes that Nick suggested. Furthermore, while it still includes debug information, it now properly sets up the i18n stuff. This checkin also includes a template for translation.


Added: check/trunk/cgi-bin/TorCheck.pot
===================================================================
--- check/trunk/cgi-bin/TorCheck.pot	                        (rev 0)
+++ check/trunk/cgi-bin/TorCheck.pot	2008-04-25 03:34:06 UTC (rev 14456)
@@ -0,0 +1,63 @@
+# TorCheck gettext template
+# Copyright (C) 2008 Jacob Appelbaum
+# Jacob Appelbaum <jacob at appelbaum.net>, 2008
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: TorCheck untagged beta\n"
+"POT-Creation-Date: 2008-04-24 20:28+PDT\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Jacob Appelbaum <jacob at appelbaum.net>\n"
+"Language-Team: Tor Translation <tor-translation at torproject.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: ENCODING\n"
+"Generated-By: pygettext.py 1.5\n"
+
+
+#: index.py:145
+msgid "Congratulations. You are using Tor.<br><br>"
+msgstr ""
+
+#: index.py:149
+msgid ""
+"Please refer to the <a href=\"https://www.torproject.org/\">Tor website</a> for further information about using Tor safely.<br><br>\n"
+msgstr ""
+
+#: index.py:157
+msgid ""
+"Sorry. You are not using Tor.\n"
+"<br><br>"
+msgstr ""
+
+#: index.py:160
+msgid "If you are attempting to use a Tor client, please refer to the <a href=\"https://www.torproject.org/\">Tor website</a> and specifically the <a href=\"https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#ItDoesntWork\">instructions for configuring your Tor client</a>.<br><br>"
+msgstr ""
+
+#: index.py:176
+msgid ""
+"Sorry, your query failed or an unexpected response was received.\n"
+"<br>"
+msgstr ""
+
+#: index.py:178
+msgid "A temporary service outage prevents us from determining if your source IP address is a <a href=\"https://www.torproject.org/\">Tor</a> node.  For other ways to test whether you are using Tor, please visit <a href=\"https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#IsMyConnectionPrivate\">this FAQ entry</a>.<br><br>"
+msgstr ""
+
+#: index.py:185
+msgid ""
+"Additional information:<br>\n"
+msgstr ""
+
+#: index.py:187
+msgid "Your IP appears to be: "
+msgstr ""
+
+#: index.py:190
+msgid "This small script is powered by <a href=\"http://exitlist.torproject.org/\">tordnsel</a><br><br>"
+msgstr ""
+
+#: index.py:192
+msgid "This server does not log <i>any</i> information about visitors.<br>"
+msgstr ""
+

Modified: check/trunk/cgi-bin/index.py
===================================================================
--- check/trunk/cgi-bin/index.py	2008-04-24 21:29:47 UTC (rev 14455)
+++ check/trunk/cgi-bin/index.py	2008-04-25 03:34:06 UTC (rev 14456)
@@ -16,20 +16,14 @@
 
 # Unused for now
 # import antigravity
+import DNS 
 # This is pydns and can be downloaded from http://pydns.sourceforge.net/ 
 # Or use the Debian package listed above
-import DNS 
 from mod_python import apache
 from mod_python import util
 import cgitb; cgitb.enable()
 import gettext
 
-# i18n with Unicode!
-# We need to make some TorCheck.{po,pot,mo} files
-gettext.install('TorCheck','.', unicode=1)
-gettext.bind_textdomain_codeset('TorCheck', 'en_US')
-_ = gettext.gettext
-
 # We could also explictly query the remote EL server
 # This is not as good as using a cache for obvious reasons
 DNS.DiscoverNameServers()
@@ -56,46 +50,23 @@
     # Ask the question and load the data into our answer
     answer=request.req()
 
-    # TODO: Don't make this a single point of return
-
     # Parse the answer and decide if it's allowing exits
     # 127.0.0.2 is an exit and NXDOMAIN is not
     if answer.header['status'] == "NXDOMAIN":
-	UsingTor=1
+        # We're not exiting from a Tor exit
+        return 1
     else:
-	if answer.answers:
-	   for i in answer.answers:
-	       if i['data'] == "127.0.0.2":
-		   UsingTor=0
-	       else:
-		   # We're getting unexpected data - fail closed
-	           UsingTor=2
-	else:
-		# We're getting unexpected data - fail closed
-	        UsingTor=2
+	if not answer.answers:
+	    # We're getting unexpected data - fail closed
+	    return 2
+	for a in answer.answers:
+	    if a['data'] != "127.0.0.2":
+	        return 2
+	# If we're here, we've had a positive exit answer
+	return 0
 
-    return UsingTor
+def parseLang(req):
 
-# Now that we know everything we need, lets print the website
-def handler(req):
-
-    # Make a DNS request to the EL and decide what to tell the user
-    UsingTor = isUsingTor(req.connection.remote_ip)
-
-    # This is where we need to parse out lang:
-    # req.subprocess_env['QUERY_STRING'] = fa-IR
-    # Then, depending on what we have, we should compare it to a tuple
-
-    req.send_http_header()
-    req.content_type = 'text/html ;charset=utf-8'
-
-    # First lets construct the simple webpage:
-    req.write('<html>\n')
-    req.write('<body>\n')
-
-    req.write('Debug info: <br>')
-    req.write('UsingTor is set to: %s<br>' % UsingTor )
-
     queryString = req.subprocess_env['QUERY_STRING']
     user_supplied_lang = None
 
@@ -138,6 +109,30 @@
     if locale != user_supplied_lang: 
         req.write("We have selected the locale of: %s \n<br>\n" % locale)
 
+    # i18n with Unicode!
+    # We need to make some TorCheck.{po,pot,mo} files
+    gettext.install('TorCheck','.', unicode=1)
+    gettext.bind_textdomain_codeset('TorCheck', locale)
+    _ = gettext.gettext
+
+# Now that we know everything we need, lets print the website
+def handler(req):
+
+    # Make a DNS request to the EL and decide what to tell the user
+    UsingTor = isUsingTor(req.connection.remote_ip)
+
+    req.send_http_header()
+    req.content_type = 'text/html ;charset=utf-8'
+
+    # First lets construct the simple webpage:
+    req.write('<html>\n')
+    req.write('<body>\n')
+
+    req.write('Debug info: <br>')
+    req.write('UsingTor is set to: %s<br>' % UsingTor )
+
+    parseLang(req)
+
     req.write("\n<br><br>\n")
 
     req.write('<title>Are you using Tor?</title>\n')
@@ -148,29 +143,29 @@
 	req.write('<img src="https://check.torproject.org/tor-on.png">\n<br>')
 	req.write('<h1 style="color: #0A0">\n')
 	req.write(_('Congratulations. You are using Tor.<br><br>'))
-	req.write('ﻡژﺪﻫ. ﺶﻣﺍ (ﺎﺤﺘﻣﺍﻻ) ﺩﺭ ﺡﺎﻟ ﺎﺴﺘﻓﺍﺪﻫ ﺍﺯ ﺕُﺭ ﻡی ﺏﺎﺷیﺩ.')
+	#req.write('ﻡژﺪﻫ. ﺶﻣﺍ (ﺎﺤﺘﻣﺍﻻ) ﺩﺭ ﺡﺎﻟ ﺎﺴﺘﻓﺍﺪﻫ ﺍﺯ ﺕُﺭ ﻡی ﺏﺎﺷیﺩ.')
 	req.write('<br>\n<br>\n')
 	req.write('</h1>\n')
-	req.write('Please refer to the <a href="https://www.torproject.org/">Tor website</a> for further information about using Tor safely.<br><br>\n')
-	req.write('ﺥﻭﺎﻬﺸﻤﻧﺩ ﺎﺴﺗ ﻡﺭﺎﺠﻌﻫ کﻥیﺩ ﺐﻫ <a href="https://www.torproject.org/">ﻮﺑ ﺱﺍیﺕ ﺕُﺭ</a>  ﺏﺭی ﺎﻃﻼﻋﺎﺗ ﺏیﺶﺗﺭ ﺩﺮﻣﻭﺭﺩ ﺎﺴﺘﻓﺪﻫ ﺍیﻢﻧ ﺍﺯ ﺕُﺭ<br><bbr>')
+	req.write(_('Please refer to the <a href="https://www.torproject.org/">Tor website</a> for further information about using Tor safely.<br><br>\n'))
+	#req.write('ﺥﻭﺎﻬﺸﻤﻧﺩ ﺎﺴﺗ ﻡﺭﺎﺠﻌﻫ کﻥیﺩ ﺐﻫ <a href="https://www.torproject.org/">ﻮﺑ ﺱﺍیﺕ ﺕُﺭ</a>  ﺏﺭی ﺎﻃﻼﻋﺎﺗ ﺏیﺶﺗﺭ ﺩﺮﻣﻭﺭﺩ ﺎﺴﺘﻓﺪﻫ ﺍیﻢﻧ ﺍﺯ ﺕُﺭ<br><bbr>')
     
     # This is the case where we have an NXDOMAIN and they aren't using Tor
     elif UsingTor == 1:
         req.write('\n')
         req.write('<img src="https://check.torproject.org/tor-off.png">\n<br>')
         req.write('<h1 style="color: #A00">')
-        req.write('Sorry. You are not using Tor.\n<br><br>')
-        req.write('پﻭﺰﺷ. ﺶﻣﺍ (ﺎﺤﺘﻣﺍﻻ) ﺩﺭ ﺡﺎﻟ ﺎﺴﺘﻓﺍﺪﻫ ﺍﺯ ﺕُﺭ ﻦﻣی ﺏﺎﺷیﺩ.\n<br><br>')
+        req.write(_('Sorry. You are not using Tor.\n<br><br>'))
+        #req.write('پﻭﺰﺷ. ﺶﻣﺍ (ﺎﺤﺘﻣﺍﻻ) ﺩﺭ ﺡﺎﻟ ﺎﺴﺘﻓﺍﺪﻫ ﺍﺯ ﺕُﺭ ﻦﻣی ﺏﺎﺷیﺩ.\n<br><br>')
         req.write('</h1>')
-        req.write('If you are attempting to use a Tor client, please refer to the <a href="https://www.torproject.org/">Tor website</a> and specifically the <a href="https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#ItDoesntWork">instructions for configuring your Tor client</a>.<br><br>')
-        req.write('ﺍگﺭ ﺲﻋی ﺩﺭ ﺎﺴﺘﻓﺍﺪﻫ ﺍﺯ یک کﺍﺮﺧﻭﺎﻫ ﺕُﺭ ﺭﺍ ﺩﺍﺭیﺩ, ﺥﻭﺎﻬﺸﻤﻧﺩ ﺎﺴﺗ ﻡﺭﺎﺠﻌﻫ کﻥیﺩ ﺐﻫ ')
-        req.write('<a href="https://www.torproject.org/">')
-	req.write('ﻮﺑ ﺱﺍیﺕ ﺕُﺭ')
-        req.write('</a> ')
-        req.write('ﻭ ﺏﻭیژﻩ ')
-        req.write('<a href="https://wiki.noreply.org/noreply/TheOnionRouter/TorFAQ#ItDoesntWork">')
-	req.write('ﺪﺴﺗﻭﺭﺎﺗ ﺏﺭﺍی پیکﺮﺒﻧﺩی کﺍﺮﺧﻭﺎﻫ ﺕُﺭ.')
-        req.write('</a><br><br>')
+        req.write(_('If you are attempting to use a Tor client, please refer to the <a href="https://www.torproject.org/">Tor website</a> and specifically the <a href="https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#ItDoesntWork">instructions for configuring your Tor client</a>.<br><br>'))
+        #req.write('ﺍگﺭ ﺲﻋی ﺩﺭ ﺎﺴﺘﻓﺍﺪﻫ ﺍﺯ یک کﺍﺮﺧﻭﺎﻫ ﺕُﺭ ﺭﺍ ﺩﺍﺭیﺩ, ﺥﻭﺎﻬﺸﻤﻧﺩ ﺎﺴﺗ ﻡﺭﺎﺠﻌﻫ کﻥیﺩ ﺐﻫ ')
+        #req.write('<a href="https://www.torproject.org/">')
+	#req.write('ﻮﺑ ﺱﺍیﺕ ﺕُﺭ')
+        #req.write('</a> ')
+        #req.write('ﻭ ﺏﻭیژﻩ ')
+        #req.write('<a href="https://wiki.noreply.org/noreply/TheOnionRouter/TorFAQ#ItDoesntWork">')
+	#req.write('ﺪﺴﺗﻭﺭﺎﺗ ﺏﺭﺍی پیکﺮﺒﻧﺩی کﺍﺮﺧﻭﺎﻫ ﺕُﺭ.')
+        #req.write('</a><br><br>')
 
     # This means we have some strange data response we don't understand
     # It's better that we fail closed and let the user know everything went wrong
@@ -178,31 +173,29 @@
         req.write('\n')
         req.write('<img src="https://check.torproject.org/tor-off.png">\n<br>')
         req.write('<h1 style="color: #A00">\n')
-        req.write('Sorry, your query failed or an unexpected response was received.\n<br>')
+        req.write(_('Sorry, your query failed or an unexpected response was received.\n<br>'))
 	req.write('</h1>')
-        req.write('A temporary service outage prevents us from determining if your source IP address is a <a href="https://www.torproject.org/">Tor</a> node.  For other ways to test whether you are using Tor, please visit <a href="https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#IsMyConnectionPrivate">this FAQ entry</a>.<br><br>')
+        req.write(_('A temporary service outage prevents us from determining if your source IP address is a <a href="https://www.torproject.org/">Tor</a> node.  For other ways to test whether you are using Tor, please visit <a href="https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#IsMyConnectionPrivate">this FAQ entry</a>.<br><br>'))
 
-
     # Now we'll close up this html rat hole
     req.write('\n')
     req.write('<br>\n');
     req.write('<small>\n')
     req.write('<p><tt>')
-    req.write('Additional information:<br>\n')
-    req.write('ﺎﻃﻼﻋﺎﺗ ﺕکﻡیﻝی:<br>\n')
-    req.write('Your IP appears to be: <b>%s</b><br>\n' % req.connection.remote_ip )
-    req.write('ﺁﺩﺮﺳ ﺁی پی ﺶﻣﺍ: <b>%s</b><br>\n' % req.connection.remote_ip )
-    req.write('This small script is powered by <a href="http://exitlist.torproject.org/">tordnsel</a><br><br>')
-    req.write('ﺍیﻥ ﺪﺴﺗ<200c>ﻧﻮﺸﺘﻫ کﻭچک ﺍﺭﺎﺌﻫ ﻡی ﺵﻭﺩ ﺏﻮﺳیﻞﻫ <a href="http://exitlist.torproject.org/">tordnsel</a><br><br>')
-    req.write('This server does not log <i>any</i> information about visitors.<br>')
-    req.write('ﺍیﻥ پیﺵکﺍﺭ ﻩیچ ﺎﻃﻼﻋﺎﺗی ﺩﺮﻣﻭﺭﺩ کﺍﺮﺑﺭﺎﻧ ﻢﻬﻣﺎﻧ ﺭﺍ ﺚﺒﺗ ﻦﻣی کﻥﺩ.<br>')
+    req.write(_('Additional information:<br>\n'))
+    #req.write('ﺎﻃﻼﻋﺎﺗ ﺕکﻡیﻝی:<br>\n')
+    req.write(_('Your IP appears to be: '))
+    req.write('<b>%s</b><br>\n' % req.connection.remote_ip )
+    #req.write('ﺁﺩﺮﺳ ﺁی پی ﺶﻣﺍ: <b>%s</b><br>\n' % req.connection.remote_ip )
+    req.write(_('This small script is powered by <a href="http://exitlist.torproject.org/">tordnsel</a><br><br>'))
+    #req.write('ﺍیﻥ ﺪﺴﺗ<200c>ﻧﻮﺸﺘﻫ کﻭچک ﺍﺭﺎﺌﻫ ﻡی ﺵﻭﺩ ﺏﻮﺳیﻞﻫ <a href="http://exitlist.torproject.org/">tordnsel</a><br><br>')
+    req.write(_('This server does not log <i>any</i> information about visitors.<br>'))
+    #req.write('ﺍیﻥ پیﺵکﺍﺭ ﻩیچ ﺎﻃﻼﻋﺎﺗی ﺩﺮﻣﻭﺭﺩ کﺍﺮﺑﺭﺎﻧ ﻢﻬﻣﺎﻧ ﺭﺍ ﺚﺒﺗ ﻦﻣی کﻥﺩ.<br>')
     req.write('\n<br>\n')
-    req.write('It appears that you\'re trying to instruct us to use the following l10n:' + req.subprocess_env['QUERY_STRING'])
     req.write('</tt></p>')
     req.write('</small>')
     req.write('</center>\n')
     req.write('</body>')
     req.write('</html>')
 
-    # We'll i18n the output to make this cleaner
     return apache.OK



More information about the tor-commits mailing list