]> git.datanom.net - qtadmin.git/blame - lib/utils.inc.php
Drop singleton
[qtadmin.git] / lib / utils.inc.php
CommitLineData
6df4b805
MR
1<?php
2/* vim: set ts=4 tw=0 sw=4 noet: */
3require_once $CFG->root .'config.php';
4
3056d117
MR
5class Utils {
6
7 private $settings;
b95d1cdb 8 private $header = '<!DOCTYPE html>
6df4b805
MR
9<html>
10<head>
b95d1cdb
MR
11 <meta charset="utf-8">
12 <link rel="stylesheet" href="css/styles.css">
13 <script>
14 var timeout = __TIMEOUT__;
15 </script>
16 <script src="__ROOT__js/timer.js"></script>
5c7b972e 17 <script src="__ROOT__js/checkbox.js"></script>
b95d1cdb 18 <title>__TITLE__</title>
6df4b805
MR
19</head>
20<body>';
bb06f172 21 private $footer = '<p class="footer">Powered by <a href="https://qtadmin.datanom.net"
b706c65f 22 title="Goto QtAdmin homepage">QtAdmin</a>. &copy; 2015 by Michael Rasmussen</p></body></html>';
b95d1cdb
MR
23 private $heading = '<p id="time" class="time">Session timeout:
24 <span id="timer"></span></p><h1 class="h1">__TITLE__</h1>';
25
3056d117 26 public function __construct() {
b95d1cdb
MR
27 global $CFG;
28
a675b383
MR
29 $this->startSession();
30
3056d117
MR
31 if (! isset($_SESSION['settings'])) {
32 $this->initSettings();
33 }
34 $this->settings = $_SESSION['settings'];
35
36 if ($CFG->auth_method == 'HTTP_AUTH') {
37 if (isset($this->server['PHP_AUTH_USER'])) {
38 $this->settings['user'] = $this->server['PHP_AUTH_USER'];
39 $this->settings['loginStatus'] = 'OK';
40 if ($CFG->admin_user == $this->settings['user'])
41 $this->settings['admin'] = true;
b95d1cdb
MR
42 }
43 }
b95d1cdb
MR
44 }
45
3056d117
MR
46 private function initSettings() {
47 if ('' == session_id()) {
48 $this->startSession();
49 }
b95d1cdb 50
3056d117
MR
51 $this->settings = array(
52 'server' => $_SERVER,
53 'user' => null,
54 'admin' => false,
55 'loginStatus' => 'Not logged in',
56 'timeout' => 0
57 );
6072c905 58
3056d117 59 $_SESSION['settings'] = $this->settings;
6072c905
MR
60 }
61
a675b383 62 private function startSession() {
b95d1cdb
MR
63 global $CFG;
64
b95d1cdb 65 if (isset($CFG->session_timeout)) {
7d9c7fe2 66 $this->timeout = $CFG->session_timeout * 60;
b95d1cdb 67 } else {
7d9c7fe2 68 $this->timeout = 20 * 60;
b95d1cdb
MR
69 }
70
7d9c7fe2
MR
71 if (ini_get('session.gc_maxlifetime') != $this->timeout)
72 ini_set('session.gc_maxlifetime', $this->timeout);
73 if (ini_get('session.cookie_lifetime') != $this->timeout)
74 ini_set('session.cookie_lifetime', $this->timeout);
a675b383
MR
75
76 session_start();
7d9c7fe2
MR
77 }
78
3056d117 79 private function checkSession() {
7d9c7fe2
MR
80 global $CFG;
81
b95d1cdb 82 $time = $_SERVER['REQUEST_TIME'];
7d9c7fe2 83 if (isset($_SESSION['LAST_ACTIVITY']) &&
3056d117 84 ($time - $_SESSION['LAST_ACTIVITY']) >= $this->settings['timeout']) {
c0519296 85 echo 'R_TIME: '.date('c', $time).' L_ACT: '.date('c', $_SESSION['LAST_ACTIVITY']);
3056d117 86 $this->logout();
a675b383
MR
87 } else {
88 $_SESSION['LAST_ACTIVITY'] = $time;
89 }
b95d1cdb
MR
90 }
91
92 public function logout() {
93 $_SESSION = array();
94 if (ini_get('session.use_cookies')) {
95 $params = session_get_cookie_params();
96 setcookie(session_name(), '', time() - 42000,
97 $params['path'], $params['domain'],
98 $params['secure'], $params['httponly']);
99 }
100 session_unset();
101 session_destroy();
3056d117 102 $this->settings = array();
b95d1cdb
MR
103 }
104
105 public function isAdmin() {
3056d117
MR
106 $admin = false;
107
108 if (isset($this->settings['admin'])) {
109 $admin = $this->settings['admin'];
110 }
111
112 return $admin;
b95d1cdb
MR
113 }
114
115 public function login($user, $pw) {
116 global $CFG;
117 $result = false;
118
3056d117
MR
119 if ('' == session_id()) {
120 $this->startSession();
121 }
122
123 $this->settings['user'] = null;
124 $this->settings['admin'] = false;
b95d1cdb
MR
125
126 $p = explode('@', $user);
127 if (count($p) != 2) {
3056d117
MR
128 $this->settings['loginStatus'] = 'Bad username';
129 } else {
130 $domain = $p[1];
131 $dn = "mail=$user,ou=Users,domainName=$domain,$CFG->ldap_base_dn";
132 $filter = "(&(objectclass=mailUser)(accountStatus=active)(mail=$user))";
133 $ds = @ldap_connect($CFG->ldap_dsn);
134 if ($ds) {
135 @ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
136 $r = @ldap_bind($ds, $dn, $pw);
137 if ($r) {
138 $sr = @ldap_search($ds, $CFG->ldap_base_dn, $filter, array('mail','domainglobaladmin'));
139 $info = @ldap_get_entries($ds, $sr); // array
140 if ($info['count'] > 0) {
141 $this->settings['user'] = $user;
142 $result = true;
143 $this->settings['loginStatus'] = 'OK';
144 $admin = 'NO';
145 if (isset($info[0]['domainglobaladmin'])) {
146 $admin = $info[0]['domainglobaladmin'][0];
147 $admin = strtoupper($admin);
148 }
149 $this->settings['admin'] = ($admin == 'YES') ? true : false;
150 } else {
151 $this->settings['loginStatus'] = 'Login failed';
b95d1cdb 152 }
6df4b805 153 } else {
3056d117 154 $this->settings['loginStatus'] = ldap_error($ds);
6df4b805 155 }
3056d117 156 @ldap_close($ds);
6df4b805 157 } else {
3056d117 158 $this->settings['loginStatus'] = 'Connect to LDAP server failed';
6df4b805 159 }
6df4b805
MR
160 }
161
3056d117 162 $_SESSION['settings'] = $this->settings;
6e081c5f 163
b95d1cdb
MR
164 return $result;
165 }
166
167 public function getLoginStatus() {
3056d117
MR
168 $status = 'Not logged in';
169
170 if (isset($this->settings['loginStatus'])) {
171 $status = $this->settings['loginStatus'];
172 }
173
174 return $status;
b95d1cdb
MR
175 }
176
177 public function isLoggedIn() {
178 global $CFG;
179 $loggedIn = false;
180
3056d117
MR
181 if ('' == session_id()) {
182 $this->startSession();
183 }
184
185 if (isset($this->settings['user'])) {
186 if ($this->settings['user'] != null) {
187 $loggedIn = true;
188 } else {
189 if ($CFG->auth_method == 'HTTP_AUTH') {
190 if (isset($this->server['PHP_AUTH_USER'])) {
191 $this->settings['user'] = $this->server['PHP_AUTH_USER'];
192 $loggedIn = true;
193 }
b95d1cdb
MR
194 }
195 }
196 }
197
85ec6a84 198 if ($loggedIn == false) {
3679a8af 199 echo '$this->user: '.$this->user.' $_SESSION[\'user\']: '.$_SESSION['user'];
18d80742 200 echo 'R_TIME: '.date('c', $_SERVER['REQUEST_TIME']).' L_ACT: '.date('c', $_SESSION['LAST_ACTIVITY']);
d3c4a10f 201 //exit;
18d80742 202 }
6e081c5f 203
3056d117 204 $_SESSION['settings'] = $this->settings;
6e081c5f 205
b95d1cdb
MR
206 return $loggedIn;
207 }
208
209 public function getUser() {
3056d117
MR
210 $user = null;
211
212 if ($this->isLoggedIn()) {
213 $user = $this->settings['user'];
214 }
215
216 return $user;
b95d1cdb
MR
217 }
218
219 public function getHeader() {
220 return $this->header;
221 }
222
223 public function getFooter() {
224 return $this->footer;
225 }
226
227 public function getHeading() {
228 return $this->heading;
229 }
230
231 public function setHeading($heading) {
232 global $CFG;
233
234 $timeout = $CFG->session_timeout * 60 * 1000;
235 $this->heading = str_replace('__TITLE__', $heading, $this->heading);
236 $this->header = str_replace('__TITLE__', $heading, $this->header);
237 $this->header = str_replace('__ROOT__', $CFG->wwwroot, $this->header);
238 $this->header = str_replace('__TIMEOUT__', $timeout, $this->header);
239 }
240
241 public function convertContent($code) {
242 $table = array(
243 'V' => 'Virus',
244 'B' => 'Banned',
245 'U' => 'Unchecked',
246 'S' => 'Spam',
247 'Y' => 'Spammy',
248 'M' => 'Bad Mime',
249 'H' => 'Bad Header',
250 'O' => 'Over sized',
251 'T' => 'MTA err',
252 'C' => 'Clean'
253 );
254
255 $string = $table[$code];
256 if (empty($string))
257 $string = 'Unknown';
258
259 return $string;
260 }
6df4b805 261
6df4b805 262}
This page took 0.076957 seconds and 5 git commands to generate.