]> git.datanom.net - qtadmin.git/commitdiff
Drop singleton
authorMichael Rasmussen <mir@datanom.net>
Fri, 5 Jun 2015 18:45:08 +0000 (20:45 +0200)
committerMichael Rasmussen <mir@datanom.net>
Fri, 5 Jun 2015 18:45:08 +0000 (20:45 +0200)
auth.php
index.php
lib/utils.inc.php
mail_report.php
message_view.php
quarantine.php
show_headers.php

index be1a20dc0f5289ad857c100c2a13cd5699c14013..6d5210d5979326e028ed0fa71c10d54e7461ca0a 100644 (file)
--- a/auth.php
+++ b/auth.php
@@ -59,7 +59,7 @@ LF;
 </html>
 LE;
 
-    $util = Utils::getInstance();
+    $util = new Utils;
     if (isset($_GET['op']))
         $action = $_GET['op'];
     else
index 338432cdc06150372a7badebd337dd43d25633ae..f0a89360d901a59cfaef029a74bf9ece3ed8abf2 100644 (file)
--- a/index.php
+++ b/index.php
@@ -4,7 +4,7 @@
     require_once $CFG->root . 'lib/db_factory.php';
     require_once $CFG->root . 'lib/utils.inc.php';
 
-    $util = Utils::getInstance();
+    $util = new Utils;
     unset($_SESSION['mailInfo']);
 
     if ($util->isLoggedIn()) {
index 4645e2431c25fc23885d5e9cb59407ad18d7083f..be2ccf9bdebc1acf31c3d45eee10155dfdeba848 100644 (file)
@@ -2,14 +2,9 @@
 /* vim: set ts=4 tw=0 sw=4 noet: */
 require_once $CFG->root .'config.php';
 
-class Utils implements Serializable {
-
-    private static $_instance = null;
-    private $server;
-    private $user;
-    private $is_admin;
-    private $loginStatus;
-    private $timeout;
+class Utils {
+
+    private $settings;
     private $header = '<!DOCTYPE html>
 <html>
 <head>
@@ -28,55 +23,45 @@ class Utils implements Serializable {
     private $heading = '<p id="time" class="time">Session timeout:
             <span id="timer"></span></p><h1 class="h1">__TITLE__</h1>';
 
-    private function __construct() {
+    public function __construct() {
         global $CFG;
 
-        $this->server = $_SERVER;
-
-        $this->user = null;
-        $this->is_admin = false;
-        $this->loginStatus = 'Not logged in';
-
         $this->startSession();
 
-        if (isset($_SESSION['user'])) {
-            $this->user = $_SESSION['user'];
-            $this->loginStatus = 'OK';
-            $this->is_admin = $_SESSION['is_admin'];
-        } else {
-            if ($CFG->auth_method == 'HTTP_AUTH') {
-                if (isset($this->server['PHP_AUTH_USER'])) {
-                    $this->user = $this->server['PHP_AUTH_USER'];
-                    $this->loginStatus = 'OK';
-                    if ($CFG->admin_user == $this->user)
-                        $this->is_admin = true;
-                }
+        if (! isset($_SESSION['settings'])) {
+            $this->initSettings();
+        }
+        $this->settings = $_SESSION['settings'];
+
+        if ($CFG->auth_method == 'HTTP_AUTH') {
+            if (isset($this->server['PHP_AUTH_USER'])) {
+                $this->settings['user'] = $this->server['PHP_AUTH_USER'];
+                $this->settings['loginStatus'] = 'OK';
+                if ($CFG->admin_user == $this->settings['user'])
+                    $this->settings['admin'] = true;
             }
         }
-        $_SESSION['user'] = $this->user;
-        $_SESSION['is_admin'] = $this->is_admin;
-        $_SESSION['Utils'] = serialize($this);
     }
 
-    private function __clone() {}
+    private function initSettings() {
+        if ('' == session_id()) {
+            $this->startSession();
+        }
 
-    public function serialize() {
-        file_put_contents('/tmp/dump', 'Serialize called: '.var_export($this, true), FILE_APPEND);
-        return serialize(get_object_vars($this));
-    }
+        $this->settings = array(
+            'server' => $_SERVER,
+            'user' => null,
+            'admin' => false,
+            'loginStatus' => 'Not logged in',
+            'timeout' => 0
+        );
 
-    public function unserialize($data) {
-        $values = unserialize($data);
-        foreach ($values as $key=>$value) {
-            $this->$key = $value;
-        }
+        $_SESSION['settings'] = $this->settings;
     }
 
     private function startSession() {
         global $CFG;
 
-        session_unset();
-        session_destroy();
         if (isset($CFG->session_timeout)) {
             $this->timeout = $CFG->session_timeout * 60;
         } else {
@@ -89,38 +74,19 @@ class Utils implements Serializable {
             ini_set('session.cookie_lifetime', $this->timeout);
 
         session_start();
-
-        //echo ini_get('session.gc_maxlifetime').':'.ini_get('session.cookie_lifetime');
     }
 
-    public static function getInstance() {
+    private function checkSession() {
         global $CFG;
 
-        session_start();
-        if (!is_object(self::$_instance)) {
-            if (isset($_SESSION['Utils'])) {
-                self::$_instance = unserialize($_SESSION['Utils']);
-                file_put_contents('/tmp/dump', 'Unserialize called: '.var_export(self::$_instance, true), FILE_APPEND);
-            } else {
-                self::$_instance = new Utils();
-            }
-        }
-
         $time = $_SERVER['REQUEST_TIME'];
         if (isset($_SESSION['LAST_ACTIVITY']) &&
-                ($time - $_SESSION['LAST_ACTIVITY']) >= self::$_instance->timeout) {
+                ($time - $_SESSION['LAST_ACTIVITY']) >= $this->settings['timeout']) {
             echo 'R_TIME: '.date('c', $time).' L_ACT: '.date('c', $_SESSION['LAST_ACTIVITY']);
-            //exit;
-            session_unset();
-            session_destroy();
-            self::$_instance->user = null;
-            self::$_instance->is_admin = false;
-            $_SESSION['Utils'] = serialize(self::$_instance);
+            $this->logout();
         } else {
             $_SESSION['LAST_ACTIVITY'] = $time;
         }
-
-        return self::$_instance;
     }
 
     public function logout() {
@@ -133,85 +99,98 @@ class Utils implements Serializable {
         }
         session_unset();
         session_destroy();
-        $this->user = null;
-        $this->is_admin = false;
+        $this->settings = array();
     }
 
     public function isAdmin() {
-        //file_put_contents('/tmp/login.txt', var_export($this, true));
-        return $this->is_admin;
+        $admin = false;
+
+        if (isset($this->settings['admin'])) {
+            $admin = $this->settings['admin'];
+        }
+
+        return $admin;
     }
 
     public function login($user, $pw) {
         global $CFG;
         $result = false;
 
-        unset($_SESSION['user']);
-        unset($_SESSION['is_admin']);
-        $this->user = null;
-        $this->is_admin = false;
+        if ('' == session_id()) {
+            $this->startSession();
+        }
+
+        $this->settings['user'] = null;
+        $this->settings['admin'] = false;
 
         $p = explode('@', $user);
         if (count($p) != 2) {
-            $this->loginStatus = 'Bad username';
-            return false;
-        }
-        $domain = $p[1];
-        $dn = "mail=$user,ou=Users,domainName=$domain,$CFG->ldap_base_dn";
-        $filter = "(&(objectclass=mailUser)(accountStatus=active)(mail=$user))";
-        $ds = @ldap_connect($CFG->ldap_dsn);
-        if ($ds) {
-            @ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
-            $r = @ldap_bind($ds, $dn, $pw);
-            if ($r) {
-                $sr = @ldap_search($ds, $CFG->ldap_base_dn, $filter, array('mail','domainglobaladmin'));
-                $info = @ldap_get_entries($ds, $sr); // array
-                if ($info['count'] > 0) {
-                    $_SESSION['user'] = $user;
-                    $this->user = $user;
-                    $result = true;
-                    $this->loginStatus = 'OK';
-                    $admin = 'NO';
-                    if (isset($info[0]['domainglobaladmin'])) {
-                        $admin = $info[0]['domainglobaladmin'][0];
-                        $admin = strtoupper($admin);
+           $this->settings['loginStatus'] = 'Bad username';
+        } else {
+            $domain = $p[1];
+            $dn = "mail=$user,ou=Users,domainName=$domain,$CFG->ldap_base_dn";
+            $filter = "(&(objectclass=mailUser)(accountStatus=active)(mail=$user))";
+            $ds = @ldap_connect($CFG->ldap_dsn);
+            if ($ds) {
+                @ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
+                $r = @ldap_bind($ds, $dn, $pw);
+                if ($r) {
+                    $sr = @ldap_search($ds, $CFG->ldap_base_dn, $filter, array('mail','domainglobaladmin'));
+                    $info = @ldap_get_entries($ds, $sr); // array
+                    if ($info['count'] > 0) {
+                        $this->settings['user'] = $user;
+                        $result = true;
+                        $this->settings['loginStatus'] = 'OK';
+                        $admin = 'NO';
+                        if (isset($info[0]['domainglobaladmin'])) {
+                            $admin = $info[0]['domainglobaladmin'][0];
+                            $admin = strtoupper($admin);
+                        }
+                        $this->settings['admin'] = ($admin == 'YES') ? true : false;
+                    } else {
+                        $this->settings['loginStatus'] = 'Login failed';
                     }
-                    $this->is_admin = ($admin == 'YES') ? true : false;
-                    $_SESSION['is_admin'] = $this->is_admin;
                 } else {
-                    $this->loginStatus = 'Login failed';
+                    $this->settings['loginStatus'] = ldap_error($ds);
                 }
+                @ldap_close($ds);
             } else {
-                $this->loginStatus = ldap_error($ds);
+                $this->settings['loginStatus'] = 'Connect to LDAP server failed';
             }
-            @ldap_close($ds);
-        } else {
-            $this->loginStatus = 'Connect to LDAP server failed';
         }
 
-        $_SESSION['Utils'] = serialize($this);
+        $_SESSION['settings'] = $this->settings;
 
         return $result;
     }
 
     public function getLoginStatus() {
-        return $this->loginStatus;
+        $status = 'Not logged in';
+
+        if (isset($this->settings['loginStatus'])) {
+            $status = $this->settings['loginStatus'];
+        }
+
+        return $status;
     }
 
     public function isLoggedIn() {
         global $CFG;
         $loggedIn = false;
 
-        if ($this->user) {
-            $loggedIn = true;
-        } else if (isset($_SESSION['user'])) {
-            $this->user = $_SESSION['user'];
-            $loggedIn = true;
-        } else {
-            if ($CFG->auth_method == 'HTTP_AUTH') {
-                if (isset($this->server['PHP_AUTH_USER'])) {
-                    $this->user = $this->server['PHP_AUTH_USER'];
-                    $loggedIn = true;
+        if ('' == session_id()) {
+            $this->startSession();
+        }
+
+        if (isset($this->settings['user'])) {
+            if ($this->settings['user'] != null) {
+                $loggedIn = true;
+            } else {
+                if ($CFG->auth_method == 'HTTP_AUTH') {
+                    if (isset($this->server['PHP_AUTH_USER'])) {
+                        $this->settings['user'] = $this->server['PHP_AUTH_USER'];
+                        $loggedIn = true;
+                    }
                 }
             }
         }
@@ -222,14 +201,19 @@ class Utils implements Serializable {
             //exit;
         }
 
-        $_SESSION['Utils'] = serialize($this);
+        $_SESSION['settings'] = $this->settings;
 
         return $loggedIn;
     }
 
     public function getUser() {
-        $this->isLoggedIn();
-        return $this->user;
+        $user = null;
+
+        if ($this->isLoggedIn()) {
+            $user = $this->settings['user'];
+        }
+
+        return $user;
     }
 
     public function getHeader() {
@@ -252,8 +236,6 @@ class Utils implements Serializable {
         $this->header = str_replace('__TITLE__', $heading, $this->header);
         $this->header = str_replace('__ROOT__', $CFG->wwwroot, $this->header);
         $this->header = str_replace('__TIMEOUT__', $timeout, $this->header);
-
-        $_SESSION['Utils'] = serialize($this);
     }
 
     public function convertContent($code) {
index 55b7ac48688c9276d315530a591dc7c38c0a0bca..bc7c05e7fea5f42dbee985141438e77f077e3e01 100644 (file)
@@ -5,7 +5,7 @@
     require_once $CFG->root . 'lib/db_factory.php';
     require_once $CFG->root . 'lib/utils.inc.php';
 
-    $util = Utils::getInstance();
+    $util = new Utils;
     $loggedIn = $util->isLoggedIn();
     if ($loggedIn && isset($_GET['id'])) {
         $util->setHeading('Spam Report');
index 751b65b009cf55ac153fe9dce5917319eb53569a..5228ebb06416115e4fe390d0f4bc22ea49aca6aa 100644 (file)
@@ -5,7 +5,7 @@
     require_once $CFG->root . 'lib/db_factory.php';
     require_once $CFG->root . 'lib/utils.inc.php';
 
-    $util = Utils::getInstance();
+    $util = new Utils;
     $loggedIn = $util->isLoggedIn();
     if ($loggedIn && isset($_GET['id'])) {
         $id = $_GET['id'];
index af294c5b70bc723ef8c7222558a8d0edf781f780..031a416d69e4796411db8fd511b0509b37524e1b 100644 (file)
@@ -5,7 +5,7 @@
     require_once $CFG->root . 'lib/utils.inc.php';
 
     function error($error) {
-        $util = Utils::getInstance();
+        $util = new Utils;
         $util->setHeading("Error");
         echo $util->getHeader();
         echo $util->getHeading();
@@ -62,7 +62,7 @@
         return $query;
     }
 
-    $util = Utils::getInstance();
+    $util = new Utils;
     $loggedIn = $util->isLoggedIn();
     $request = isset($_GET['op']) ? $_GET['op'] : '';
     if ($loggedIn && isset($_GET['id'])) {
index e1bef17dec4c0f9bb2b3e6bb5c02b59dd807878d..7cee6dc4a74e44fae7f7faff8976db0f918eff4e 100644 (file)
@@ -5,7 +5,7 @@
     require_once $CFG->root . 'lib/db_factory.php';
     require_once $CFG->root . 'lib/utils.inc.php';
 
-    $util = Utils::getInstance();
+    $util = new Utils;
     $loggedIn = $util->isLoggedIn();
     if ($loggedIn && isset($_GET['id'])) {
         $util->setHeading('Full Headers Report');
This page took 0.08926 seconds and 5 git commands to generate.