2 /* vim: set ts=4 tw=0 sw=4 noet: */
3 require_once $CFG->root
.'config.php';
7 private $timeout = false;
11 private $header = '<!DOCTYPE html>
14 <meta charset="utf-8">
15 <link rel="stylesheet" href="css/styles.css">
17 var timeout = __TIMEOUT__;
19 <script src="__ROOT__js/timer.js"></script>
20 <script src="__ROOT__js/checkbox.js"></script>
21 <title>__TITLE__</title>
24 private $footer = '<p class="footer">Powered by <a href="https://qtadmin.datanom.net"
25 title="Goto QtAdmin homepage">QtAdmin</a>. © 2015 by Michael Rasmussen</p></body></html>';
26 private $heading = '<p id="time" class="time">Session timeout:
27 <span id="timer"></span></p><h1 class="h1">__TITLE__</h1>';
29 public function __construct() {
32 $this->log("Init Utils", 4);
34 if (isset($CFG->log_level
)) {
35 $this->log_level
= $CFG->log_level
;
40 if (isset($CFG->log_method
)) {
41 $this->log_method
= $CFG->log_method
;
43 $this->log_level
= 'syslog';
46 $this->startSession();
48 if (! isset($_SESSION['settings'])) {
49 $this->initSettings();
51 $this->settings
= $_SESSION['settings'];
53 if ($CFG->auth_method
== 'HTTP_AUTH') {
54 if (isset($this->server
['PHP_AUTH_USER'])) {
55 $this->settings
['user'] = $this->server
['PHP_AUTH_USER'];
56 $this->settings
['loginStatus'] = 'OK';
57 if ($CFG->admin_user
== $this->settings
['user'])
58 $this->settings
['admin'] = true;
63 private function log($message, $level = 1) {
66 if ($level > $this->log_level
)
70 $msg = "[$time] $message";
74 case 1: $priority = LOG_ERR
; break;
75 case 2: $priority = LOG_WARNING
; break;
76 case 3: $priority = LOG_INFO
; break;
77 case 4: $priority = LOG_DEBUG
; break;
80 switch ($this->log_method
) {
84 syslog($priority,$msg);
88 private function initSettings() {
89 if ('' == session_id()) {
90 $this->startSession();
93 if (false !== $this->timeout
) {
94 $timeout = $this->timeout
;
99 $this->settings
= array(
100 'server' => $_SERVER,
103 'loginStatus' => 'Not logged in',
104 'timeout' => $timeout
107 $_SESSION['settings'] = $this->settings
;
110 private function startSession() {
113 if (isset($CFG->session_timeout
)) {
114 $this->timeout
= $CFG->session_timeout
* 60;
116 $this->timeout
= 20 * 60;
119 if (ini_get('session.gc_maxlifetime') != $this->timeout
)
120 ini_set('session.gc_maxlifetime', $this->timeout
);
121 if (ini_get('session.cookie_lifetime') != $this->timeout
)
122 ini_set('session.cookie_lifetime', $this->timeout
);
127 private function checkSession() {
130 if ('' == session_id()) {
131 $this->startSession();
134 $time = $_SERVER['REQUEST_TIME'];
135 if (isset($_SESSION['LAST_ACTIVITY']) &&
136 ($time - $_SESSION['LAST_ACTIVITY']) >= $this->settings
['timeout']) {
137 echo 'R_TIME: '.date('c', $time).' L_ACT: '.date('c', $_SESSION['LAST_ACTIVITY']);
140 $_SESSION['LAST_ACTIVITY'] = $time;
144 public function logout() {
145 if (ini_get('session.use_cookies')) {
146 $params = session_get_cookie_params();
147 setcookie(session_name(), '', time() - 42000,
148 $params['path'], $params['domain'],
149 $params['secure'], $params['httponly']);
152 if ('' != session_id()) {
157 $this->settings
= array();
160 public function isAdmin() {
163 if (isset($this->settings
['admin'])) {
164 $admin = $this->settings
['admin'];
170 public function login($user, $pw) {
174 if ('' == session_id()) {
175 $this->startSession();
178 $this->settings
['user'] = null;
179 $this->settings
['admin'] = false;
181 $p = explode('@', $user);
182 if (count($p) != 2) {
183 $this->settings
['loginStatus'] = 'Bad username';
186 $dn = "mail=$user,ou=Users,domainName=$domain,$CFG->ldap_base_dn";
187 $filter = "(&(objectclass=mailUser)(accountStatus=active)(mail=$user))";
188 $ds = @ldap_connect
($CFG->ldap_dsn
);
190 @ldap_set_option
($ds, LDAP_OPT_PROTOCOL_VERSION
, 3);
191 $r = @ldap_bind
($ds, $dn, $pw);
193 $sr = @ldap_search
($ds, $CFG->ldap_base_dn
, $filter, array('mail','domainglobaladmin'));
194 $info = @ldap_get_entries
($ds, $sr); // array
195 if ($info['count'] > 0) {
196 $this->settings
['user'] = $user;
198 $this->settings
['loginStatus'] = 'OK';
200 if (isset($info[0]['domainglobaladmin'])) {
201 $admin = $info[0]['domainglobaladmin'][0];
202 $admin = strtoupper($admin);
204 $this->settings
['admin'] = ($admin == 'YES') ?
true : false;
206 $this->settings
['loginStatus'] = 'Login failed';
209 $this->settings
['loginStatus'] = ldap_error($ds);
213 $this->settings
['loginStatus'] = 'Connect to LDAP server failed';
217 $_SESSION['settings'] = $this->settings
;
222 public function getLoginStatus() {
223 $status = 'Not logged in';
225 if (isset($this->settings
['loginStatus'])) {
226 $status = $this->settings
['loginStatus'];
232 public function isLoggedIn() {
236 if ('' == session_id()) {
237 $this->startSession();
240 $this->checkSession();
242 if (isset($this->settings
['user'])) {
243 if ($this->settings
['user'] != null) {
246 if ($CFG->auth_method
== 'HTTP_AUTH') {
247 if (isset($this->server
['PHP_AUTH_USER'])) {
248 $this->settings
['user'] = $this->server
['PHP_AUTH_USER'];
255 if ($loggedIn == false) {
256 echo '$this->settings: '.var_export($this->settings
, true);
257 echo 'R_TIME: '.date('c', $_SERVER['REQUEST_TIME']).' L_ACT: '.date('c', $_SESSION['LAST_ACTIVITY']);
261 $_SESSION['settings'] = $this->settings
;
266 public function getUser() {
269 if ($this->isLoggedIn()) {
270 $user = $this->settings
['user'];
276 public function getHeader() {
277 return $this->header
;
280 public function getFooter() {
281 return $this->footer
;
284 public function getHeading() {
285 return $this->heading
;
288 public function setHeading($heading) {
291 $timeout = $CFG->session_timeout
* 60 * 1000;
292 $this->heading
= str_replace('__TITLE__', $heading, $this->heading
);
293 $this->header
= str_replace('__TITLE__', $heading, $this->header
);
294 $this->header
= str_replace('__ROOT__', $CFG->wwwroot
, $this->header
);
295 $this->header
= str_replace('__TIMEOUT__', $timeout, $this->header
);
298 public function convertContent($code) {
312 $string = $table[$code];