]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 729001: Reverse resolves the IP address in account lockout notifications
authorByron Jones <bjones@mozilla.com>
Tue, 8 May 2012 06:19:12 +0000 (14:19 +0800)
committerByron Jones <bjones@mozilla.com>
Tue, 8 May 2012 06:19:12 +0000 (14:19 +0800)
r=LpSolit, a=LpSolit

Bugzilla/Auth.pm
template/en/default/email/lockout.txt.tmpl

index 93ee45b541b9abf8a92bab5d00f85bd568f7f1ce..477dbffaa83adf231a721fc2fd1f0801aee4107b 100644 (file)
@@ -22,6 +22,7 @@ use Bugzilla::User::Setting ();
 use Bugzilla::Auth::Login::Stack;
 use Bugzilla::Auth::Verify::Stack;
 use Bugzilla::Auth::Persist::Cookie;
+use Socket;
 
 sub new {
     my ($class, $params) = @_;
@@ -199,10 +200,18 @@ sub _handle_login_result {
             my $default_settings = Bugzilla::User::Setting::get_defaults();
             my $template = Bugzilla->template_inner(
                                $default_settings->{lang}->{default_value});
+            my $address = $attempts->[0]->{ip_addr};
+            # Note: inet_aton will only resolve IPv4 addresses.
+            # For IPv6 we'll need to use inet_pton which requires Perl 5.12.
+            my $n = inet_aton($address);
+            if ($n) {
+                $address = gethostbyaddr($n, AF_INET) . " ($address)"
+            }
             my $vars = {
                 locked_user => $user,
                 attempts    => $attempts,
                 unlock_at   => $unlock_at,
+                address     => $address,
             };
             my $message;
             $template->process('email/lockout.txt.tmpl', $vars, \$message)
index e30a4e945030581aae7dc340ec281b4e0034277e..51153ea45371983dfd96d7692eefcefdd83e670f 100644 (file)
@@ -8,10 +8,10 @@
 
 From: [% Param('mailfrom') %]
 To: [% Param('maintainer') %]
-Subject: [[% terms.Bugzilla %]] Account Lock-Out: [% locked_user.login %] ([% attempts.0.ip_addr %])
+Subject: [[% terms.Bugzilla %]] Account Lock-Out: [% locked_user.login %] ([% address %])
 X-Bugzilla-Type: admin
 
-The IP address [% attempts.0.ip_addr %] failed too many login attempts (
+The address [% address %] failed too many login attempts (
 [%- constants.MAX_LOGIN_ATTEMPTS +%]) for
 the account [% locked_user.login %].