plugins/kolab_auth

Aleksander Machniak machniak at kolabsys.com
Mon Oct 7 10:59:48 CEST 2013


 plugins/kolab_auth/kolab_auth.php |   87 +++++++++++++++-----------------------
 1 file changed, 35 insertions(+), 52 deletions(-)

New commits:
commit 0cbce32636b0b6d9a7b0f510c6fee8d77f14f002
Author: Aleksander Machniak <machniak at kolabsys.com>
Date:   Mon Oct 7 10:59:25 2013 +0200

    Fixed kolab_auth_auditlog feature

diff --git a/plugins/kolab_auth/kolab_auth.php b/plugins/kolab_auth/kolab_auth.php
index cf5818f..26b2425 100644
--- a/plugins/kolab_auth/kolab_auth.php
+++ b/plugins/kolab_auth/kolab_auth.php
@@ -37,6 +37,8 @@ class kolab_auth extends rcube_plugin
     {
         $rcmail = rcube::get_instance();
 
+        $this->load_config();
+
         $this->add_hook('authenticate', array($this, 'authenticate'));
         $this->add_hook('startup', array($this, 'startup'));
         $this->add_hook('user_create', array($this, 'user_create'));
@@ -54,10 +56,11 @@ class kolab_auth extends rcube_plugin
         // Hook to modify some configuration, e.g. ldap
         $this->add_hook('config_get', array($this, 'config_get'));
 
-        $this->add_hook('write_log', array($this, 'write_log'));
+        // Enable debug logs per-user, this enables logging only after
+        // user has logged in
+        if (!empty($_SESSION['username']) && $rcmail->config->get('kolab_auth_auditlog')) {
+            $this->add_hook('write_log', array($this, 'write_log'));
 
-        // TODO: This section does not actually seem to work
-        if ($rcmail->config->get('kolab_auth_auditlog', false)) {
             $rcmail->config->set('debug_level', 1);
             $rcmail->config->set('devel_mode', true);
             $rcmail->config->set('smtp_log', true);
@@ -86,8 +89,6 @@ class kolab_auth extends rcube_plugin
         // Replaces ldap_vars (%dc, etc) in public kolab ldap addressbooks
         // config based on the users base_dn. (for multi domain support)
         if ($args['name'] == 'ldap_public' && !empty($args['result'])) {
-            $this->load_config();
-
             $rcmail      = rcube::get_instance();
             $kolab_books = (array) $rcmail->config->get('kolab_auth_ldap_addressbooks');
 
@@ -118,8 +119,6 @@ class kolab_auth extends rcube_plugin
         }
 
         $rcmail = rcube::get_instance();
-        $this->load_config();
-
 
         // Example 'kolab_auth_role_plugins' =
         //
@@ -207,53 +206,49 @@ class kolab_auth extends rcube_plugin
         }
     }
 
+    /**
+     * Logging method replacement to print debug/errors into
+     * a separate (sub)folder for each user
+     */
     public function write_log($args)
     {
         $rcmail = rcube::get_instance();
 
-        if (!$rcmail->config->get('kolab_auth_auditlog', false)) {
-            return $args;
-        }
-
-        $args['abort'] = true;
-
         if ($rcmail->config->get('log_driver') == 'syslog') {
-            $prio = $args['name'] == 'errors' ? LOG_ERR : LOG_INFO;
-            syslog($prio, $args['line']);
             return $args;
         }
-        else {
-            $line = sprintf("[%s]: %s\n", $args['date'], $args['line']);
 
-            // log_driver == 'file' is assumed here
-            $log_dir  = $rcmail->config->get('log_dir', INSTALL_PATH . 'logs');
-            $log_path = $log_dir.'/'.strtolower($_SESSION['kolab_auth_admin']).'/'.strtolower($_SESSION['username']);
+        $line = sprintf("[%s]: %s\n", $args['date'], $args['line']);
 
-            // Append original username + target username
-            if (!is_dir($log_path)) {
-                // Attempt to create the directory
-                if (@mkdir($log_path, 0750, true)) {
-                    $log_dir = $log_path;
-                }
-            }
-            else {
+        // log_driver == 'file' is assumed here
+        $log_dir  = $rcmail->config->get('log_dir', RCUBE_INSTALL_PATH . 'logs');
+        $log_path = $log_dir.'/'.strtolower($_SESSION['kolab_auth_admin']).'/'.strtolower($_SESSION['username']);
+
+        // Append original username + target username
+        if (!is_dir($log_path)) {
+            // Attempt to create the directory
+            if (@mkdir($log_path, 0750, true)) {
                 $log_dir = $log_path;
             }
+        }
+        else {
+            $log_dir = $log_path;
+        }
 
-            // try to open specific log file for writing
-            $logfile = $log_dir.'/'.$args['name'];
+        // try to open specific log file for writing
+        $logfile = $log_dir.'/'.$args['name'];
 
-            if ($fp = fopen($logfile, 'a')) {
-                fwrite($fp, $line);
-                fflush($fp);
-                fclose($fp);
-                return $args;
-            }
-            else {
-                trigger_error("Error writing to log file $logfile; Please check permissions", E_USER_WARNING);
-            }
+        if ($fp = fopen($logfile, 'a')) {
+            fwrite($fp, $line);
+            fflush($fp);
+            fclose($fp);
+        }
+        else {
+            trigger_error("Error writing to log file $logfile; Please check permissions", E_USER_WARNING);
         }
 
+        $args['abort'] = true;
+
         return $args;
     }
 
@@ -296,7 +291,6 @@ class kolab_auth extends rcube_plugin
      */
     public function login_form($args)
     {
-        $this->load_config();
         $this->add_texts('localization/');
 
         $rcmail      = rcube::get_instance();
@@ -623,18 +617,7 @@ class kolab_auth extends rcube_plugin
             return self::$ldap;
         }
 
-        $rcmail = rcube::get_instance();
-
-        // $this->load_config();
-        // we're in static method, load config manually
-        $fpath = $rcmail->plugins->dir . '/kolab_auth/config.inc.php';
-        if (is_file($fpath) && !$rcmail->config->load_from_file($fpath)) {
-            rcube::raise_error(array(
-                'code' => 527, 'type' => 'php',
-                'file' => __FILE__, 'line' => __LINE__,
-                'message' => "Failed to load config from $fpath"), true, false);
-        }
-
+        $rcmail      = rcube::get_instance();
         $addressbook = $rcmail->config->get('kolab_auth_addressbook');
 
         if (!is_array($addressbook)) {




More information about the commits mailing list