Fix pep8 support in src/plugins.
This commit is contained in:
parent
e51a8a650b
commit
0dca274360
1 changed files with 1052 additions and 1079 deletions
|
|
@ -21,34 +21,33 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
|
||||
from logging import debug, info, error
|
||||
import warnings
|
||||
from twisted.internet import protocol,defer
|
||||
from twisted.internet import protocol, defer
|
||||
from twisted.words.protocols.jabber import error as jab_error
|
||||
from twisted.cred import portal,checkers,credentials
|
||||
from twisted.cred import portal, checkers, credentials
|
||||
from twisted.cred import error as cred_error
|
||||
from twisted.mail import smtp
|
||||
from twisted.python import failure
|
||||
from email.parser import Parser
|
||||
from email.utils import parseaddr
|
||||
from twisted.mail.imap4 import LOGINCredentials, PLAINCredentials
|
||||
import os,os.path
|
||||
import os
|
||||
from twisted.internet import reactor
|
||||
import sys
|
||||
|
||||
|
||||
from zope.interface import implements
|
||||
|
||||
|
||||
PLUGIN_INFO = {
|
||||
"name": "SMTP server Plugin",
|
||||
"import_name": "SMTP",
|
||||
"type": "Misc",
|
||||
"protocols": [],
|
||||
"dependencies": ["Maildir"],
|
||||
"main": "SMTP_server",
|
||||
"handler": "no",
|
||||
"description": _("""Create a SMTP server that you can use to send your "normal" type messages""")
|
||||
"name": "SMTP server Plugin",
|
||||
"import_name": "SMTP",
|
||||
"type": "Misc",
|
||||
"protocols": [],
|
||||
"dependencies": ["Maildir"],
|
||||
"main": "SMTP_server",
|
||||
"handler": "no",
|
||||
"description": _("""Create a SMTP server that you can use to send your "normal" type messages""")
|
||||
}
|
||||
|
||||
|
||||
class SMTP_server(object):
|
||||
|
||||
params = """
|
||||
|
|
@ -74,13 +73,14 @@ class SMTP_server(object):
|
|||
self.server_factory = SmtpServerFactory(self.host)
|
||||
reactor.listenTCP(port, self.server_factory)
|
||||
|
||||
|
||||
class SatSmtpMessage(object):
|
||||
implements(smtp.IMessage)
|
||||
|
||||
def __init__(self, host, profile):
|
||||
self.host=host
|
||||
self.profile=profile
|
||||
self.message=[]
|
||||
self.host = host
|
||||
self.profile = profile
|
||||
self.message = []
|
||||
|
||||
def lineReceived(self, line):
|
||||
"""handle another line"""
|
||||
|
|
@ -90,25 +90,26 @@ class SatSmtpMessage(object):
|
|||
"""handle end of message"""
|
||||
mail = Parser().parsestr("\n".join(self.message))
|
||||
try:
|
||||
self.host.sendMessage(parseaddr(mail['to'].decode('utf-8','replace'))[1], mail.get_payload().decode('utf-8','replace'), #TODO: manage other charsets
|
||||
subject=mail['subject'].decode('utf-8','replace'), mess_type='normal', profile_key=self.profile)
|
||||
self.host.sendMessage(parseaddr(mail['to'].decode('utf-8', 'replace'))[1], mail.get_payload().decode('utf-8', 'replace'), # TODO: manage other charsets
|
||||
subject=mail['subject'].decode('utf-8', 'replace'), mess_type='normal', profile_key=self.profile)
|
||||
except:
|
||||
exc_type, exc_value, exc_traceback = sys.exc_info()
|
||||
error(_("Can't send message: %s") % exc_value) #The email is invalid or incorreclty parsed
|
||||
error(_("Can't send message: %s") % exc_value) # The email is invalid or incorreclty parsed
|
||||
return defer.fail()
|
||||
self.message=None
|
||||
self.message = None
|
||||
return defer.succeed(None)
|
||||
|
||||
def connectionLost(self):
|
||||
"""handle message truncated"""
|
||||
raise smtp.SMTPError
|
||||
|
||||
|
||||
class SatSmtpDelivery(object):
|
||||
implements(smtp.IMessageDelivery)
|
||||
|
||||
def __init__(self, host, profile):
|
||||
self.host=host
|
||||
self.profile=profile
|
||||
self.host = host
|
||||
self.profile = profile
|
||||
|
||||
def receivedHeader(self, helo, origin, recipients):
|
||||
"""
|
||||
|
|
@ -144,18 +145,20 @@ class SatSmtpDelivery(object):
|
|||
"""
|
||||
return origin
|
||||
|
||||
|
||||
class SmtpRealm(object):
|
||||
implements(portal.IRealm)
|
||||
|
||||
def __init__(self,host):
|
||||
def __init__(self, host):
|
||||
self.host = host
|
||||
|
||||
def requestAvatar(self, avatarID, mind, *interfaces):
|
||||
debug('requestAvatar')
|
||||
profile=avatarID.decode('utf-8')
|
||||
profile = avatarID.decode('utf-8')
|
||||
if smtp.IMessageDelivery not in interfaces:
|
||||
raise NotImplementedError
|
||||
return smtp.IMessageDelivery, SatSmtpDelivery(self.host,profile), lambda:None
|
||||
return smtp.IMessageDelivery, SatSmtpDelivery(self.host, profile), lambda: None
|
||||
|
||||
|
||||
class SatProfileCredentialChecker(object):
|
||||
"""
|
||||
|
|
@ -167,7 +170,6 @@ class SatProfileCredentialChecker(object):
|
|||
credentialInterfaces = (credentials.IUsernamePassword,
|
||||
credentials.IUsernameHashedPassword)
|
||||
|
||||
|
||||
def __init__(self, host):
|
||||
self.host = host
|
||||
|
||||
|
|
@ -182,26 +184,26 @@ class SatProfileCredentialChecker(object):
|
|||
if not credentials.username in profiles:
|
||||
return defer.fail(cred_error.UnauthorizedLogin())
|
||||
password = self.host.memory.getParamA("Password", "Connection", profile_key=credentials.username)
|
||||
return defer.maybeDeferred(
|
||||
credentials.checkPassword,
|
||||
password).addCallback(
|
||||
self._cbPasswordMatch, credentials.username)
|
||||
return defer.maybeDeferred(credentials.checkPassword,
|
||||
password).addCallback(self._cbPasswordMatch,
|
||||
credentials.username)
|
||||
|
||||
|
||||
class SmtpServerFactory(smtp.SMTPFactory):
|
||||
|
||||
def __init__(self, host):
|
||||
self.protocol = smtp.ESMTP
|
||||
self.host=host
|
||||
self.host = host
|
||||
_portal = portal.Portal(SmtpRealm(self.host))
|
||||
_portal.registerChecker(SatProfileCredentialChecker(self.host))
|
||||
smtp.SMTPFactory.__init__(self, _portal)
|
||||
|
||||
def startedConnecting(self, connector):
|
||||
debug (_("SMTP server connection started"))
|
||||
debug(_("SMTP server connection started"))
|
||||
smtp.SMTPFactory.startedConnecting(self, connector)
|
||||
|
||||
def clientConnectionLost(self, connector, reason):
|
||||
debug (_("SMTP server connection lost (reason: %s)"), reason)
|
||||
debug(_("SMTP server connection lost (reason: %s)"), reason)
|
||||
smtp.SMTPFactory.clientConnectionLost(self, connector, reason)
|
||||
|
||||
def buildProtocol(self, addr):
|
||||
|
|
@ -209,4 +211,3 @@ class SmtpServerFactory(smtp.SMTPFactory):
|
|||
# add the challengers from imap4, more secure and complicated challengers are available
|
||||
p.challengers = {"LOGIN": LOGINCredentials, "PLAIN": PLAINCredentials}
|
||||
return p
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue