Commit e48dee99 authored by Jens Vagelpohl's avatar Jens Vagelpohl

Brought the MailHost module up to use declarative security

parent c2cddf61
...@@ -12,17 +12,19 @@ ...@@ -12,17 +12,19 @@
############################################################################## ##############################################################################
"""SMTP mail objects """SMTP mail objects
$Id: MailHost.py,v 1.64 2001/11/28 15:50:59 matt Exp $""" $Id: MailHost.py,v 1.65 2002/01/15 04:05:12 jens Exp $"""
__version__ = "$Revision: 1.64 $"[11:-2] __version__ = "$Revision: 1.65 $"[11:-2]
from Globals import Persistent, DTMLFile, HTML, MessageDialog from Globals import Persistent, DTMLFile, MessageDialog, InitializeClass
from smtplib import SMTP from smtplib import SMTP
from AccessControl.Role import RoleManager from AccessControl.Role import RoleManager
from operator import truth from operator import truth
import Acquisition, sys, string, types, mimetools import Acquisition, sys, string, types, mimetools
import OFS.SimpleItem, re, quopri, rfc822 import OFS.SimpleItem, re, quopri, rfc822
import Globals
from cStringIO import StringIO from cStringIO import StringIO
from AccessControl import ClassSecurityInfo
from AccessControl.Permissions import view_management_screens, \
use_mailhost_services
smtpError = "SMTP Error" smtpError = "SMTP Error"
MailHostError = "MailHost Error" MailHostError = "MailHost Error"
...@@ -58,7 +60,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager): ...@@ -58,7 +60,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager):
manage=manage_main=DTMLFile('dtml/manageMailHost', globals()) manage=manage_main=DTMLFile('dtml/manageMailHost', globals())
manage_main._setName('manage_main') manage_main._setName('manage_main')
index_html=None index_html=None
icon='misc_/MailHost/MHIcon' security = ClassSecurityInfo()
timeout=1.0 timeout=1.0
...@@ -72,12 +74,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager): ...@@ -72,12 +74,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager):
+OFS.SimpleItem.Item.manage_options +OFS.SimpleItem.Item.manage_options
) )
__ac_permissions__=(
('View management screens', ('manage','manage_main')),
('Change configuration', ('manage_makeChanges',)),
('Use mailhost services',('',)),
)
def __init__(self): def __init__(self):
'nothing yet' 'nothing yet'
pass pass
...@@ -86,6 +83,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager): ...@@ -86,6 +83,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager):
self.smtp_host=smtp_host self.smtp_host=smtp_host
self.smtp_port=smtp_port self.smtp_port=smtp_port
security.declareProtected( 'Change configuration', 'manage_makeChanges' )
def manage_makeChanges(self,title,smtp_host,smtp_port, REQUEST=None): def manage_makeChanges(self,title,smtp_host,smtp_port, REQUEST=None):
'make the changes' 'make the changes'
...@@ -103,6 +101,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager): ...@@ -103,6 +101,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager):
action =REQUEST['URL2']+'/manage_main', action =REQUEST['URL2']+'/manage_main',
target ='manage_main') target ='manage_main')
security.declareProtected( use_mailhost_services, 'sendTemplate' )
def sendTemplate(trueself, self, messageTemplate, def sendTemplate(trueself, self, messageTemplate,
statusTemplate=None, mto=None, mfrom=None, statusTemplate=None, mto=None, mfrom=None,
encode=None, REQUEST=None): encode=None, REQUEST=None):
...@@ -128,6 +127,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager): ...@@ -128,6 +127,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager):
except: except:
return "SEND OK" return "SEND OK"
security.declareProtected( use_mailhost_services, 'send' )
def send(self, messageText, mto=None, mfrom=None, subject=None, def send(self, messageText, mto=None, mfrom=None, subject=None,
encode=None): encode=None):
headers = extractheaders(messageText) headers = extractheaders(messageText)
...@@ -158,7 +158,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager): ...@@ -158,7 +158,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager):
smtpserver = SMTP(self.smtp_host, self.smtp_port) smtpserver = SMTP(self.smtp_host, self.smtp_port)
smtpserver.sendmail(headers['from'],headers['to'], messageText) smtpserver.sendmail(headers['from'],headers['to'], messageText)
security.declareProtected( use_mailhost_services, 'scheduledSend' )
def scheduledSend(self, messageText, mto=None, mfrom=None, subject=None, def scheduledSend(self, messageText, mto=None, mfrom=None, subject=None,
encode=None): encode=None):
"""Looks like the same function as send() - scheduledSend() is nowhere """Looks like the same function as send() - scheduledSend() is nowhere
...@@ -185,6 +185,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager): ...@@ -185,6 +185,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager):
smtpserver = SMTP(self.smtp_host, self.smtp_port) smtpserver = SMTP(self.smtp_host, self.smtp_port)
smtpserver.sendmail(headers['from'], headers['to'], messageText) smtpserver.sendmail(headers['from'], headers['to'], messageText)
security.declareProtected( use_mailhost_services, 'simple_send' )
def simple_send(self, mto, mfrom, subject, body): def simple_send(self, mto, mfrom, subject, body):
body="from: %s\nto: %s\nsubject: %s\n\n%s" % ( body="from: %s\nto: %s\nsubject: %s\n\n%s" % (
mfrom, mto, subject, body) mfrom, mto, subject, body)
...@@ -192,7 +193,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager): ...@@ -192,7 +193,7 @@ class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager):
mailserver.sendmail(mfrom, mto, body) mailserver.sendmail(mfrom, mto, body)
Globals.default__class_init__(MailBase) InitializeClass( MailBase )
class MailHost(Persistent, MailBase): class MailHost(Persistent, MailBase):
"persistent version" "persistent version"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment