[tor-commits] [torbel/master] Use UTC consistently

sebastian at torproject.org sebastian at torproject.org
Sun Sep 4 07:25:41 UTC 2011


commit cbc5d8c69e9386b15a3d366a1b3e9a4b379c96ba
Author: Sebastian Hahn <sebastian at torproject.org>
Date:   Sun Sep 4 08:32:34 2011 +0200

    Use UTC consistently
---
 bulklist.fcgi     |    4 +++-
 checkweb.py       |    3 ++-
 controller.py     |    2 +-
 dnsel/dnsel.py    |    5 +++--
 doc/data-spec.txt |    6 +++---
 query.py          |    6 +++---
 6 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/bulklist.fcgi b/bulklist.fcgi
index c447903..92dfcff 100755
--- a/bulklist.fcgi
+++ b/bulklist.fcgi
@@ -7,6 +7,8 @@ sys.path.append('/home/torbel/torbel')
 
 import socket
 
+from calendar import timegm
+
 import torbel.query as query
 from cgi import escape
 from urlparse import parse_qs
@@ -28,7 +30,7 @@ def update_elist():
     global elist
     elist = query.ExitList(filename = "/home/torbel/export/torbel_export.csv",
                            status_filename = "/home/torbel/export/torbel_export.status")
-    nextUpdate = math.ceil(time.mktime(elist.next_update.timetuple()) - time.time())
+    nextUpdate = math.ceil(timegm(elist.next_update.timetuple()) - time.time())
     if nextUpdate > 0:
         log.debug("Scheduling update in %d seconds.", nextUpdate)
         Timer(nextUpdate, update_elist, ()).start()
diff --git a/checkweb.py b/checkweb.py
index 85a99a5..32c6388 100755
--- a/checkweb.py
+++ b/checkweb.py
@@ -11,6 +11,7 @@ from logger import *
 from flup.server.fcgi import WSGIServer
 
 import time
+from calendar import timegm
 from threading import Timer
 
 import math
@@ -25,7 +26,7 @@ def update_elist():
     global elist
     elist = query.ExitList(filename = "/home/torbel/export/torbel_export.csv",
                            status_filename = "/home/torbel/export/torbel_export.status")
-    nextUpdate = math.ceil(time.mktime(elist.next_update.timetuple()) - time.time())
+    nextUpdate = math.ceil(timegm(elist.next_update.timetuple()) - time.time())
     if nextUpdate > 0:
         log.debug("Scheduling update in %d seconds.", nextUpdate)
         Timer(nextUpdate, update_elist, ()).start()
diff --git a/controller.py b/controller.py
index 807ce18..fe6dbf7 100644
--- a/controller.py
+++ b/controller.py
@@ -524,7 +524,7 @@ class Controller(TorCtl.EventHandler):
 
         # Add 30 seconds to the config.export_interval time so clients don't
         # try to fetch it as we're writing it.
-        next = datetime.now() + timedelta(0, config.export_interval * 60 + 30)
+        next = datetime.utcnow() + timedelta(0, config.export_interval * 60 + 30)
         nextstr = next.strftime("%b %d %Y %H:%M:%S")
         export_file_prefix = config.export_file_prefix
         fn     = export_file_prefix + ".status"
diff --git a/dnsel/dnsel.py b/dnsel/dnsel.py
index 2060562..b39230a 100755
--- a/dnsel/dnsel.py
+++ b/dnsel/dnsel.py
@@ -6,6 +6,7 @@
 # and the TorBEL query interface.
 import os, sys, time
 from datetime import datetime
+from calendar import timegm
 
 from zope.interface import implements
 from twisted.names import server, dns, common, error
@@ -32,7 +33,7 @@ class TorDNSServerFactory(server.DNSServerFactory):
             log.info("Export %s likely stale.", filename)
 
         # Set up updates.
-        nextUpdate = time.mktime(self.el.next_update.timetuple()) - time.time()
+        nextUpdate = timegm(self.el.next_update.timetuple()) - time.time()
         if nextUpdate > 0:
             log.debug("Scheduling first update in %.1f seconds.", nextUpdate)
             reactor.callLater(nextUpdate, self.update)
@@ -45,7 +46,7 @@ class TorDNSServerFactory(server.DNSServerFactory):
 
     def update(self):
         next = self.el.update()
-        nextUpdate = time.mktime(next.timetuple()) - time.time()
+        nextUpdate = timegm(next.timetuple()) - time.time()
         if nextUpdate > 0:
             log.info("ExitList updated. Next update in %.1f seconds.", nextUpdate)
             reactor.callLater(nextUpdate, self.update)
diff --git a/doc/data-spec.txt b/doc/data-spec.txt
index 9c39d87..5d6db11 100644
--- a/doc/data-spec.txt
+++ b/doc/data-spec.txt
@@ -108,9 +108,9 @@ Status: Draft
 
    * NextUpdate "Datetime":
      The value of this key is a date-time string with strftime(3) format
-     "%b %d %Y %H:%M:%S".  This date represents the absolute earliest time at
-     which a TorBEL export consumer should attempt to fetch an updated export
-     file.
+     "%b %d %Y %H:%M:%S" in UTC.  This date represents the absolute earliest
+     time at which a TorBEL export consumer should attempt to fetch an
+     updated export file.
      An example of this key is:
        NextUpdate "Aug 12 16:51:04"
      This key must appear exactly once in the status file.
diff --git a/query.py b/query.py
index 16a6e7a..a5dda85 100644
--- a/query.py
+++ b/query.py
@@ -212,7 +212,7 @@ class ExitList:
 
     def should_update(self):
         """ Returns True if our updates are out of date. """
-        return self.next_update and (datetime.datetime.now() > self.next_update)
+        return self.next_update and (datetime.datetime.utcnow() > self.next_update)
 
     def update(self, force = False):
         """ Read and update to the latest export and status files.
@@ -232,13 +232,13 @@ class ExitList:
         # Import the status file, if available.
         if self.status_filename:
             self.next_update, self.export_files = self.read_status(self.status_filename)
-            self.stale = (datetime.datetime.now() > self.next_update)
+            self.stale = (datetime.datetime.utcnow() > self.next_update)
         else:
             self.next_update = None
             self.export_files = None
 
         # Record our last update time.
-        self.last_update = datetime.datetime.now()
+        self.last_update = datetime.datetime.utcnow()
 
         return self.next_update
 



More information about the tor-commits mailing list