[CalendarServer-changes] [7597] CalendarServer/trunk/twistedcaldav
source_changes at macosforge.org
source_changes at macosforge.org
Tue Jun 14 15:33:16 PDT 2011
Revision: 7597
http://trac.macosforge.org/projects/calendarserver/changeset/7597
Author: sagen at apple.com
Date: 2011-06-14 15:33:14 -0700 (Tue, 14 Jun 2011)
Log Message:
-----------
Move the purging of old mail tokens to startService so we've shed privileges (9541985)
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/mail.py
CalendarServer/trunk/twistedcaldav/test/test_mail.py
Modified: CalendarServer/trunk/twistedcaldav/mail.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/mail.py 2011-06-14 21:25:46 UTC (rev 7596)
+++ CalendarServer/trunk/twistedcaldav/mail.py 2011-06-14 22:33:14 UTC (rev 7597)
@@ -529,6 +529,18 @@
# Service
#
+class MailGatewayService(service.MultiService):
+
+ def startService(self):
+ """
+ Purge old database tokens -- doing this in startService so that
+ it happens after we've shed privileges
+ """
+ service.MultiService.startService(self)
+ if self.mailer is not None:
+ self.mailer.purge()
+
+
class MailGatewayServiceMaker(LoggingMixIn):
implements(IPlugin, service.IServiceMaker)
@@ -543,7 +555,7 @@
config.Memcached.MaxClients,
)
- multiService = service.MultiService()
+ mailGatewayService = MailGatewayService()
settings = config.Scheduling['iMIP']
if settings['Enabled']:
@@ -560,18 +572,19 @@
# TODO: raise error?
self.log_error("Invalid iMIP type in configuration: %s" %
(mailType,))
- return multiService
+ return mailGatewayService
- client.setServiceParent(multiService)
+ client.setServiceParent(mailGatewayService)
-
# Set up /inbox -- server POSTs to it to send out iMIP invites
- IScheduleService(settings, mailer).setServiceParent(multiService)
+ IScheduleService(settings, mailer).setServiceParent(mailGatewayService)
else:
+ mailer = None
self.log_info("Mail Gateway Service not enabled")
- return multiService
+ mailGatewayService.mailer = mailer
+ return mailGatewayService
class IScheduleService(service.MultiService, LoggingMixIn):
@@ -609,9 +622,14 @@
if dataRoot is None:
dataRoot = config.DataRoot
self.db = MailGatewayTokensDatabase(dataRoot)
- days = config.Scheduling['iMIP']['InvitationDaysToLive']
+ self.days = config.Scheduling['iMIP']['InvitationDaysToLive']
+
+ def purge(self):
+ """
+ Purge old database tokens
+ """
self.db.purgeOldTokens(datetime.date.today() -
- datetime.timedelta(days=days))
+ datetime.timedelta(days=self.days))
def checkDSN(self, message):
# returns (isDSN, Action, icalendar attachment)
Modified: CalendarServer/trunk/twistedcaldav/test/test_mail.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/test/test_mail.py 2011-06-14 21:25:46 UTC (rev 7596)
+++ CalendarServer/trunk/twistedcaldav/test/test_mail.py 2011-06-14 22:33:14 UTC (rev 7597)
@@ -25,6 +25,7 @@
from twistedcaldav.mail import MailHandler
from twistedcaldav.mail import MailGatewayTokensDatabase
import os
+import datetime
def echo(*args):
@@ -38,6 +39,32 @@
self.handler = MailHandler(dataRoot=":memory:")
self.dataDir = os.path.join(os.path.dirname(__file__), "data", "mail")
+
+ def test_purge(self):
+ """
+ Ensure that purge( ) cleans out old tokens
+ """
+
+ # Insert an "old" token
+ token = "test_token"
+ organizer = "me at example.com"
+ attendee = "you at example.com"
+ icaluid = "123"
+ pastDate = datetime.date(2009,1,1)
+ self.handler.db._db_execute(
+ """
+ insert into TOKENS (TOKEN, ORGANIZER, ATTENDEE, ICALUID, DATESTAMP)
+ values (:1, :2, :3, :4, :5)
+ """, token, organizer, attendee, icaluid, pastDate
+ )
+ self.handler.db._db_commit()
+
+ # purge, and make sure we don't see that token anymore
+ self.handler.purge()
+ retrieved = self.handler.db.getToken(organizer, attendee, icaluid)
+ self.assertEquals(retrieved, None)
+
+
def test_iconPath(self):
iconPath = self.handler.getIconPath({'day':'1', 'month':'1'}, False, language='en')
iconDir = "/usr/share/caldavd/share/date_icons"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110614/e29bf8fd/attachment-0001.html>
More information about the calendarserver-changes
mailing list