From a50d0ace814f048fb9cfbf845529b8567e422845 Mon Sep 17 00:00:00 2001 From: Cyril Jaquier Date: Tue, 12 Jul 2005 13:09:47 +0000 Subject: [PATCH] - Initial commit git-svn-id: https://fail2ban.svn.sourceforge.net/svnroot/fail2ban/branches/FAIL2BAN-0_5@132 a942ae1a-1317-0410-a47c-b1dcaea8d605 --- utils/mail.py | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ utils/strings.py | 40 +++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 utils/mail.py create mode 100644 utils/strings.py diff --git a/utils/mail.py b/utils/mail.py new file mode 100644 index 00000000..aab02b4e --- /dev/null +++ b/utils/mail.py @@ -0,0 +1,71 @@ +# This file is part of Fail2Ban. +# +# Fail2Ban is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# Fail2Ban is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Fail2Ban; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# Author: Cyril Jaquier +# +# $Revision$ + +__author__ = "Cyril Jaquier" +__version__ = "$Revision$" +__date__ = "$Date$" +__copyright__ = "Copyright (c) 2004 Cyril Jaquier" +__license__ = "GPL" + +import log4py, smtplib + +from utils.strings import replaceTag + +# Gets the instance of log4py. +logSys = log4py.Logger().get_instance() + +class Mail: + """ Mailer class + """ + + def __init__(self, host, port = 25): + self.host = host + self.port = port + + def setFromAddr(self, fromAddr): + """ Set from: address + """ + self.fromAddr = fromAddr + + def setToAddr(self, toAddr): + """ Set to: address + """ + self.toAddr = toAddr.split() + + def sendmail(self, subject, message, aInfo): + """ Send an email using smtplib + """ + subj = replaceTag(subject, aInfo) + msg = replaceTag(message, aInfo) + + mail = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % + (self.fromAddr, ", ".join(self.toAddr), subj)) + msg + + try: + server = smtplib.SMTP(self.host, self.port) + #server.set_debuglevel(1) + server.sendmail(self.fromAddr, self.toAddr, mail) + logSys.debug("Email sent to " + `self.toAddr`) + server.quit() + except Exception: + logSys.error("Unable to send mail to " + self.host + ":" + + `self.port` + " from " + self.fromAddr + " to " + + `self.toAddr`) + \ No newline at end of file diff --git a/utils/strings.py b/utils/strings.py new file mode 100644 index 00000000..ae0108d2 --- /dev/null +++ b/utils/strings.py @@ -0,0 +1,40 @@ +# This file is part of Fail2Ban. +# +# Fail2Ban is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# Fail2Ban is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Fail2Ban; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# Author: Cyril Jaquier +# +# $Revision$ + +__author__ = "Cyril Jaquier" +__version__ = "$Revision$" +__date__ = "$Date$" +__copyright__ = "Copyright (c) 2004 Cyril Jaquier" +__license__ = "GPL" + +import log4py + +# Gets the instance of log4py. +logSys = log4py.Logger().get_instance() + +def replaceTag(query, aInfo): + """ Replace tags in query + """ + string = query + for tag in aInfo: + string = string.replace('<'+tag+'>', `aInfo[tag]`) + # New line + string = string.replace('
', '\n') + return string