From 79ec95cf3acbea3f8e01b20c335af40a2850a324 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Mon, 21 Jan 2013 13:31:16 +0100 Subject: [PATCH] Logging failed connection attempts. fix #362 --- modoboa/auth/views.py | 4 ++++ modoboa/lib/sysutils.py | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/modoboa/auth/views.py b/modoboa/auth/views.py index b09c71163..57c91d143 100755 --- a/modoboa/auth/views.py +++ b/modoboa/auth/views.py @@ -6,6 +6,7 @@ from django.core.urlresolvers import reverse from django.utils.translation import ugettext as _ from modoboa.lib import events from modoboa.lib.webutils import _render_to_string +from modoboa.lib.sysutils import log_warning from modoboa.admin import views as admviews from forms import LoginForm from modoboa.auth.lib import * @@ -36,6 +37,9 @@ def dologin(request): next = reverse(admviews.domains) return HttpResponseRedirect(next) error = _("Your username and password didn't match. Please try again.") + log_warning(_("Failed connection attempt from %s as user %s" \ + % (request.META["REMOTE_ADDR"], form.cleaned_data["username"]))) + next = request.POST.get("next", None) httpcode = 401 else: diff --git a/modoboa/lib/sysutils.py b/modoboa/lib/sysutils.py index efa73c957..20af17146 100644 --- a/modoboa/lib/sysutils.py +++ b/modoboa/lib/sysutils.py @@ -4,7 +4,8 @@ This module extra functions/shortcuts to communicate with the system (executing commands, etc.) """ - +import logging +import logging.handlers from modoboa.lib import parameters def exec_cmd(cmd, **kwargs): @@ -21,3 +22,16 @@ def exec_as_vuser(cmd): exec_cmd("echo '%s' >> /tmp/vmail.log" % output) return False return True + +def __log(msg, facility=logging.handlers.SysLogHandler.LOG_AUTH): + logger = logging.getLogger('modoboa') + logger.setLevel(logging.DEBUG) + handler = logging.handlers.SysLogHandler(address='/dev/log', facility=facility) + formatter = logging.Formatter('%(name)s: %(levelname)s %(message)s') + handler.setFormatter(formatter) + logger.addHandler(handler) + return logger + +def log_warning(msg): + logger = __log(msg) + logger.warning(msg)