[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r13145: Lots new today: Use the properly named subscribe.template, r (weather/trunk)



Author: ioerror
Date: 2008-01-15 21:48:13 -0500 (Tue, 15 Jan 2008)
New Revision: 13145

Modified:
   weather/trunk/config.py
   weather/trunk/poll.py
   weather/trunk/tor-weather-apache2.conf
   weather/trunk/weather.py
Log:
Lots new today:
    Use the properly named subscribe.template, rather than subscribe.html.
    Send the proper http headers.
    Fix the way the authenticator is parsed.
    Traceback exception imports changed.
    General code cleanups.
-jake


Modified: weather/trunk/config.py
===================================================================
--- weather/trunk/config.py	2008-01-16 02:35:14 UTC (rev 13144)
+++ weather/trunk/config.py	2008-01-16 02:48:13 UTC (rev 13145)
@@ -1,11 +1,10 @@
 #!/usr/bin/env python2.5
 
-
 URLbase = "http://weather.torproject.org";
 
 weather_storage = "/var/lib/torweather/"
 
-authenticator = open(weather_storage + "auth_token").read()  
+authenticator = open(weather_storage + "auth_token").read().strip()
 
 weather_email = "tor-ops@xxxxxxxxxxxxxx"
 

Modified: weather/trunk/poll.py
===================================================================
--- weather/trunk/poll.py	2008-01-16 02:35:14 UTC (rev 13144)
+++ weather/trunk/poll.py	2008-01-16 02:48:13 UTC (rev 13145)
@@ -7,7 +7,7 @@
 import time
 import threading
 from datetime import datetime
-from traceback import format_exc
+from traceback import print_exception
 from subprocess import Popen, PIPE
 import TorCtl.TorCtl as TorCtl
 
@@ -17,8 +17,6 @@
 
 debug = 0
 
-class NodePollFailure(Exception):
-  pass
 
 debugfile = open(weather_storage + "/torctl-debug","w")
 class TorPing:
@@ -53,17 +51,11 @@
     info = self.control.get_info(string)
     # info looks like this:
     # {'ns/id/FFCB46DB1339DA84674C70D7CB586434C4370441': 'r moria1 /8tG2xM52oRnTHDXy1hkNMQ3BEE pavoLDqxMvw+T1VHR5hmmgpr9self 2007-10-10 21:12:08 128.31.0.34 9001 9031\ns Authority Fast Named Running Valid V2Dir\n'}
-    try:
-      ip,port = info[string].split()[6:8]
-    except:
-      raise NodePollFailure, "Could not extract port and IP from tor client"
+    ip,port = info[string].split()[6:8]
     # throw exceptions like confetti if this isn't legit
-    try:
-      socket.inet_aton(ip)
-      # ensure port is a kosher string
-      assert 0 < int(port) < 65536
-    except:
-      raise NodePollFailure, "Tor client getinfo gave a non-kosher ip:port!"
+    socket.inet_aton(ip)
+    # ensure port is a kosher string
+    assert 0 < int(port) < 65536
 
     if debug: print "contacting node at %s:%s" % (ip,port)
 
@@ -79,8 +71,7 @@
     if n > 0:
       return True
     else:
-      raise NodePollFailure, "Cannot SSL handshake to node."
-      #return False
+      return False
 
   def test(self):
     "Check that the connection to the Tor Control port is still okay."
@@ -162,12 +153,10 @@
       node = self.subscriptions.nextkey(node)
     self.gdbm_lock.release()
     #del self.tp   # this minimises the chance of confusion a local tor control
-                   # port crash with a remote node being down
+                  # port crash with a remote node being down
     if debug: print "Ping_all finished"
-
  
   def ping(self, node):
-    "Is this node there and, to the best of our knowledge, being a tor node?"
     if debug: print "pinging", node
     try: 
       assert self.tp.ping(node)
@@ -180,10 +169,10 @@
         pass
     except:
       # for /some/ reason, we can't contact this tor node
-      #ex1,ex2,ex3 = sys.exc_info()
+      ex1,ex2,ex3 = sys.exc_info()
       if self.internet_looks_okay():
         # But we can ping the net.  That's bad.
-        reason = format_exc(500)    # limit to 500 stack levels in emails!
+        reason = print_exception(ex1,ex2,ex3)
         if (debug):
           print "logging a strike against node", node, "because of:"
           print reason
@@ -191,13 +180,12 @@
       else:
         print "I would have concluded that tor node", node, "was down;"
         print "The problem looked like this:"
-        print format_exc()
+        print print_exception(ex1,ex2,ex3)
         print "But I couldn't ping %s!" % (self.ping_failure)
  
   good_ping = re.compile("0% packet loss")
 
   def internet_looks_okay(self):
-    "If none of the ping targets are dropping packets, the Internet looks okay."
     cmd = ["ping", "-c", "3", "x"]
     pings = []
     for host in ping_targets:

Modified: weather/trunk/tor-weather-apache2.conf
===================================================================
--- weather/trunk/tor-weather-apache2.conf	2008-01-16 02:35:14 UTC (rev 13144)
+++ weather/trunk/tor-weather-apache2.conf	2008-01-16 02:48:13 UTC (rev 13145)
@@ -31,9 +31,8 @@
 	# Possible values include: debug, info, notice, warn, error, crit,
 	# alert, emerg.
 	LogLevel warn
- 
- 	# Don't log unless you're debugging!
-	#CustomLog /var/log/apache2/tor-weather-access.log combined
+
+	CustomLog /var/log/apache2/tor-weather-access.log combined
 	ServerSignature Off
 
 </VirtualHost>

Modified: weather/trunk/weather.py
===================================================================
--- weather/trunk/weather.py	2008-01-16 02:35:14 UTC (rev 13144)
+++ weather/trunk/weather.py	2008-01-16 02:48:13 UTC (rev 13145)
@@ -102,10 +102,12 @@
 class subscribe:
   
   def GET(self):
-    print open("subscribe.html").read()
+    web.header('content-type', 'text/html')
+    print open("subscribe.template").read()
 
   whitespace = re.compile("\s*")
   def POST(self):
+    web.header('content-type', 'text/html')
     i = web.input(node="none",email="none")
     if not self.check_email(i.email):
       print 'That email address looks fishy to our refined sensibilities!'
@@ -264,6 +266,7 @@
 class confirm:
   def GET(self,authstring):
     
+    web.header('content-type', 'text/html')
     print "<html>"
     if debug: print "checking confirmation..."
     gdbm_lock.acquire()
@@ -308,6 +311,7 @@
 class unsubscribe:
   def GET(self,authstring):
 
+    web.header('content-type', 'text/html')
     gdbm_lock.acquire()
     if not unsubscriptions.has_key(authstring):
       print "Invalid unsubscription request!"