* @link http://www.steffenvogel.de
*/
/*
* This file is part of sddns
*
* sddns is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* sddns is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with sddns. If not, see .
*/
function doAuthentification() {
header('WWW-Authenticate: Basic realm="Administration Area"');
header('HTTP/1.0 401 Unauthorized');
}
function isAuthentificated() {
global $config;
$htpasswd = file($config['htpasswd'], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($htpasswd as $line) {
list($user, $sha1) = explode(':', $line);
if ($user == @$_SERVER['PHP_AUTH_USER'] &&
$sha1 == '{SHA}' . base64_encode(sha1(@$_SERVER['PHP_AUTH_PW'], true))) {
return true;
}
}
return false;
}
function randomString($length, $characters='abcdefghijklmnopqrstuvwxyz0123456789') {
$random_string = '';
$characters_length = strlen($characters);
for($i = 0; $i<$length; $i++) {
$random_string .= $characters[mt_rand(0, $characters_length - 1)];
}
return $random_string;
}
function backtrace2xml($traces, DomDocument $doc) {
$xmlTraces = $doc->createElement('backtrace');
foreach ($traces as $step => $trace) {
$xmlTrace = $doc->createElement('trace');
$xmlTraces->appendChild($xmlTrace);
$xmlTrace->setAttribute('step', $step);
foreach ($trace as $key => $value) {
switch ($key) {
case 'function':
case 'line':
case 'file':
case 'class':
case 'type':
$xmlTrace->appendChild($doc->createElement($key, $value));
break;
case 'args':
$xmlArgs = $doc->createElement($key);
$xmlTrace->appendChild($xmlArgs);
foreach ($value as $arg) {
$xmlArgs->appendChild($doc->createElement('arg', $value));
}
break;
}
}
}
return $xmlTraces;
}
function backtrace2html($traces) {
$trace = '';
foreach(debug_backtrace() as $i => $l){
$trace .= '[' . $i . '] in function ' . $l['class'] . $l['type'] . $l['function'] . '';
if($l['file'])
$trace .= ' in ' . $l['file'] . '';
if($l['line'])
$trace .= ' on line ' . $l['line'] . '';
}
return $trace;
}