Aleksander Machniak
2013-09-02 060467df9d95be3768dab51ff5dd4e6214ec86a0
Log also failed logins to userlogins log
4 files modified
24 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
config/defaults.inc.php 2 ●●● patch | view | raw | blame | history
index.php 3 ●●●●● patch | view | raw | blame | history
program/include/rcmail.php 18 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Log also failed logins to userlogins log
- Add temp_dir_ttl configuration option (#1489304)
- Allow setting INBOX as Sent folder (#1489219)
- Fix replacement variables in user-specific base_dn in some LDAP requests (#1489279)
config/defaults.inc.php
@@ -63,7 +63,7 @@
// Log sent messages to <log_dir>/sendmail or to syslog
$config['smtp_log'] = true;
// Log successful logins to <log_dir>/userlogins or to syslog
// Log successful/failed logins to <log_dir>/userlogins or to syslog
$config['log_logins'] = false;
// Log session authentication errors to <log_dir>/session or to syslog
index.php
@@ -152,6 +152,9 @@
    );
    $error_message = $error_labels[$error_code] ? $error_labels[$error_code] : 'loginfailed';
    // log failed login
    $RCMAIL->log_login($auth['user'], true, $error_code);
    $OUTPUT->show_message($error_message, 'warning');
    $RCMAIL->plugins->exec_hook('login_failed', array(
program/include/rcmail.php
@@ -954,12 +954,19 @@
    /**
     * Write login data (name, ID, IP address) to the 'userlogins' log file.
     */
    public function log_login()
    public function log_login($user, $failed_login = false, $error_code = 0)
    {
        if (!$this->config->get('log_logins')) {
            return;
        }
        // failed login
        if ($failed_login) {
            $message = sprintf('Failed login for %s from %s in session %s (error: %d)',
                $user, rcube_utils::remote_ip(), session_id(), $error_code);
        }
        // successful login
        else {
        $user_name = $this->get_user_name();
        $user_id   = $this->get_user_id();
@@ -967,9 +974,12 @@
            return;
        }
        self::write_log('userlogins',
            sprintf('Successful login for %s (ID: %d) from %s in session %s',
                $user_name, $user_id, rcube_utils::remote_ip(), session_id()));
            $message = sprintf('Successful login for %s (ID: %d) from %s in session %s',
                    $user_name, $user_id, rcube_utils::remote_ip(), session_id());
        }
        // log login
        self::write_log('userlogins', $message);
    }