release 1.3.13

This commit is contained in:
Newcomer1989
2020-11-22 20:57:53 +01:00
parent 3316504336
commit e474b3feb8
74 changed files with 10142 additions and 8876 deletions

View File

@@ -206,7 +206,7 @@ if(isset($_POST['switchexpert']) && isset($_SESSION[$rspathhex.'username']) && $
<li class="divider"></li>
<li>
<a href="javascript:;" data-toggle="collapse" data-target="#admin"><i class="fas fa-users"></i>&nbsp;&nbsp;<?PHP echo $lang['winav7']; ?>&nbsp;<i class="fas fa-caret-down"></i></a>
<?PHP echo '<ul id="admin" class="'.(basename($_SERVER['SCRIPT_NAME']) == "admin_addtime.php" || basename($_SERVER['SCRIPT_NAME']) == "admin_remtime.php" || basename($_SERVER['SCRIPT_NAME']) == "reset.php" ? 'in collapse">' : 'collapse">'); ?>
<?PHP echo '<ul id="admin" class="'.(basename($_SERVER['SCRIPT_NAME']) == "admin_addtime.php" || basename($_SERVER['SCRIPT_NAME']) == "admin_remtime.php" || basename($_SERVER['SCRIPT_NAME']) == "reset.php" || basename($_SERVER['SCRIPT_NAME']) == "export.php" ? 'in collapse">' : 'collapse">'); ?>
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "admin_addtime.php" ? ' class="active">' : '>'); ?>
<a href="admin_addtime.php"><i class="fas fa-plus"></i>&nbsp;&nbsp;<?PHP echo $lang['wihladm1']; ?></a>
</li>
@@ -216,6 +216,9 @@ if(isset($_POST['switchexpert']) && isset($_SESSION[$rspathhex.'username']) && $
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "reset.php" ? ' class="active expertelement">' : ' class="expertelement">'); ?>
<a href="reset.php"><i class="fas fa-sync"></i>&nbsp;&nbsp;<?PHP echo $lang['wihladm3']; ?></a>
</li>
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "export.php" ? ' class="active expertelement">' : ' class="expertelement">'); ?>
<a href="export.php"><i class="fas fa-download"></i>&nbsp;&nbsp;<?PHP echo $lang['wihladmex']; ?></a>
</li>
</ul>
</li>
<li class="divider"></li>

View File

@@ -1,89 +1,31 @@
<?PHP
ini_set('session.cookie_httponly', 1);
ini_set('session.use_strict_mode', 1);
if(in_array('sha512', hash_algos())) {
ini_set('session.hash_function', 'sha512');
}
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") {
$prot = 'https';
ini_set('session.cookie_secure', 1);
if(!headers_sent()) {
header("Strict-Transport-Security: max-age=31536000; includeSubDomains; preload;");
}
} else {
$prot = 'http';
}
session_start();
require_once('../other/_functions.php');
require_once('../other/config.php');
require_once('../other/phpcommand.php');
function enter_logfile($cfg,$loglevel,$logtext,$norotate = false) {
if($loglevel > $cfg['logs_debug_level']) return;
$file = $cfg['logs_path'].'ranksystem.log';
switch ($loglevel) {
case 1: $loglevel = " CRITICAL "; break;
case 2: $loglevel = " ERROR "; break;
case 3: $loglevel = " WARNING "; break;
case 4: $loglevel = " NOTICE "; break;
case 5: $loglevel = " INFO "; break;
case 6: $loglevel = " DEBUG "; break;
default:$loglevel = " NONE ";
$prot = start_session($cfg);
$lang = set_language(get_language($cfg));
error_reporting(E_ALL);
ini_set("log_errors", 1);
set_error_handler("php_error_handling");
ini_set("error_log", $cfg['logs_path'].'ranksystem.log');
try {
require_once('../other/phpcommand.php');
if (isset($_POST['logout'])) {
echo "logout";
rem_session_ts3();
header("Location: $prot://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
exit;
}
$loghandle = fopen($file, 'a');
fwrite($loghandle, DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($cfg['logs_timezone']))->format("Y-m-d H:i:s.u ").$loglevel.$logtext."\n");
fclose($loghandle);
if($norotate == false && filesize($file) > ($cfg['logs_rotation_size'] * 1048576)) {
$loghandle = fopen($file, 'a');
fwrite($loghandle, DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($cfg['logs_timezone']))->format("Y-m-d H:i:s.u ")." NOTICE Logfile filesie of 5 MiB reached.. Rotate logfile.\n");
fclose($loghandle);
$file2 = "$file.old";
if(file_exists($file2)) unlink($file2);
rename($file, $file2);
$loghandle = fopen($file, 'a');
fwrite($loghandle, DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($cfg['logs_timezone']))->format("Y-m-d H:i:s.u ")." NOTICE Rotated logfile...\n");
fclose($loghandle);
if (basename($_SERVER['SCRIPT_NAME']) != "index.php" && basename($_SERVER['SCRIPT_NAME']) != "resetpassword.php" && (!isset($_SESSION[$rspathhex.'username']) || $_SESSION[$rspathhex.'username'] != $cfg['webinterface_user'] || $_SESSION[$rspathhex.'password'] != $cfg['webinterface_pass'] || $_SESSION[$rspathhex.'clientip'] != getclientip())) {
rem_session_ts3();
header("Location: $prot://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
exit;
}
}
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
function error_handling($msg,$type = NULL) {
switch ($type) {
case NULL: echo '<div class="alert alert-success alert-dismissible">'; break;
case 1: echo '<div class="alert alert-info alert-dismissible">'; break;
case 2: echo '<div class="alert alert-warning alert-dismissible">'; break;
case 3: echo '<div class="alert alert-danger alert-dismissible">'; break;
}
echo '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>',$msg,'</div>';
}
if (isset($_POST['logout'])) {
echo "logout";
rem_session_ts3($rspathhex);
header("Location: $prot://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
exit;
}
if (basename($_SERVER['SCRIPT_NAME']) != "index.php" && basename($_SERVER['SCRIPT_NAME']) != "resetpassword.php" && (!isset($_SESSION[$rspathhex.'username']) || $_SESSION[$rspathhex.'username'] != $cfg['webinterface_user'] || $_SESSION[$rspathhex.'password'] != $cfg['webinterface_pass'] || $_SESSION[$rspathhex.'clientip'] != getclientip())) {
header("Location: $prot://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
exit;
}
$csrf_token = bin2hex(openssl_random_pseudo_bytes(32));
$csrf_token = bin2hex(openssl_random_pseudo_bytes(32));
} catch(Throwable $ex) { }
?>

View File

@@ -1,249 +1,253 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
require_once('../other/load_addons_config.php');
$addons_config = load_addons_config($mysqlcon,$lang,$cfg,$dbname);
try {
require_once('_nav.php');
require_once('../other/load_addons_config.php');
$addons_config = load_addons_config($mysqlcon,$lang,$cfg,$dbname);
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($groupslist = $mysqlcon->query("SELECT * FROM `$dbname`.`groups` ORDER BY `sortid`,`sgidname` ASC")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
$assign_groups_active = 0;
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']]) && isset($_POST['assign_groups_active']) && !isset($_POST['assign_groups_groupids']) && !isset($_POST['assign_groups_excepted_groupids'])) {
$err_msg = $lang['stag0010'];
$err_lvl = 3;
} elseif (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$assign_groups_limit = $_POST['assign_groups_limit'];
$assign_groups_groupids = '';
if (isset($_POST['assign_groups_groupids']) && $_POST['assign_groups_groupids'] != NULL) {
foreach ($_POST['assign_groups_groupids'] as $group) {
$assign_groups_groupids .= $group.',';
}
}
$assign_groups_groupids = substr($assign_groups_groupids, 0, -1);
if (isset($_POST['assign_groups_excepted_groupids']) && $_POST['assign_groups_excepted_groupids'] != NULL) {
foreach ($_POST['assign_groups_excepted_groupids'] as $group) {
$assign_groups_excepted_groupids .= $group.',';
}
}
$assign_groups_excepted_groupids = substr($assign_groups_excepted_groupids, 0, -1);
if (isset($_POST['assign_groups_active'])) $assign_groups_active = 1;
if ($mysqlcon->exec("UPDATE `$dbname`.`addons_config` SET `value` = CASE `param` WHEN 'assign_groups_active' THEN '{$assign_groups_active}' WHEN 'assign_groups_limit' THEN '{$assign_groups_limit}' WHEN 'assign_groups_groupids' THEN '{$assign_groups_groupids}' WHEN 'assign_groups_excepted_groupids' THEN '{$assign_groups_excepted_groupids}' END WHERE `param` IN ('assign_groups_active','assign_groups_groupids','assign_groups_limit','assign_groups_excepted_groupids')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = NULL;
}
$addons_config['assign_groups_groupids']['value'] = $assign_groups_groupids;
$addons_config['assign_groups_excepted_groupids']['value'] = $assign_groups_excepted_groupids;
$addons_config['assign_groups_limit']['value'] = $_POST['assign_groups_limit'];
$addons_config['assign_groups_active']['value'] = $assign_groups_active;
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['stag0001']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="form-horizontal">
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($groupslist = $mysqlcon->query("SELECT * FROM `$dbname`.`groups` ORDER BY `sortid`,`sgidname` ASC")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
$assign_groups_active = 0;
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']]) && isset($_POST['assign_groups_active']) && !isset($_POST['assign_groups_groupids']) && !isset($_POST['assign_groups_excepted_groupids'])) {
$err_msg = $lang['stag0010'];
$err_lvl = 3;
} elseif (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$assign_groups_limit = $_POST['assign_groups_limit'];
$assign_groups_groupids = '';
if (isset($_POST['assign_groups_groupids']) && $_POST['assign_groups_groupids'] != NULL) {
foreach ($_POST['assign_groups_groupids'] as $group) {
$assign_groups_groupids .= $group.',';
}
}
$assign_groups_groupids = substr($assign_groups_groupids, 0, -1);
if (isset($_POST['assign_groups_excepted_groupids']) && $_POST['assign_groups_excepted_groupids'] != NULL) {
foreach ($_POST['assign_groups_excepted_groupids'] as $group) {
$assign_groups_excepted_groupids .= $group.',';
}
}
$assign_groups_excepted_groupids = substr($assign_groups_excepted_groupids, 0, -1);
if (isset($_POST['assign_groups_active'])) $assign_groups_active = 1;
if ($mysqlcon->exec("UPDATE `$dbname`.`addons_config` SET `value` = CASE `param` WHEN 'assign_groups_active' THEN '{$assign_groups_active}' WHEN 'assign_groups_limit' THEN '{$assign_groups_limit}' WHEN 'assign_groups_groupids' THEN '{$assign_groups_groupids}' WHEN 'assign_groups_excepted_groupids' THEN '{$assign_groups_excepted_groupids}' END WHERE `param` IN ('assign_groups_active','assign_groups_groupids','assign_groups_limit','assign_groups_excepted_groupids')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = NULL;
}
$addons_config['assign_groups_groupids']['value'] = $assign_groups_groupids;
$addons_config['assign_groups_excepted_groupids']['value'] = $assign_groups_excepted_groupids;
$addons_config['assign_groups_limit']['value'] = $_POST['assign_groups_limit'];
$addons_config['assign_groups_active']['value'] = $assign_groups_active;
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#stag0001desc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['stag0001']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="form-horizontal">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#stag0001desc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
</div>
</div>
</div>
</div>
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#stag0014"><?php echo $lang['stag0013']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($addons_config['assign_groups_active']['value'] == '1') {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="assign_groups_active" value="',$assign_groups_active,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="assign_groups_active" value="',$assign_groups_active,'">';
} ?>
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#stag0014"><?php echo $lang['stag0013']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($addons_config['assign_groups_active']['value'] == '1') {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="assign_groups_active" value="',$assign_groups_active,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="assign_groups_active" value="',$assign_groups_active,'">';
} ?>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#stag0003"><?php echo $lang['stag0002']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker form-control" data-live-search="true" data-actions-box="true" multiple name="assign_groups_groupids[]">
<?PHP
$assign_groups_groupids = explode(',', $addons_config['assign_groups_groupids']['value']);
foreach ($groupslist as $groupID => $groupParam) {
if (in_array($groupID, $assign_groups_groupids)) $selected=" selected"; else $selected="";
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if ($groupParam['type'] == 0 || $groupParam['type'] == 2) $disabled=" disabled"; else $disabled="";
if ($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if ($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="&nbsp;&nbsp;<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$selected,$disabled,'></option>';
<div class="row">&nbsp;</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#stag0003"><?php echo $lang['stag0002']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker form-control" data-live-search="true" data-actions-box="true" multiple name="assign_groups_groupids[]">
<?PHP
$assign_groups_groupids = explode(',', $addons_config['assign_groups_groupids']['value']);
foreach ($groupslist as $groupID => $groupParam) {
if (in_array($groupID, $assign_groups_groupids)) $selected=" selected"; else $selected="";
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if ($groupParam['type'] == 0 || $groupParam['type'] == 2) $disabled=" disabled"; else $disabled="";
if ($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if ($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="&nbsp;&nbsp;<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$selected,$disabled,'></option>';
}
}
}
?>
</select>
?>
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#stag0005"><?php echo $lang['stag0004']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="assign_groups_limit" value="<?php echo $addons_config['assign_groups_limit']['value']; ?>">
<script>
$("input[name='assign_groups_limit']").TouchSpin({
min: 1,
max: 65534,
verticalbuttons: true,
prefix: 'No.'
});
</script>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#stag0005"><?php echo $lang['stag0004']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="assign_groups_limit" value="<?php echo $addons_config['assign_groups_limit']['value']; ?>">
<script>
$("input[name='assign_groups_limit']").TouchSpin({
min: 1,
max: 65534,
verticalbuttons: true,
prefix: 'No.'
});
</script>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#stag0018"><?php echo $lang['wiexgrp']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker form-control" data-live-search="true" data-actions-box="true" multiple name="assign_groups_excepted_groupids[]">
<?PHP
$assign_groups_excepted_groupids = explode(',', $addons_config['assign_groups_excepted_groupids']['value']);
foreach ($groupslist as $groupID => $groupParam) {
if (in_array($groupID, $assign_groups_excepted_groupids)) $selected=" selected"; else $selected="";
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if ($groupParam['type'] == 0 || $groupParam['type'] == 2) $disabled=" disabled"; else $disabled="";
if ($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if ($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="&nbsp;&nbsp;<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$selected,$disabled,'></option>';
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#stag0018"><?php echo $lang['wiexgrp']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker form-control" data-live-search="true" data-actions-box="true" multiple name="assign_groups_excepted_groupids[]">
<?PHP
$assign_groups_excepted_groupids = explode(',', $addons_config['assign_groups_excepted_groupids']['value']);
foreach ($groupslist as $groupID => $groupParam) {
if (in_array($groupID, $assign_groups_excepted_groupids)) $selected=" selected"; else $selected="";
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if ($groupParam['type'] == 0 || $groupParam['type'] == 2) $disabled=" disabled"; else $disabled="";
if ($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if ($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="&nbsp;&nbsp;<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$selected,$disabled,'></option>';
}
}
}
?>
</select>
?>
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</form>
</div>
</div>
<div class="modal fade" id="stag0001desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['stag0001']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['stag0001desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="stag0001desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['stag0001']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['stag0001desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="stag0003" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['stag0002']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['stag0003']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="stag0018" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexgrp']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['stag0018']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="stag0005" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['stag0004']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['stag0005']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="stag0014" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['stag0013']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['stag0014']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<div class="modal fade" id="stag0003" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['stag0002']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['stag0003']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="stag0018" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexgrp']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['stag0018']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="stag0005" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['stag0004']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['stag0005']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="stag0014" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['stag0013']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['stag0014']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,231 +1,236 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(!isset($_POST['number']) || $_POST['number'] == "yes") {
$_SESSION[$rspathhex.'showexcepted'] = "yes";
$filter = " WHERE `except`='0'";
} else {
$_SESSION[$rspathhex.'showexcepted'] = "no";
$filter = "";
}
if(($user_arr = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` $filter ORDER BY `name` ASC")->fetchAll(PDO::FETCH_ASSOC)) === false) {
$err_msg = "DB Error1: ".print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$setontime = 0;
if($_POST['setontime_day']) { $setontime = $setontime + $_POST['setontime_day'] * 86400; }
if($_POST['setontime_hour']) { $setontime = $setontime + $_POST['setontime_hour'] * 3600; }
if($_POST['setontime_min']) { $setontime = $setontime + $_POST['setontime_min'] * 60; }
if($_POST['setontime_sec']) { $setontime = $setontime + $_POST['setontime_sec']; }
if($setontime == 0) {
$err_msg = $lang['errseltime']; $err_lvl = 3;
} elseif($_POST['user'] == NULL) {
$err_msg = $lang['errselusr']; $err_lvl = 3;
} else {
$allinsertdata = '';
$succmsg = '';
$nowtime = time();
foreach($_POST['user'] as $uuid) {
$allinsertdata .= "('".$uuid."', ".$nowtime.", ".$setontime."),";
$succmsg .= sprintf($lang['sccupcount'],$setontime,$uuid)."<br>";
}
$allinsertdata = substr($allinsertdata, 0, -1);
if($mysqlcon->exec("INSERT INTO `$dbname`.`admin_addtime` (`uuid`,`timestamp`,`timecount`) VALUES $allinsertdata;") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} elseif($mysqlcon->exec("UPDATE `$dbname`.`job_check` SET `timestamp`=1 WHERE `job_name`='reload_trigger'; ") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} else {
$err_msg = substr($succmsg,0,-4); $err_lvl = NULL;
}
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihladm1']; ?>
</h1>
</div>
</div>
<form name="post" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="form-horizontal">
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(!isset($_POST['number']) || $_POST['number'] == "yes") {
$_SESSION[$rspathhex.'showexcepted'] = "yes";
$filter = " WHERE `except`='0'";
} else {
$_SESSION[$rspathhex.'showexcepted'] = "no";
$filter = "";
}
if(($user_arr = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` $filter ORDER BY `name` ASC")->fetchAll(PDO::FETCH_ASSOC)) === false) {
$err_msg = "DB Error1: ".print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$setontime = 0;
if($_POST['setontime_day']) { $setontime = $setontime + $_POST['setontime_day'] * 86400; }
if($_POST['setontime_hour']) { $setontime = $setontime + $_POST['setontime_hour'] * 3600; }
if($_POST['setontime_min']) { $setontime = $setontime + $_POST['setontime_min'] * 60; }
if($_POST['setontime_sec']) { $setontime = $setontime + $_POST['setontime_sec']; }
if($setontime == 0) {
$err_msg = $lang['errseltime']; $err_lvl = 3;
} elseif($_POST['user'] == NULL) {
$err_msg = $lang['errselusr']; $err_lvl = 3;
} else {
$allinsertdata = '';
$succmsg = '';
$nowtime = time();
foreach($_POST['user'] as $uuid) {
$allinsertdata .= "('".$uuid."', ".$nowtime.", ".$setontime."),";
$succmsg .= sprintf($lang['sccupcount'],$setontime,$uuid)."<br>";
}
$allinsertdata = substr($allinsertdata, 0, -1);
if($mysqlcon->exec("INSERT INTO `$dbname`.`admin_addtime` (`uuid`,`timestamp`,`timecount`) VALUES $allinsertdata;") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} elseif($mysqlcon->exec("UPDATE `$dbname`.`job_check` SET `timestamp`=1 WHERE `job_name`='reload_trigger'; ") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} else {
$err_msg = substr($succmsg,0,-4); $err_lvl = NULL;
}
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#setontimedesc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihladm1']; ?>
</h1>
</div>
</div>
<form name="post" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="form-horizontal">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#setontimedesc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
</div>
</div>
</div>
</div>
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiadmhidedesc"><?php echo $lang['wiadmhide']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 pull-right">
<select class="selectpicker show-tick form-control" id="number" name="number" onchange="this.form.submit();">
<?PHP
echo '<option data-icon="fas fa-eye-slash" value="yes"'; if(!isset($_SESSION[$rspathhex.'showexcepted']) || $_SESSION[$rspathhex.'showexcepted'] == "yes") echo " selected=selected"; echo '>&nbsp;hide</option>';
echo '<option data-icon="fas fa-eye" value="no"'; if(isset($_SESSION[$rspathhex.'showexcepted']) && $_SESSION[$rspathhex.'showexcepted'] == "no") echo " selected=selected"; echo '>&nbsp;show</option>';
?>
</select>
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiadmhidedesc"><?php echo $lang['wiadmhide']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 pull-right">
<select class="selectpicker show-tick form-control" id="number" name="number" onchange="this.form.submit();">
<?PHP
echo '<option data-icon="fas fa-eye-slash" value="yes"'; if(!isset($_SESSION[$rspathhex.'showexcepted']) || $_SESSION[$rspathhex.'showexcepted'] == "yes") echo " selected=selected"; echo '>&nbsp;hide</option>';
echo '<option data-icon="fas fa-eye" value="no"'; if(isset($_SESSION[$rspathhex.'showexcepted']) && $_SESSION[$rspathhex.'showexcepted'] == "no") echo " selected=selected"; echo '>&nbsp;show</option>';
?>
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiselclddesc"><?php echo $lang['wiselcld']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" data-actions-box="true" data-live-search="true" multiple name="user[]">
<?PHP
foreach ($user_arr as $user) {
echo '<option value="',$user['uuid'],'" data-subtext="UUID: ',$user['uuid'],'; DBID: ',$user['cldbid'],'">',htmlspecialchars($user['name']),'</option>';
}
?>
</select>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiselclddesc"><?php echo $lang['wiselcld']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" data-actions-box="true" data-live-search="true" multiple name="user[]">
<?PHP
foreach ($user_arr as $user) {
echo '<option value="',$user['uuid'],'" data-subtext="UUID: ',$user['uuid'],'; DBID: ',$user['cldbid'],'">',htmlspecialchars($user['name']),'</option>';
}
?>
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc"><?php echo $lang['setontime']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_day">
<script>
$("input[name='setontime_day']").TouchSpin({
min: 0,
max: 11574,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_day']; ?>'
});
</script>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc"><?php echo $lang['setontime']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_day">
<script>
$("input[name='setontime_day']").TouchSpin({
min: 0,
max: 11574,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_day']; ?>'
});
</script>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_hour">
<script>
$("input[name='setontime_hour']").TouchSpin({
min: 0,
max: 277777,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_hour']; ?>'
});
</script>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_hour">
<script>
$("input[name='setontime_hour']").TouchSpin({
min: 0,
max: 277777,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_hour']; ?>'
});
</script>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_min">
<script>
$("input[name='setontime_min']").TouchSpin({
min: 0,
max: 16666666,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_min']; ?>'
});
</script>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_min">
<script>
$("input[name='setontime_min']").TouchSpin({
min: 0,
max: 16666666,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_min']; ?>'
});
</script>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_sec">
<script>
$("input[name='setontime_sec']").TouchSpin({
min: 0,
max: 999999999,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_sec']; ?>'
});
</script>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_sec">
<script>
$("input[name='setontime_sec']").TouchSpin({
min: 0,
max: 999999999,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_sec']; ?>'
});
</script>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</form>
</div>
</div>
<div class="modal fade" id="wiselclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiselcld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiselclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiselclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiselcld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiselclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="setontimedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['setontime']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['setontimedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiadmhidedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiadmhide']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiadmhidedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<div class="modal fade" id="setontimedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['setontime']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['setontimedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiadmhidedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiadmhide']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiadmhidedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,232 +1,237 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(!isset($_POST['number']) || $_POST['number'] == "yes") {
$_SESSION[$rspathhex.'showexcepted'] = "yes";
$filter = " WHERE `except`='0'";
} else {
$_SESSION[$rspathhex.'showexcepted'] = "no";
$filter = "";
}
if(($user_arr = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` $filter ORDER BY `name` ASC")->fetchAll(PDO::FETCH_ASSOC)) === false) {
$err_msg = "DB Error: ".print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$setontime = 0;
if($_POST['setontime_day']) { $setontime = $setontime + $_POST['setontime_day'] * 86400; }
if($_POST['setontime_hour']) { $setontime = $setontime + $_POST['setontime_hour'] * 3600; }
if($_POST['setontime_min']) { $setontime = $setontime + $_POST['setontime_min'] * 60; }
if($_POST['setontime_sec']) { $setontime = $setontime + $_POST['setontime_sec']; }
if($setontime == 0) {
$err_msg = $lang['errseltime']; $err_lvl = 3;
} elseif($_POST['user'] == NULL) {
$err_msg = $lang['errselusr']; $err_lvl = 3;
} else {
$allinsertdata = '';
$succmsg = '';
$nowtime = time();
$setontime = $setontime * -1;
foreach($_POST['user'] as $uuid) {
$allinsertdata .= "('".$uuid."', ".$nowtime.", ".$setontime."),";
$succmsg .= sprintf($lang['sccupcount'],$setontime,$uuid)."<br>";
}
$allinsertdata = substr($allinsertdata, 0, -1);
if($mysqlcon->exec("INSERT INTO `$dbname`.`admin_addtime` (`uuid`,`timestamp`,`timecount`) VALUES $allinsertdata;") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} elseif($mysqlcon->exec("UPDATE `$dbname`.`job_check` SET `timestamp`=1 WHERE `job_name`='reload_trigger'; ") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} else {
$err_msg = substr($succmsg,0,-4); $err_lvl = NULL;
}
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihladm2']; ?>
</h1>
</div>
</div>
<form name="post" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="form-horizontal">
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(!isset($_POST['number']) || $_POST['number'] == "yes") {
$_SESSION[$rspathhex.'showexcepted'] = "yes";
$filter = " WHERE `except`='0'";
} else {
$_SESSION[$rspathhex.'showexcepted'] = "no";
$filter = "";
}
if(($user_arr = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` $filter ORDER BY `name` ASC")->fetchAll(PDO::FETCH_ASSOC)) === false) {
$err_msg = "DB Error: ".print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$setontime = 0;
if($_POST['setontime_day']) { $setontime = $setontime + $_POST['setontime_day'] * 86400; }
if($_POST['setontime_hour']) { $setontime = $setontime + $_POST['setontime_hour'] * 3600; }
if($_POST['setontime_min']) { $setontime = $setontime + $_POST['setontime_min'] * 60; }
if($_POST['setontime_sec']) { $setontime = $setontime + $_POST['setontime_sec']; }
if($setontime == 0) {
$err_msg = $lang['errseltime']; $err_lvl = 3;
} elseif($_POST['user'] == NULL) {
$err_msg = $lang['errselusr']; $err_lvl = 3;
} else {
$allinsertdata = '';
$succmsg = '';
$nowtime = time();
$setontime = $setontime * -1;
foreach($_POST['user'] as $uuid) {
$allinsertdata .= "('".$uuid."', ".$nowtime.", ".$setontime."),";
$succmsg .= sprintf($lang['sccupcount'],$setontime,$uuid)."<br>";
}
$allinsertdata = substr($allinsertdata, 0, -1);
if($mysqlcon->exec("INSERT INTO `$dbname`.`admin_addtime` (`uuid`,`timestamp`,`timecount`) VALUES $allinsertdata;") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} elseif($mysqlcon->exec("UPDATE `$dbname`.`job_check` SET `timestamp`=1 WHERE `job_name`='reload_trigger'; ") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} else {
$err_msg = substr($succmsg,0,-4); $err_lvl = NULL;
}
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#setontimedesc2"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihladm2']; ?>
</h1>
</div>
</div>
<form name="post" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="form-horizontal">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#setontimedesc2"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
</div>
</div>
</div>
</div>
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiadmhidedesc"><?php echo $lang['wiadmhide']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 pull-right">
<select class="selectpicker show-tick form-control" id="number" name="number" onchange="this.form.submit();">
<?PHP
echo '<option data-icon="fas fa-eye-slash" value="yes"'; if(!isset($_SESSION[$rspathhex.'showexcepted']) || $_SESSION[$rspathhex.'showexcepted'] == "yes") echo " selected=selected"; echo '>&nbsp;hide</option>';
echo '<option data-icon="fas fa-eye" value="no"'; if(isset($_SESSION[$rspathhex.'showexcepted']) && $_SESSION[$rspathhex.'showexcepted'] == "no") echo " selected=selected"; echo '>&nbsp;show</option>';
?>
</select>
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiadmhidedesc"><?php echo $lang['wiadmhide']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 pull-right">
<select class="selectpicker show-tick form-control" id="number" name="number" onchange="this.form.submit();">
<?PHP
echo '<option data-icon="fas fa-eye-slash" value="yes"'; if(!isset($_SESSION[$rspathhex.'showexcepted']) || $_SESSION[$rspathhex.'showexcepted'] == "yes") echo " selected=selected"; echo '>&nbsp;hide</option>';
echo '<option data-icon="fas fa-eye" value="no"'; if(isset($_SESSION[$rspathhex.'showexcepted']) && $_SESSION[$rspathhex.'showexcepted'] == "no") echo " selected=selected"; echo '>&nbsp;show</option>';
?>
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiselclddesc"><?php echo $lang['wiselcld']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" data-actions-box="true" data-live-search="true" multiple name="user[]">
<?PHP
foreach ($user_arr as $user) {
echo '<option value="',$user['uuid'],'" data-subtext="UUID: ',$user['uuid'],'; DBID: ',$user['cldbid'],'">',htmlspecialchars($user['name']),'</option>';
}
?>
</select>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiselclddesc"><?php echo $lang['wiselcld']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" data-actions-box="true" data-live-search="true" multiple name="user[]">
<?PHP
foreach ($user_arr as $user) {
echo '<option value="',$user['uuid'],'" data-subtext="UUID: ',$user['uuid'],'; DBID: ',$user['cldbid'],'">',htmlspecialchars($user['name']),'</option>';
}
?>
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc2"><?php echo $lang['setontime2']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_day">
<script>
$("input[name='setontime_day']").TouchSpin({
min: 0,
max: 11574,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_day']; ?>'
});
</script>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc2"><?php echo $lang['setontime2']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_day">
<script>
$("input[name='setontime_day']").TouchSpin({
min: 0,
max: 11574,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_day']; ?>'
});
</script>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc2"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_hour">
<script>
$("input[name='setontime_hour']").TouchSpin({
min: 0,
max: 277777,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_hour']; ?>'
});
</script>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc2"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_hour">
<script>
$("input[name='setontime_hour']").TouchSpin({
min: 0,
max: 277777,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_hour']; ?>'
});
</script>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc2"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_min">
<script>
$("input[name='setontime_min']").TouchSpin({
min: 0,
max: 16666666,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_min']; ?>'
});
</script>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc2"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_min">
<script>
$("input[name='setontime_min']").TouchSpin({
min: 0,
max: 16666666,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_min']; ?>'
});
</script>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc2"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_sec">
<script>
$("input[name='setontime_sec']").TouchSpin({
min: 0,
max: 999999999,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_sec']; ?>'
});
</script>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#setontimedesc2"></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="setontime_sec">
<script>
$("input[name='setontime_sec']").TouchSpin({
min: 0,
max: 999999999,
verticalbuttons: true,
prefix: '<?PHP echo $lang['time_sec']; ?>'
});
</script>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</form>
</div>
</div>
<div class="modal fade" id="wiselclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiselcld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiselclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiselclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiselcld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiselclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="setontimedesc2" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['setontime2']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['setontimedesc2']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiadmhidedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiadmhide']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiadmhidedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<div class="modal fade" id="setontimedesc2" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['setontime2']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['setontimedesc2']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiadmhidedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiadmhide']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiadmhidedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,234 +1,243 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$stats_api_keys = $err_msg = "";
if (isset($_POST['apikey']) && isset($_POST['desc'])) {
$apidefinition = [];
foreach($_POST['apikey'] as $rowid => $apikey) {
$desc = isset($_POST["desc"][$rowid]) ? $_POST["desc"][$rowid] : null;
$apidefinition[] = "$apikey=>$desc";
}
$stats_api_keys = implode(",", $apidefinition);
$cfg['stats_api_keys'] = $stats_api_keys;
}
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('stats_api_keys','{$cfg['stats_api_keys']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = NULL;
}
if(empty($stats_api_keys)) {
$cfg['stats_api_keys'] = NULL;
} else {
$keyarr = explode(',', $stats_api_keys);
foreach ($keyarr as $entry) {
list($key, $value) = explode('=>', $entry);
$addnewvalue[$key] = $value;
$cfg['stats_api_keys'] = $addnewvalue;
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<form class="form-horizontal" data-toggle="validator" name="update" method="POST" id="new">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<span><?php echo $lang['api'],' ',$lang['wihlset']; ?></span>
</h1>
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$stats_api_keys = $err_msg = "";
if (isset($_POST['apikey']) && isset($_POST['desc'])) {
$apidefinition = [];
foreach($_POST['apikey'] as $rowid => $apikey) {
$desc = isset($_POST["desc"][$rowid]) ? $_POST["desc"][$rowid] : null;
$apidefinition[] = "$apikey=>$desc";
}
$stats_api_keys = implode(",", $apidefinition);
$cfg['stats_api_keys'] = $stats_api_keys;
} else {
$cfg['stats_api_keys'] = NULL;
}
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('stats_api_keys','{$cfg['stats_api_keys']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = NULL;
}
if(empty($stats_api_keys)) {
$cfg['stats_api_keys'] = NULL;
} else {
$keyarr = explode(',', $stats_api_keys);
foreach ($keyarr as $entry) {
list($key, $value) = explode('=>', $entry);
$addnewvalue[$key] = $value;
$cfg['stats_api_keys'] = $addnewvalue;
}
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<form class="form-horizontal" data-toggle="validator" name="update" method="POST" id="new">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<span><?php echo $lang['api'],' ',$lang['wihlset']; ?></span>
</h1>
</div>
</div>
</div>
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#wiapidesc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<div class="col-sm-5">
<b><?php echo $lang['apikey'] ?></b>
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#wiapidesc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<div class="col-sm-5">
<b><?php echo $lang['apikey'] ?></b>
</div>
<div class="col-sm-6">
<b><?php echo $lang['descr']; ?></b>
</div>
<div class="col-sm-1"></div>
</div>
<div class="col-sm-6">
<b><?php echo $lang['descr']; ?></b>
<div class="form-group hidden" name="template">
<div class="col-sm-4">
<input type="text" data-pattern="^[a-zA-Z0-9]{1,64}$" data-error="No special characters allowed and maximum 64 characters!" maxlength="64" class="form-control" name="tempapikey[]" value="<?PHP $apikey= bin2hex(openssl_random_pseudo_bytes(32)); echo $apikey; ?>">
<div class="help-block with-errors"></div>
</div>
<div class="col-sm-1 text-left"></div>
<div class="col-sm-6">
<input type="text" data-pattern="^[^,=>]{1,128}$" data-error="No comma, equal sign or greater-than sign allowed and maximum 128 characters!" maxlength="128" class="form-control" name="tempdesc[]" value="" placeholder="set a description..">
<div class="help-block with-errors"></div>
</div>
<div class="col-sm-1 text-center delete" name="delete"><i class="fas fa-trash" style="margin-top:10px;cursor:pointer;" title="delete line"></i></div>
<div class="col-sm-2"></div>
</div>
<div class="col-sm-1"></div>
</div>
<div class="form-group hidden" name="template">
<div class="col-sm-4">
<input type="text" data-pattern="^[a-zA-Z0-9]{1,64}$" data-error="No special characters allowed and maximum 64 characters!" maxlength="64" class="form-control" name="tempapikey[]" value="<?PHP $apikey= bin2hex(openssl_random_pseudo_bytes(32)); echo $apikey; ?>">
<div class="help-block with-errors"></div>
<?PHP
if(isset($cfg['stats_api_keys']) && $cfg['stats_api_keys'] != '') {
foreach($cfg['stats_api_keys'] as $apikey => $desc) {
?>
<div class="form-group" name="apidef">
<div class="col-sm-4">
<input type="text" data-pattern="^[a-zA-Z0-9]{1,64}$" data-error="No special characters allowed and maximum 64 characters!" maxlength="64" class="form-control" name="apikey[]" value="<?PHP echo $apikey; ?>">
<div class="help-block with-errors"></div>
</div>
<div class="col-sm-1 text-left">
<i class="fas fa-link" onclick="openurl('../api/?apikey=<?PHP echo $apikey; ?>')" style="margin-top:10px;cursor:pointer;" title="open URL"></i>&nbsp;
<i class="fas fa-copy" onclick="copyurl('<?PHP echo $_SERVER['SERVER_NAME'],substr(dirname($_SERVER['SCRIPT_NAME']),0,-12),'api/?apikey=',$apikey; ?>')" style="margin-top:10px;cursor:pointer;" title="copy URL to clipboard"></i>
</div>
<div class="col-sm-6">
<input type="text" data-pattern="^[^,=>]{1,128}$" data-error="No comma, equal sign or greater-than sign allowed and maximum 128 characters!" maxlength="128" class="form-control" name="desc[]" value="<?PHP echo $desc; ?>" placeholder="set a description..">
<div class="help-block with-errors"></div>
</div>
<div class="col-sm-1 text-center delete" name="delete"><i class="fas fa-trash" style="margin-top:10px;cursor:pointer;" title="delete line"></i></div>
<div class="col-sm-2"></div>
</div>
<div class="col-sm-1 text-left"></div>
<div class="col-sm-6">
<input type="text" data-pattern="^[^,=>]{1,128}$" data-error="No comma, equal sign or greater-than sign allowed and maximum 128 characters!" maxlength="128" class="form-control" name="tempdesc[]" value="" placeholder="set a description..">
<div class="help-block with-errors"></div>
</div>
<div class="col-sm-1 text-center delete" name="delete"><i class="fas fa-trash" style="margin-top:10px;cursor:pointer;" title="delete line"></i></div>
<div class="col-sm-2"></div>
</div>
<?PHP
foreach($cfg['stats_api_keys'] as $apikey => $desc) {
?>
<div class="form-group" name="apidef">
<div class="col-sm-4">
<input type="text" data-pattern="^[a-zA-Z0-9]{1,64}$" data-error="No special characters allowed and maximum 64 characters!" maxlength="64" class="form-control" name="apikey[]" value="<?PHP echo $apikey; ?>">
<div class="help-block with-errors"></div>
</div>
<div class="col-sm-1 text-left">
<i class="fas fa-link" onclick="openurl('../api/?apikey=<?PHP echo $apikey; ?>')" style="margin-top:10px;cursor:pointer;" title="open URL"></i>&nbsp;
<i class="fas fa-copy" onclick="copyurl('<?PHP echo $_SERVER['SERVER_NAME'],substr(dirname($_SERVER['SCRIPT_NAME']),0,-12),'api/?apikey=',$apikey; ?>')" style="margin-top:10px;cursor:pointer;" title="copy URL to clipboard"></i>
</div>
<div class="col-sm-6">
<input type="text" data-pattern="^[^,=>]{1,128}$" data-error="No comma, equal sign or greater-than sign allowed and maximum 128 characters!" maxlength="128" class="form-control" name="desc[]" value="<?PHP echo $desc; ?>" placeholder="set a description..">
<div class="help-block with-errors"></div>
</div>
<div class="col-sm-1 text-center delete" name="delete"><i class="fas fa-trash" style="margin-top:10px;cursor:pointer;" title="delete line"></i></div>
<div class="col-sm-2"></div>
</div>
<?PHP
}
?>
<div class="form-group" id="addapikey">
<?PHP
if(!isset($cfg['stats_api_keys'])) {
echo '<div class="col-sm-11"><div id="noentry"><i>',$lang['wiboostempty'],'</i></div></div>';
} else {
echo '<div class="col-sm-11"></div>';
}?>
<div class="col-sm-1 text-center">
<span class="d-inline-block" ata-toggle="tooltip" title="Add new line">
<button class="btn btn-primary" onclick="addapikey()" style="margin-top: 5px;" type="button"><i class="fas fa-plus"></i></button>
</span>
}
}
?>
<div class="form-group" id="addapikey">
<?PHP
if(!isset($cfg['stats_api_keys'])) {
echo '<div class="col-sm-11"><div id="noentry"><i>',$lang['wiboostempty'],'</i></div></div>';
} else {
echo '<div class="col-sm-11"></div>';
}?>
<div class="col-sm-1 text-center">
<span class="d-inline-block" ata-toggle="tooltip" title="Add new line">
<button class="btn btn-primary" onclick="addapikey()" style="margin-top: 5px;" type="button"><i class="fas fa-plus"></i></button>
</span>
</div>
<div class="col-sm-2"></div>
</div>
<div class="col-sm-2"></div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wiapidesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['api']; ?></h4>
</div>
<div class="modal-body">
<?php
$host = "<a href=\"//".$_SERVER['HTTP_HOST'].substr(rtrim(dirname($_SERVER['PHP_SELF']), '/\\'),0,-12)."api\" target=\"_blank\">".$_SERVER['HTTP_HOST'].substr(rtrim(dirname($_SERVER['PHP_SELF']), '/\\'),0,-12)."api</a>";
echo sprintf($lang['wiapidesc'], $host); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiapidesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['api']; ?></h4>
</div>
<div class="modal-body">
<?php
$host = "<a href=\"//".$_SERVER['HTTP_HOST'].substr(rtrim(dirname($_SERVER['PHP_SELF']), '/\\'),0,-12)."api\" target=\"_blank\">".$_SERVER['HTTP_HOST'].substr(rtrim(dirname($_SERVER['PHP_SELF']), '/\\'),0,-12)."api</a>";
echo sprintf($lang['wiapidesc'], $host); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
});
function addapikey() {
var $clone = $("div[name='template']").last().clone();
$clone.removeClass("hidden");
$clone.attr('name','apidef');
$clone.insertBefore("#addapikey");
$("input[name='tempapikey[]']").last().attr('name', 'apikey[]');
$("input[name='tempdesc[]']").last().attr('name', 'desc[]');
$('.delete').removeClass("hidden");
if (document.contains(document.getElementById("noentry"))) {
document.getElementById("noentry").remove();
}
var newapikey = {
_pattern : /[a-z0-9]/,
_getRandomByte : function() {
if(window.crypto && window.crypto.getRandomValues) {
var result = new Uint8Array(1);
window.crypto.getRandomValues(result);
return result[0];
} else if(window.msCrypto && window.msCrypto.getRandomValues) {
var result = new Uint8Array(1);
window.msCrypto.getRandomValues(result);
return result[0];
} else {
return Math.floor(Math.random() * 256);
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
}
},
generate : function(length) {
return Array.apply(null, {'length': length})
.map(function() {
var result;
while(true) {
result = String.fromCharCode(this._getRandomByte());
if(this._pattern.test(result)) {
return result;
}
}
}, this)
.join('');
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
});
function addapikey() {
var $clone = $("div[name='template']").last().clone();
$clone.removeClass("hidden");
$clone.attr('name','apidef');
$clone.insertBefore("#addapikey");
$("input[name='tempapikey[]']").last().attr('name', 'apikey[]');
$("input[name='tempdesc[]']").last().attr('name', 'desc[]');
$('.delete').removeClass("hidden");
if (document.contains(document.getElementById("noentry"))) {
document.getElementById("noentry").remove();
}
var newapikey = {
_pattern : /[a-z0-9]/,
_getRandomByte : function() {
if(window.crypto && window.crypto.getRandomValues) {
var result = new Uint8Array(1);
window.crypto.getRandomValues(result);
return result[0];
} else if(window.msCrypto && window.msCrypto.getRandomValues) {
var result = new Uint8Array(1);
window.msCrypto.getRandomValues(result);
return result[0];
} else {
return Math.floor(Math.random() * 256);
}
},
generate : function(length) {
return Array.apply(null, {'length': length})
.map(function() {
var result;
while(true) {
result = String.fromCharCode(this._getRandomByte());
if(this._pattern.test(result)) {
return result;
}
}
}, this)
.join('');
}
};
$("input[name='apikey[]']").last().attr('value', newapikey.generate(64));
};
$("input[name='apikey[]']").last().attr('value', newapikey.generate(64));
};
$(document).on("click", ".delete", function(){
$(this).parent().remove();
});
function openurl(url) {
window.open(url,'_blank');
}
function copyurl(url) {
navigator.clipboard.writeText(url).then(function() { });
}
</script>
</body>
</html>
$(document).on("click", ".delete", function(){
$(this).parent().remove();
});
function openurl(url) {
window.open(url,'_blank');
}
function copyurl(url) {
navigator.clipboard.writeText(url).then(function() { });
}
</script>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,409 +1,414 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($groupslist = $mysqlcon->query("SELECT * FROM `$dbname`.`groups` ORDER BY `sortid`,`sgidname` ASC")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(!isset($groupslist) || $groupslist == NULL) {
$err_msg = '<b>No servergroups found inside the Ranksystem cache!</b><br><br>Please connect the Ranksystem Bot to the TS server. The Ranksystem will download the servergroups when it is connected to the server.<br>Give it a few minutes and reload this page. The dropdown field should contain your groups after.';
$err_lvl = 1;
}
if (isset($_POST['update_old']) && isset($db_csrf[$_POST['csrf_token']])) {
if(empty($_POST['rankup_boost_definition'])) {
$grouparr_old = null;
} else {
foreach (explode(',', $_POST['rankup_boost_definition']) as $entry) {
list($key, $value1, $value2) = explode('=>', $entry);
$grouparr_old[$key] = array("group"=>$key,"factor"=>$value1,"time"=>$value2);
$cfg['rankup_boost_definition'] = $grouparr_old;
}
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(isset($cfg['rankup_boost_definition']) && $cfg['rankup_boost_definition'] != NULL) {
foreach($cfg['rankup_boost_definition'] as $groupid => $value) {
if(!isset($groupslist[$groupid]) && $groupid != NULL) {
$err_msg .= sprintf($lang['upgrp0001'], $groupid, $lang['wiboost']).'<br>';
$err_lvl = 3;
$errcnf++;
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($groupslist = $mysqlcon->query("SELECT * FROM `$dbname`.`groups` ORDER BY `sortid`,`sgidname` ASC")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(!isset($groupslist) || $groupslist == NULL) {
$err_msg = '<b>No servergroups found inside the Ranksystem cache!</b><br><br>Please connect the Ranksystem Bot to the TS server. The Ranksystem will download the servergroups when it is connected to the server.<br>Give it a few minutes and reload this page. The dropdown field should contain your groups after.';
$err_lvl = 1;
}
if (isset($_POST['update_old']) && isset($db_csrf[$_POST['csrf_token']])) {
if(empty($_POST['rankup_boost_definition'])) {
$grouparr_old = null;
} else {
foreach (explode(',', $_POST['rankup_boost_definition']) as $entry) {
list($key, $value1, $value2) = explode('=>', $entry);
$grouparr_old[$key] = array("group"=>$key,"factor"=>$value1,"time"=>$value2);
$cfg['rankup_boost_definition'] = $grouparr_old;
}
}
}
$cfg['rankup_boost_definition'] = $_POST['rankup_boost_definition'];
if($errcnf == 0) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_boost_definition','{$cfg['rankup_boost_definition']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
} else {
$err_msg .= "<br>".$lang['errgrpid'];
}
if(empty($_POST['rankup_boost_definition'])) {
$cfg['rankup_boost_definition'] = NULL;
} else {
foreach (explode(',', $_POST['rankup_boost_definition']) as $entry) {
list($key, $value1, $value2) = explode('=>', $entry);
$addnewvalue2[$key] = array("group"=>$key,"factor"=>$value1,"time"=>$value2);
$cfg['rankup_boost_definition'] = $addnewvalue2;
}
}
} elseif (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$rankup_boost_definition = $err_msg = "";
$errcnf = 0;
if (isset($_POST['boostduration']) && !isset($_POST['boostgroup']) && isset($_POST['boostfactor'])) {
$errcnf++;
$err_msg = "<b>Missing servergroup in your defintion!</b><br>";
$err_lvl = 3;
$cfg['rankup_boost_definition'] = null;
} elseif (isset($_POST['boostduration']) && isset($_POST['boostgroup']) && isset($_POST['boostfactor'])) {
$boostdefinition = [];
foreach($_POST['boostgroup'] as $rowid => $groupid) {
$factor = isset($_POST["boostfactor"][$rowid]) ? floatval($_POST["boostfactor"][$rowid]) : 1;
$duration = isset($_POST["boostduration"][$rowid]) ? intval($_POST["boostduration"][$rowid]) : 1;
$boostdefinition[] = "$groupid=>$factor=>$duration";
}
$rankup_boost_definition = implode(",", $boostdefinition);
$grouparr = [];
foreach(explode(',', $rankup_boost_definition) as $entry) {
list($groupid, $factor, $duration) = explode('=>', $entry);
$grouparr[$groupid] = $factor;
}
if(isset($groupslist) && $groupslist != NULL) {
foreach($grouparr as $groupid => $time) {
if((!isset($groupslist[$groupid]) && $groupid != NULL) || $groupid == 0) {
$err_msg .= sprintf($lang['upgrp0001'], $groupid, $lang['wigrptime']).'<br>';
if(isset($cfg['rankup_boost_definition']) && $cfg['rankup_boost_definition'] != NULL) {
foreach($cfg['rankup_boost_definition'] as $groupid => $value) {
if(!isset($groupslist[$groupid]) && $groupid != NULL) {
$err_msg .= sprintf($lang['upgrp0001'], $groupid, $lang['wiboost']).'<br>';
$err_lvl = 3;
$errcnf++;
}
}
}
$cfg['rankup_boost_definition'] = $_POST['rankup_boost_definition'];
$cfg['rankup_boost_definition'] = $rankup_boost_definition;
} else {
$cfg['rankup_boost_definition'] = null;
if ($mysqlcon->exec("UPDATE `$dbname`.`user` SET `boosttime`=0;") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
}
if($errcnf == 0) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_boost_definition','{$cfg['rankup_boost_definition']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
if($errcnf == 0) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_boost_definition','{$cfg['rankup_boost_definition']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
$err_msg .= "<br>".$lang['errgrpid'];
}
} else {
$err_msg .= "<br>".$lang['errgrpid'];
}
if(empty($rankup_boost_definition)) {
$cfg['rankup_boost_definition'] = NULL;
} else {
$boostexp = explode(',', $rankup_boost_definition);
foreach ($boostexp as $entry) {
list($key, $value1, $value2) = explode('=>', $entry);
$addnewvalue2[$key] = array("group"=>$key,"factor"=>$value1,"time"=>$value2);
$cfg['rankup_boost_definition'] = $addnewvalue2;
if(empty($_POST['rankup_boost_definition'])) {
$cfg['rankup_boost_definition'] = NULL;
} else {
foreach (explode(',', $_POST['rankup_boost_definition']) as $entry) {
list($key, $value1, $value2) = explode('=>', $entry);
$addnewvalue2[$key] = array("group"=>$key,"factor"=>$value1,"time"=>$value2);
$cfg['rankup_boost_definition'] = $addnewvalue2;
}
}
}
} elseif(isset($_POST['update']) || isset($_POST['update_old'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<form class="form-horizontal" data-toggle="validator" name="update" method="POST" id="new">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<span><?php echo $lang['wiboost'],' ',$lang['wihlset']; ?></span>
<div class="btn pull-right expertelement">
<input id="switchexpert1" class="switch-animate" type="checkbox" data-size="mini" value="switchexpert1" data-label-text="<?php echo $lang['wigrpimp'] ?>" data-off-text="OFF">
</div>
</h1>
} elseif (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$rankup_boost_definition = $err_msg = "";
$errcnf = 0;
if (isset($_POST['boostduration']) && !isset($_POST['boostgroup']) && isset($_POST['boostfactor'])) {
$errcnf++;
$err_msg = "<b>Missing servergroup in your defintion!</b><br>";
$err_lvl = 3;
$cfg['rankup_boost_definition'] = null;
} elseif (isset($_POST['boostduration']) && isset($_POST['boostgroup']) && isset($_POST['boostfactor'])) {
$boostdefinition = [];
foreach($_POST['boostgroup'] as $rowid => $groupid) {
$factor = isset($_POST["boostfactor"][$rowid]) ? floatval($_POST["boostfactor"][$rowid]) : 1;
$duration = isset($_POST["boostduration"][$rowid]) ? intval($_POST["boostduration"][$rowid]) : 1;
$boostdefinition[] = "$groupid=>$factor=>$duration";
}
$rankup_boost_definition = implode(",", $boostdefinition);
$grouparr = [];
foreach(explode(',', $rankup_boost_definition) as $entry) {
list($groupid, $factor, $duration) = explode('=>', $entry);
$grouparr[$groupid] = $factor;
}
if(isset($groupslist) && $groupslist != NULL) {
foreach($grouparr as $groupid => $time) {
if((!isset($groupslist[$groupid]) && $groupid != NULL) || $groupid == 0) {
$err_msg .= sprintf($lang['upgrp0001'], $groupid, $lang['wigrptime']).'<br>';
$err_lvl = 3;
$errcnf++;
}
}
}
$cfg['rankup_boost_definition'] = $rankup_boost_definition;
} else {
$cfg['rankup_boost_definition'] = null;
if ($mysqlcon->exec("UPDATE `$dbname`.`user` SET `boosttime`=0;") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
}
if($errcnf == 0) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_boost_definition','{$cfg['rankup_boost_definition']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
} else {
$err_msg .= "<br>".$lang['errgrpid'];
}
if(empty($rankup_boost_definition)) {
$cfg['rankup_boost_definition'] = NULL;
} else {
$boostexp = explode(',', $rankup_boost_definition);
foreach ($boostexp as $entry) {
list($key, $value1, $value2) = explode('=>', $entry);
$addnewvalue2[$key] = array("group"=>$key,"factor"=>$value1,"time"=>$value2);
$cfg['rankup_boost_definition'] = $addnewvalue2;
}
}
} elseif(isset($_POST['update']) || isset($_POST['update_old'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<form class="form-horizontal" data-toggle="validator" name="update" method="POST" id="new">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<span><?php echo $lang['wiboost'],' ',$lang['wihlset']; ?></span>
<div class="btn pull-right expertelement">
<input id="switchexpert1" class="switch-animate" type="checkbox" data-size="mini" value="switchexpert1" data-label-text="<?php echo $lang['wigrpimp'] ?>" data-off-text="OFF">
</div>
</h1>
</div>
</div>
</div>
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#wihladm0desc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<div class="col-sm-5">
<b><?php echo $lang['wigrpt2'] ?></b>
</div>
<div class="col-sm-3">
<b><?php echo $lang['wiboost'],' ', $lang['factor']; ?></b>
</div>
<div class="col-sm-3">
<b><?php echo $lang['duration'],' ',$lang['insec'] ?></b>
</div>
<div class="col-sm-1"></div>
</div>
<div class="form-group hidden" name="template">
<div class="col-sm-5">
<select class="selectpicker show-tick form-control" data-live-search="true" name="tempboostgroup[]">
<?PHP
foreach ($groupslist as $groupID => $groupParam) {
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if($groupParam['type'] == 0 || $groupParam['type'] == 2) $disabled=" disabled"; else $disabled="";
if($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$disabled,'></option>';
}
}
?>
</select>
</div>
<div class="col-sm-3">
<input type="text" data-pattern="^[0-9]{0,9}\.?[0-9]+$" data-error="Only decimal numbers are allowed. As seperator use a dot!" class="form-control boostfactor" name="tempboostfactor[]" value="1.25">
<div class="help-block with-errors"></div>
</div>
<div class="col-sm-3">
<input type="text" class="form-control boostduration" name="tempboostduration[]" value="600">
</div>
<div class="col-sm-1 text-center delete" name="delete"><i class="fas fa-trash" style="margin-top:10px;cursor:pointer;" title="delete line"></i></div>
<div class="col-sm-2"></div>
</div>
<?PHP
if(isset($cfg['rankup_boost_definition'])) {
foreach($cfg['rankup_boost_definition'] as $boost) {
?>
<div class="form-group" name="boostgroup">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#wihladm0desc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<div class="col-sm-5">
<select class="selectpicker show-tick form-control" data-live-search="true" name="boostgroup[]">
<b><?php echo $lang['wigrpt2'] ?></b>
</div>
<div class="col-sm-3">
<b><?php echo $lang['wiboost'],' ', $lang['factor']; ?></b>
</div>
<div class="col-sm-3">
<b><?php echo $lang['duration'],' ',$lang['insec'] ?></b>
</div>
<div class="col-sm-1"></div>
</div>
<div class="form-group hidden" name="template">
<div class="col-sm-5">
<select class="selectpicker show-tick form-control" data-live-search="true" name="tempboostgroup[]">
<?PHP
foreach ($groupslist as $groupID => $groupParam) {
if ($groupID == $boost['group']) $selected=" selected"; else $selected="";
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if ($groupParam['type'] == 0 || $groupParam['type'] == 2) $disabled=" disabled"; else $disabled="";
if ($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if ($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if($groupParam['type'] == 0 || $groupParam['type'] == 2) $disabled=" disabled"; else $disabled="";
if($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$selected,$disabled,'></option>';
echo '<option data-content="<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$disabled,'></option>';
}
}
?>
</select>
</div>
<div class="col-sm-3">
<input type="text" data-pattern="^[0-9]{0,9}\.?[0-9]+$" data-error="Only decimal numbers are allowed. As seperator use a dot!" class="form-control boostfactor" name="boostfactor[]" value="<?PHP echo $boost['factor']; ?>">
<input type="text" data-pattern="^[0-9]{0,9}\.?[0-9]+$" data-error="Only decimal numbers are allowed. As seperator use a dot!" class="form-control boostfactor" name="tempboostfactor[]" value="1.25">
<div class="help-block with-errors"></div>
</div>
<div class="col-sm-3">
<input type="text" class="form-control boostduration" name="boostduration[]" value="<?PHP echo $boost['time']; ?>">
<input type="text" class="form-control boostduration" name="tempboostduration[]" value="600">
</div>
<div class="col-sm-1 text-center delete" name="delete"><i class="fas fa-trash" style="margin-top:10px;cursor:pointer;" title="delete line"></i></div>
<div class="col-sm-2"></div>
</div>
<?PHP
}
}
?>
<div class="form-group" id="addboostgroup">
if(isset($cfg['rankup_boost_definition'])) {
foreach($cfg['rankup_boost_definition'] as $boost) {
?>
<div class="form-group" name="boostgroup">
<div class="col-sm-5">
<select class="selectpicker show-tick form-control" data-live-search="true" name="boostgroup[]">
<?PHP
foreach ($groupslist as $groupID => $groupParam) {
if ($groupID == $boost['group']) $selected=" selected"; else $selected="";
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if ($groupParam['type'] == 0 || $groupParam['type'] == 2) $disabled=" disabled"; else $disabled="";
if ($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if ($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$selected,$disabled,'></option>';
}
}
?>
</select>
</div>
<div class="col-sm-3">
<input type="text" data-pattern="^[0-9]{0,9}\.?[0-9]+$" data-error="Only decimal numbers are allowed. As seperator use a dot!" class="form-control boostfactor" name="boostfactor[]" value="<?PHP echo $boost['factor']; ?>">
<div class="help-block with-errors"></div>
</div>
<div class="col-sm-3">
<input type="text" class="form-control boostduration" name="boostduration[]" value="<?PHP echo $boost['time']; ?>">
</div>
<div class="col-sm-1 text-center delete" name="delete"><i class="fas fa-trash" style="margin-top:10px;cursor:pointer;" title="delete line"></i></div>
<div class="col-sm-2"></div>
</div>
<?PHP
if(!isset($cfg['rankup_boost_definition'])) {
echo '<div class="col-sm-11"><div id="noentry"><i>',$lang['wiboostempty'],'</i></div></div>';
} else {
echo '<div class="col-sm-11"></div>';
}?>
<div class="col-sm-1 text-center">
<span class="d-inline-block" ata-toggle="tooltip" title="Add new line">
<button class="btn btn-primary" onclick="addboostgroup()" style="margin-top: 5px;" type="button"><i class="fas fa-plus"></i></button>
</span>
}
}
?>
<div class="form-group" id="addboostgroup">
<?PHP
if(!isset($cfg['rankup_boost_definition'])) {
echo '<div class="col-sm-11"><div id="noentry"><i>',$lang['wiboostempty'],'</i></div></div>';
} else {
echo '<div class="col-sm-11"></div>';
}?>
<div class="col-sm-1 text-center">
<span class="d-inline-block" ata-toggle="tooltip" title="Add new line">
<button class="btn btn-primary" onclick="addboostgroup()" style="margin-top: 5px;" type="button"><i class="fas fa-plus"></i></button>
</span>
</div>
<div class="col-sm-2"></div>
</div>
<div class="col-sm-2"></div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<form class="form-horizontal hidden" data-toggle="validator" name="update_old" method="POST" id="old">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<span><?php echo $lang['wiboost'],' ',$lang['wihlset']; ?></span>
<div class="btn pull-right">
<input id="switchexpert2" class="switch-animate" type="checkbox" checked data-size="mini" alue="switchexpert2" data-label-text="<?php echo $lang['wigrpimp'] ?>" data-on-text="ON">
</div>
</h1>
<div class="row">&nbsp;</div>
</form>
<form class="form-horizontal hidden" data-toggle="validator" name="update_old" method="POST" id="old">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<span><?php echo $lang['wiboost'],' ',$lang['wihlset']; ?></span>
<div class="btn pull-right">
<input id="switchexpert2" class="switch-animate" type="checkbox" checked data-size="mini" alue="switchexpert2" data-label-text="<?php echo $lang['wigrpimp'] ?>" data-on-text="ON">
</div>
</h1>
</div>
</div>
</div>
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12" data-toggle="modal" data-target="#wiboostdesc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><?php echo $lang['wiboost']; ?></label>
<div class="col-sm-10">
<textarea class="form-control" data-pattern="^([1-9][0-9]{0,9}=>[0-9]{0,9}\.?[0-9]+=>[1-9][0-9]{0,9},)*[1-9][0-9]{0,9}=>[0-9]{0,9}\.?[0-9]+=>[1-9][0-9]{0,9}$" data-error="Wrong definition, please look at description for more details. No comma at ending!" rows="15" name="rankup_boost_definition" maxlength="21588"><?php
$implode_boost = '';
if(isset($cfg['rankup_boost_definition']) && $cfg['rankup_boost_definition'] != NULL) {
foreach ($cfg['rankup_boost_definition'] as $r) {
$implode_boost .= $r['group']."=>".$r['factor']."=>".$r['time'].",";
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12" data-toggle="modal" data-target="#wiboostdesc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><?php echo $lang['wiboost']; ?></label>
<div class="col-sm-10">
<textarea class="form-control" data-pattern="^([1-9][0-9]{0,9}=>[0-9]{0,9}\.?[0-9]+=>[1-9][0-9]{0,9},)*[1-9][0-9]{0,9}=>[0-9]{0,9}\.?[0-9]+=>[1-9][0-9]{0,9}$" data-error="Wrong definition, please look at description for more details. No comma at ending!" rows="15" name="rankup_boost_definition" maxlength="21588"><?php
$implode_boost = '';
if(isset($cfg['rankup_boost_definition']) && $cfg['rankup_boost_definition'] != NULL) {
foreach ($cfg['rankup_boost_definition'] as $r) {
$implode_boost .= $r['group']."=>".$r['factor']."=>".$r['time'].",";
}
$implode_boost = substr($implode_boost, 0, -1);
}
$implode_boost = substr($implode_boost, 0, -1);
}
echo $implode_boost;
?></textarea>
<div class="help-block with-errors"></div>
echo $implode_boost;
?></textarea>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update_old"><?php echo $lang['wisvconf']; ?></button>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update_old"><?php echo $lang['wisvconf']; ?></button>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wihladm0desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiboost']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiboost2desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm0desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiboost']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiboost2desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiboostdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiboost']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiboostdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
<div class="modal fade" id="wiboostdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiboost']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiboostdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
});
});
$(".boostduration").TouchSpin({
min: 1,
max: 999999999,
verticalbuttons: true,
prefix: 'Sec.:'
});
$(".boostfactor").TouchSpin({
min: 0,
max: 999999999,
decimals: 9,
step: 0.000000001,
verticalbuttons: true,
prefix: '<i class="fas fa-times"></i>:'
});
function addboostgroup() {
var $clone = $("div[name='template']").last().clone();
$clone.removeClass("hidden");
$clone.attr('name','boostgroup');
$clone.insertBefore("#addboostgroup");
$clone.find('.bootstrap-select').replaceWith(function() { return $('select', this); });
$clone.find('select').selectpicker('val', '');
$("select[name='tempboostgroup[]']").last().attr('name', 'boostgroup[]');
$("input[name='tempboostfactor[]']").last().attr('name', 'boostfactor[]');
$("input[name='tempboostduration[]']").last().attr('name', 'boostduration[]');
$('.delete').removeClass("hidden");
if (document.contains(document.getElementById("noentry"))) {
document.getElementById("noentry").remove();
}
$clone.find('.bootstrap-touchspin').replaceWith(function() { return $('input', this); });;
$clone.find('.boostfactor').TouchSpin({min: 0,max: 999999999,decimals: 9,step: 0.000000001,verticalbuttons: true,prefix: '<i class="fas fa-times"></i>:'});
$clone.find('.boostduration').TouchSpin({min: 1,max: 999999999,verticalbuttons: true,prefix: 'Sec.:'});
};
$(document).on("click", ".delete", function(){
$(this).parent().remove();
});
$('#switchexpert1').on('switchChange.bootstrapSwitch', function() {
document.getElementById("new").classList.add("hidden");
document.getElementById("old").classList.remove("hidden");
$('#switchexpert2').bootstrapSwitch('state', true, false);
});
$('#switchexpert2').on('switchChange.bootstrapSwitch', function() {
document.getElementById("new").classList.remove("hidden");
document.getElementById("old").classList.add("hidden");
$('#switchexpert1').bootstrapSwitch('state', false, false);
});
</script>
</body>
</html>
$(".boostduration").TouchSpin({
min: 1,
max: 999999999,
verticalbuttons: true,
prefix: 'Sec.:'
});
$(".boostfactor").TouchSpin({
min: 0,
max: 999999999,
decimals: 9,
step: 0.000000001,
verticalbuttons: true,
prefix: '<i class="fas fa-times"></i>:'
});
function addboostgroup() {
var $clone = $("div[name='template']").last().clone();
$clone.removeClass("hidden");
$clone.attr('name','boostgroup');
$clone.insertBefore("#addboostgroup");
$clone.find('.bootstrap-select').replaceWith(function() { return $('select', this); });
$clone.find('select').selectpicker('val', '');
$("select[name='tempboostgroup[]']").last().attr('name', 'boostgroup[]');
$("input[name='tempboostfactor[]']").last().attr('name', 'boostfactor[]');
$("input[name='tempboostduration[]']").last().attr('name', 'boostduration[]');
$('.delete').removeClass("hidden");
if (document.contains(document.getElementById("noentry"))) {
document.getElementById("noentry").remove();
}
$clone.find('.bootstrap-touchspin').replaceWith(function() { return $('input', this); });;
$clone.find('.boostfactor').TouchSpin({min: 0,max: 999999999,decimals: 9,step: 0.000000001,verticalbuttons: true,prefix: '<i class="fas fa-times"></i>:'});
$clone.find('.boostduration').TouchSpin({min: 1,max: 999999999,verticalbuttons: true,prefix: 'Sec.:'});
};
$(document).on("click", ".delete", function(){
$(this).parent().remove();
});
$('#switchexpert1').on('switchChange.bootstrapSwitch', function() {
document.getElementById("new").classList.add("hidden");
document.getElementById("old").classList.remove("hidden");
$('#switchexpert2').bootstrapSwitch('state', true, false);
});
$('#switchexpert2').on('switchChange.bootstrapSwitch', function() {
document.getElementById("new").classList.remove("hidden");
document.getElementById("old").classList.add("hidden");
$('#switchexpert1').bootstrapSwitch('state', false, false);
});
</script>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,342 +1,299 @@
<?PHP
require_once('_preload.php');
function getlog($cfg,$number_lines,$filters,$filter2,$inactivefilter = NULL) {
$lines=array();
if(file_exists($cfg['logs_path']."ranksystem.log")) {
$fp = fopen($cfg['logs_path']."ranksystem.log", "r");
$buffer=array();
while($line = fgets($fp, 4096)) {
array_push($buffer, $line);
try {
$number_lines = 20;
if (isset($_POST['number'])) {
if($_POST['number'] == 20) {
$number_lines = 20;
} elseif($_POST['number'] == 50) {
$number_lines = 50;
} elseif($_POST['number'] == 100) {
$number_lines = 100;
} elseif($_POST['number'] == 200) {
$number_lines = 200;
} elseif($_POST['number'] == 500) {
$number_lines = 500;
} elseif($_POST['number'] == 2000) {
$number_lines = 2000;
} elseif($_POST['number'] == 9999) {
$number_lines = 9999;
} else {
$number_lines = 20;
}
fclose($fp);
$buffer = array_reverse($buffer);
$lastfilter = 'init';
foreach($buffer as $line) {
if(substr($line, 0, 2) != "20" && in_array($lastfilter, $filters)) {
array_push($lines, $line);
if (count($lines)>$number_lines) {
break;
}
continue;
$_SESSION[$rspathhex.'number_lines'] = $number_lines;
} elseif (isset($_SESSION[$rspathhex.'number_lines'])) {
$number_lines = $_SESSION[$rspathhex.'number_lines'];
}
if(isset($_SESSION[$rspathhex.'logfilter2'])) {
$filter2 = $_SESSION[$rspathhex.'logfilter2'];
} else {
$filter2 = '';
}
$filters = '';
$inactivefilter = '';
if(isset($_POST['logfilter']) && in_array('critical', $_POST['logfilter'])) {
$filters .= "CRITICAL,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "CRITICAL,";
}
if(isset($_POST['logfilter']) && in_array('error', $_POST['logfilter'])) {
$filters .= "ERROR,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "ERROR,";
}
if(isset($_POST['logfilter']) && in_array('warning', $_POST['logfilter'])) {
$filters .= "WARNING,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "WARNING,";
}
if(isset($_POST['logfilter']) && in_array('notice', $_POST['logfilter'])) {
$filters .= "NOTICE,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "NOTICE,";
}
if(isset($_POST['logfilter']) && in_array('info', $_POST['logfilter'])) {
$filters .= "INFO,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "INFO,";
}
if(isset($_POST['logfilter']) && in_array('debug', $_POST['logfilter'])) {
$filters .= "DEBUG,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "DEBUG,";
}
if(isset($_POST['logfilter'][0])) {
$filter2 = htmlspecialchars($_POST['logfilter'][0]);
$_SESSION[$rspathhex.'logfilter2'] = $filter2;
}
if($filters != '') {
$_SESSION[$rspathhex.'logfilter'] = $filters;
}
if($inactivefilter != '') {
$_SESSION[$rspathhex.'inactivefilter'] = $inactivefilter;
}
if(isset($_SESSION[$rspathhex.'inactivefilter']) && $_SESSION[$rspathhex.'inactivefilter'] != NULL) {
$inactivefilter = explode(',', $_SESSION[$rspathhex.'inactivefilter']);
}
if (!isset($_SESSION[$rspathhex.'logfilter'])) {
$_SESSION[$rspathhex.'logfilter'] = "CRITICAL,ERROR,WARNING,NOTICE,INFO,DEBUG,";
}
$filters = explode(',', ($_SESSION[$rspathhex.'logfilter'].'NONE'));
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if ((isset($_POST['start']) || isset($_POST['stop']) || isset($_POST['restart']) || isset($_POST['logfilter'])) && !isset($db_csrf[$_POST['csrf_token']])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
$logoutput = getlog($cfg,$number_lines,$filters,$filter2,$inactivefilter);
if (isset($_POST['start']) && isset($db_csrf[$_POST['csrf_token']])) {
if(!is_writable($cfg['logs_path'])) {
$err_msg = "!!!! Logs folder is not writable !!!!<br>Cancel start request!"; $err_lvl = 3;
} else {
$output = '';
exec($phpcommand." ".substr(__DIR__,0,-12)."worker.php start", $resultexec);
if (file_exists($cfg['logs_path']."autostart_deactivated")) {
unlink($cfg['logs_path']."autostart_deactivated");
}
foreach($filters as $filter) {
if(($filter != NULL && strstr($line, $filter) && $filter2 == NULL) || ($filter2 != NULL && strstr($line, $filter2) && $filter != NULL && strstr($line, $filter))) {
if($filter == "CRITICAL" || $filter == "ERROR") {
array_push($lines, '<span class="text-danger">'.$line.'</span>');
} else {
array_push($lines, $line);
}
$lastfilter = $filter;
if (count($lines)>$number_lines) {
break 2;
}
break;
} elseif($inactivefilter != NULL) {
foreach($inactivefilter as $defilter) {
if($defilter != NULL && strstr($line, $defilter)) {
$lastfilter = $defilter;
}
}
}
foreach($resultexec as $line) $output .= print_r($line, true).'<br>';
$err_msg = $lang['wibot2'].'<br><br>Result of worker.php:<br><pre>'.$output.'</pre>';
$err_lvl = 1;
usleep(80000);
$logoutput = getlog($cfg,$number_lines,$filters,$filter2,$inactivefilter);
}
}
if (isset($_POST['stop']) && isset($db_csrf[$_POST['csrf_token']])) {
if(!is_writable($cfg['logs_path'])) {
$err_msg = "!!!! Logs folder is not writable !!!!<br>Cancel stop request!"; $err_lvl = 3;
} else {
$output = '';
exec($phpcommand." ".substr(__DIR__,0,-12)."worker.php stop", $resultexec);
file_put_contents($cfg['logs_path']."autostart_deactivated","");
foreach($resultexec as $line) $output .= print_r($line, true).'<br>';
$err_msg = $lang['wibot1'].'<br><br>Result of worker.php:<br><pre>'.$output.'</pre>';;
$err_lvl = 1;
usleep(80000);
$logoutput = getlog($cfg,$number_lines,$filters,$filter2,$inactivefilter);
}
}
if (isset($_POST['restart']) && isset($db_csrf[$_POST['csrf_token']])) {
if(!is_writable($cfg['logs_path'])) {
$err_msg = "!!!! Logs folder is not writable !!!!<br>Cancel restart request!"; $err_lvl = 3;
} else {
$output = '';
exec($phpcommand." ".substr(__DIR__,0,-12)."worker.php restart", $resultexec);
if (file_exists($cfg['logs_path']."autostart_deactivated")) {
unlink($cfg['logs_path']."autostart_deactivated");
}
}
} else {
$lines[] = "No log entry found...\n";
$lines[] = "The logfile will be created with next startup.\n";
}
return $lines;
}
$number_lines = 20;
if (isset($_POST['number'])) {
if($_POST['number'] == 20) {
$number_lines = 20;
} elseif($_POST['number'] == 50) {
$number_lines = 50;
} elseif($_POST['number'] == 100) {
$number_lines = 100;
} elseif($_POST['number'] == 200) {
$number_lines = 200;
} elseif($_POST['number'] == 500) {
$number_lines = 500;
} elseif($_POST['number'] == 2000) {
$number_lines = 2000;
} elseif($_POST['number'] == 9999) {
$number_lines = 9999;
} else {
$number_lines = 20;
}
$_SESSION[$rspathhex.'number_lines'] = $number_lines;
} elseif (isset($_SESSION[$rspathhex.'number_lines'])) {
$number_lines = $_SESSION[$rspathhex.'number_lines'];
}
if(isset($_SESSION[$rspathhex.'logfilter2'])) {
$filter2 = $_SESSION[$rspathhex.'logfilter2'];
} else {
$filter2 = '';
}
$filters = '';
$inactivefilter = '';
if(isset($_POST['logfilter']) && in_array('critical', $_POST['logfilter'])) {
$filters .= "CRITICAL,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "CRITICAL,";
}
if(isset($_POST['logfilter']) && in_array('error', $_POST['logfilter'])) {
$filters .= "ERROR,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "ERROR,";
}
if(isset($_POST['logfilter']) && in_array('warning', $_POST['logfilter'])) {
$filters .= "WARNING,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "WARNING,";
}
if(isset($_POST['logfilter']) && in_array('notice', $_POST['logfilter'])) {
$filters .= "NOTICE,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "NOTICE,";
}
if(isset($_POST['logfilter']) && in_array('info', $_POST['logfilter'])) {
$filters .= "INFO,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "INFO,";
}
if(isset($_POST['logfilter']) && in_array('debug', $_POST['logfilter'])) {
$filters .= "DEBUG,";
} elseif(isset($_POST['logfilter'])) {
$inactivefilter .= "DEBUG,";
}
if(isset($_POST['logfilter'][0])) {
$filter2 = htmlspecialchars($_POST['logfilter'][0]);
$_SESSION[$rspathhex.'logfilter2'] = $filter2;
}
if($filters != '') {
$_SESSION[$rspathhex.'logfilter'] = $filters;
}
if($inactivefilter != '') {
$_SESSION[$rspathhex.'inactivefilter'] = $inactivefilter;
}
if(isset($_SESSION[$rspathhex.'inactivefilter']) && $_SESSION[$rspathhex.'inactivefilter'] != NULL) {
$inactivefilter = explode(',', $_SESSION[$rspathhex.'inactivefilter']);
}
if (!isset($_SESSION[$rspathhex.'logfilter'])) {
$_SESSION[$rspathhex.'logfilter'] = "CRITICAL,ERROR,WARNING,NOTICE,INFO,DEBUG,";
}
$filters = explode(',', ($_SESSION[$rspathhex.'logfilter'].'NONE'));
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if ((isset($_POST['start']) || isset($_POST['stop']) || isset($_POST['restart']) || isset($_POST['logfilter'])) && !isset($db_csrf[$_POST['csrf_token']])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
$logoutput = getlog($cfg,$number_lines,$filters,$filter2,$inactivefilter);
if (isset($_POST['start']) && isset($db_csrf[$_POST['csrf_token']])) {
if(!is_writable($cfg['logs_path'])) {
$err_msg = "!!!! Logs folder is not writable !!!!<br>Cancel start request!"; $err_lvl = 3;
} else {
$output = '';
exec($phpcommand." ".substr(__DIR__,0,-12)."worker.php start", $resultexec);
if (file_exists($cfg['logs_path']."autostart_deactivated")) {
unlink($cfg['logs_path']."autostart_deactivated");
foreach($resultexec as $line) $output .= print_r($line, true).'<br>';
$err_msg = $lang['wibot3'].'<br><br>Result of worker.php:<br><pre>'.$output.'</pre>';
$err_lvl = 1;
usleep(80000);
$logoutput = getlog($cfg,$number_lines,$filters,$filter2,$inactivefilter);
}
foreach($resultexec as $line) $output .= print_r($line, true).'<br>';
$err_msg = $lang['wibot2'].'<br><br>Result of worker.php:<br><pre>'.$output.'</pre>';
$err_lvl = 1;
usleep(80000);
$logoutput = getlog($cfg,$number_lines,$filters,$filter2,$inactivefilter);
}
}
if (isset($_POST['stop']) && isset($db_csrf[$_POST['csrf_token']])) {
if(!is_writable($cfg['logs_path'])) {
$err_msg = "!!!! Logs folder is not writable !!!!<br>Cancel start request!"; $err_lvl = 3;
} else {
$output = '';
exec($phpcommand." ".substr(__DIR__,0,-12)."worker.php stop", $resultexec);
file_put_contents(substr(__DIR__,0,-12)."logs/autostart_deactivated","");
foreach($resultexec as $line) $output .= print_r($line, true).'<br>';
$err_msg = $lang['wibot1'].'<br><br>Result of worker.php:<br><pre>'.$output.'</pre>';;
$err_lvl = 1;
usleep(80000);
$logoutput = getlog($cfg,$number_lines,$filters,$filter2,$inactivefilter);
$disabled = '';
if($cfg['teamspeak_host_address'] == NULL || $cfg['teamspeak_query_port'] == NULL || $cfg['teamspeak_voice_port'] == NULL || $cfg['teamspeak_query_user'] == NULL || $cfg['teamspeak_query_pass'] == NULL || $cfg['teamspeak_query_nickname'] == NULL || $cfg['rankup_definition'] == NULL || $cfg['logs_path'] == NULL) {
$disabled = 1;
$err_msg = $lang['wibot9'];
$err_lvl = 2;
}
}
if (isset($_POST['restart']) && isset($db_csrf[$_POST['csrf_token']])) {
if(!is_writable($cfg['logs_path'])) {
$err_msg = "!!!! Logs folder is not writable !!!!<br>Cancel restart request!"; $err_lvl = 3;
} else {
$output = '';
exec($phpcommand." ".substr(__DIR__,0,-12)."worker.php restart", $resultexec);
if (file_exists($cfg['logs_path']."autostart_deactivated")) {
unlink($cfg['logs_path']."autostart_deactivated");
}
foreach($resultexec as $line) $output .= print_r($line, true).'<br>';
$err_msg = $lang['wibot3'].'<br><br>Result of worker.php:<br><pre>'.$output.'</pre>';
$err_lvl = 1;
usleep(80000);
$logoutput = getlog($cfg,$number_lines,$filters,$filter2,$inactivefilter);
}
}
$disabled = '';
if($cfg['teamspeak_host_address'] == NULL || $cfg['teamspeak_query_port'] == NULL || $cfg['teamspeak_voice_port'] == NULL || $cfg['teamspeak_query_user'] == NULL || $cfg['teamspeak_query_pass'] == NULL || $cfg['teamspeak_query_nickname'] == NULL || $cfg['rankup_definition'] == NULL || $cfg['logs_path'] == NULL) {
$disabled = 1;
$err_msg = $lang['wibot9'];
$err_lvl = 2;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?PHP echo $lang['wibot4']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="start" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">&nbsp;</div>
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="start"<?PHP if($disabled == 1) echo " disabled"; ?>>
<i class="fas fa-power-off"></i>&nbsp;<?PHP echo $lang['wibot5']; ?>
</button>
<div class="col-lg-12">
<h1 class="page-header">
<?PHP echo $lang['wibot4']; ?>
</h1>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<form class="form-horizontal" name="stop" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="stop">
<i class="fas fa-times"></i>&nbsp;<?PHP echo $lang['wibot6']; ?>
</button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<form class="form-horizontal" name="restart" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="restart"<?PHP if($disabled == 1) echo " disabled"; ?>>
<i class="fas fa-sync"></i>&nbsp;<?PHP echo $lang['wibot7']; ?>
</button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
<div class="row">
<div class="col-lg-2">
<h4>
<?PHP echo $lang['wibot8']; ?>
</h4>
</div>
<form class="form-horizontal" name="logfilter" method="POST">
<form class="form-horizontal" name="start" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="col-lg-2">
<div class="col-sm-12">
<?PHP if($filter2!=NULL) { ?>
<input type="text" class="form-control" name="logfilter[]" value="<?PHP echo $filter2; ?>" data-switch-no-init onchange="this.form.submit();">
<?PHP } else { ?>
<input type="text" class="form-control" name="logfilter[]" placeholder="filter the log entries..." data-switch-no-init onchange="this.form.submit();">
<?PHP } ?>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="start"<?PHP if($disabled == 1) echo " disabled"; ?>>
<i class="fas fa-power-off"></i>&nbsp;<?PHP echo $lang['wibot5']; ?>
</button>
</div>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="critical" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('CRITICAL', $filters)) { echo "checked"; } ?>
>Critical</label>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="error" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('ERROR', $filters)) { echo "checked"; } ?>
>Error</label>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="warning" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('WARNING', $filters)) { echo "checked"; } ?>
>Warning</label>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="notice" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('NOTICE', $filters)) { echo "checked"; } ?>
>Notice</label>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="info" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('INFO', $filters)) { echo "checked"; } ?>
>Info</label>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="debug" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('DEBUG', $filters)) { echo "checked"; } ?>
>Debug</label>
</div>
</div>
<div class="col-lg-2">
<div class="col-sm-8 pull-left">
<select class="selectpicker show-tick form-control" id="number" name="number" onchange="this.form.submit();">
<?PHP
echo '<option value="20"'; if($number_lines=="20") echo " selected=selected"; echo '>20</option>';
echo '<option value="50"'; if($number_lines=="50") echo " selected=selected"; echo '>50</option>';
echo '<option value="100"'; if($number_lines=="100") echo " selected=selected"; echo '>100</option>';
echo '<option value="200"'; if($number_lines=="200") echo " selected=selected"; echo '>200</option>';
echo '<option value="500"'; if($number_lines=="500") echo " selected=selected"; echo '>500</option>';
echo '<option value="2000"'; if($number_lines=="2000") echo " selected=selected"; echo '>2000</option>';
echo '<option value="9999"'; if($number_lines=="9999") echo " selected=selected"; echo '>9999</option>';
?>
</select>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
<div class="row">
<div class="col-lg-12">
<pre><?PHP foreach ($logoutput as $line) { echo $line; } ?></pre>
<form class="form-horizontal" name="stop" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="stop">
<i class="fas fa-times"></i>&nbsp;<?PHP echo $lang['wibot6']; ?>
</button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<form class="form-horizontal" name="restart" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="restart"<?PHP if($disabled == 1) echo " disabled"; ?>>
<i class="fas fa-sync"></i>&nbsp;<?PHP echo $lang['wibot7']; ?>
</button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
<div class="row">
<div class="col-lg-2">
<h4>
<?PHP echo $lang['wibot8']; ?>
</h4>
</div>
<form class="form-horizontal" name="logfilter" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="col-lg-2">
<div class="col-sm-12">
<?PHP if($filter2!=NULL) { ?>
<input type="text" class="form-control" name="logfilter[]" value="<?PHP echo $filter2; ?>" data-switch-no-init onchange="this.form.submit();">
<?PHP } else { ?>
<input type="text" class="form-control" name="logfilter[]" placeholder="filter the log entries..." data-switch-no-init onchange="this.form.submit();">
<?PHP } ?>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="critical" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('CRITICAL', $filters)) { echo "checked"; } ?>
>Critical</label>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="error" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('ERROR', $filters)) { echo "checked"; } ?>
>Error</label>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="warning" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('WARNING', $filters)) { echo "checked"; } ?>
>Warning</label>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="notice" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('NOTICE', $filters)) { echo "checked"; } ?>
>Notice</label>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="info" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('INFO', $filters)) { echo "checked"; } ?>
>Info</label>
</div>
</div>
<div class="col-lg-1">
<div class="checkbox">
<label><input class="switch-create-destroy" type="checkbox" name="logfilter[]" value="debug" data-switch-no-init onchange="this.form.submit();"
<?PHP if(in_array('DEBUG', $filters)) { echo "checked"; } ?>
>Debug</label>
</div>
</div>
<div class="col-lg-2">
<div class="col-sm-8 pull-left">
<select class="selectpicker show-tick form-control" id="number" name="number" onchange="this.form.submit();">
<?PHP
echo '<option value="20"'; if($number_lines=="20") echo " selected=selected"; echo '>20</option>';
echo '<option value="50"'; if($number_lines=="50") echo " selected=selected"; echo '>50</option>';
echo '<option value="100"'; if($number_lines=="100") echo " selected=selected"; echo '>100</option>';
echo '<option value="200"'; if($number_lines=="200") echo " selected=selected"; echo '>200</option>';
echo '<option value="500"'; if($number_lines=="500") echo " selected=selected"; echo '>500</option>';
echo '<option value="2000"'; if($number_lines=="2000") echo " selected=selected"; echo '>2000</option>';
echo '<option value="9999"'; if($number_lines=="9999") echo " selected=selected"; echo '>9999</option>';
?>
</select>
</div>
</div>
</form>
</div>
<div class="row">
<div class="col-lg-12">
<pre><?PHP foreach ($logoutput as $line) { echo $line; } ?></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,74 +1,77 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['changepw']) && isset($db_csrf[$_POST['csrf_token']])) {
if (!password_verify($_POST['oldpwd'], $cfg['webinterface_pass'])) {
$err_msg = $lang['wichpw1']; $err_lvl = 3;
} else {
$cfg['webinterface_pass'] = password_hash($_POST['newpwd1'], PASSWORD_DEFAULT);
if ($_POST['newpwd1'] != $_POST['newpwd2'] || $_POST['newpwd1'] == NULL) {
$err_msg = $lang['wichpw2']; $err_lvl = 3;
} elseif($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_pass','{$cfg['webinterface_pass']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} else {
enter_logfile($cfg,3,sprintf($lang['wichpw3'],getclientip()));
$err_msg = $lang['wisvsuc']; $err_lvl = NULL;
}
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
} elseif(isset($_POST['changepw'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div id="login-overlay" class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel"><?PHP echo $lang['wichpw4'].' - '.$lang['wi']; ?></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-xs-12">
<form id="resetForm" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="form-group">
<label for="password" class="control-label"><?PHP echo $lang['pass3']; ?>:</label>
<div class="input-group-justified">
<input type="password" class="form-control" name="oldpwd" data-toggle="password" data-placement="before" placeholder="<?PHP echo $lang['pass3']; ?>">
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['changepw']) && isset($db_csrf[$_POST['csrf_token']])) {
if (!password_verify($_POST['oldpwd'], $cfg['webinterface_pass'])) {
$err_msg = $lang['wichpw1']; $err_lvl = 3;
} else {
$cfg['webinterface_pass'] = password_hash($_POST['newpwd1'], PASSWORD_DEFAULT);
if ($_POST['newpwd1'] != $_POST['newpwd2'] || $_POST['newpwd1'] == NULL) {
$err_msg = $lang['wichpw2']; $err_lvl = 3;
} elseif($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_pass','{$cfg['webinterface_pass']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} else {
enter_logfile($cfg,3,sprintf($lang['wichpw3'],getclientip()));
$err_msg = $lang['wisvsuc']; $err_lvl = NULL;
}
}
} elseif(isset($_POST['changepw'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div id="login-overlay" class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel"><?PHP echo $lang['wichpw4'].' - '.$lang['wi']; ?></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-xs-12">
<form id="resetForm" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="form-group">
<label for="password" class="control-label"><?PHP echo $lang['pass3']; ?>:</label>
<div class="input-group-justified">
<input type="password" class="form-control" name="oldpwd" data-toggle="password" data-placement="before" placeholder="<?PHP echo $lang['pass3']; ?>">
</div>
</div>
</div>
<p>&nbsp;</p>
<div class="form-group">
<label for="password" class="control-label"><?PHP echo $lang['pass4']; ?>:</label>
<div class="input-group-justified">
<input type="password" class="form-control" name="newpwd1" data-toggle="password" data-placement="before" placeholder="<?PHP echo $lang['pass4']; ?>">
<p>&nbsp;</p>
<div class="form-group">
<label for="password" class="control-label"><?PHP echo $lang['pass4']; ?>:</label>
<div class="input-group-justified">
<input type="password" class="form-control" name="newpwd1" data-toggle="password" data-placement="before" placeholder="<?PHP echo $lang['pass4']; ?>">
</div>
</div>
</div>
<div class="form-group">
<label for="password" class="control-label"><?PHP echo $lang['pass4']; ?> (<?PHP echo $lang['repeat']; ?>):</label>
<div class="input-group-justified">
<input type="password" class="form-control" name="newpwd2" data-toggle="password" data-placement="before" placeholder="<?PHP echo $lang['pass4']; ?> (<?PHP echo $lang['repeat']; ?>)">
<div class="form-group">
<label for="password" class="control-label"><?PHP echo $lang['pass4']; ?> (<?PHP echo $lang['repeat']; ?>):</label>
<div class="input-group-justified">
<input type="password" class="form-control" name="newpwd2" data-toggle="password" data-placement="before" placeholder="<?PHP echo $lang['pass4']; ?> (<?PHP echo $lang['repeat']; ?>)">
</div>
</div>
</div>
<br>
<p>
<button type="submit" class="btn btn-success btn-block" name="changepw"><i class="fas fa-save"></i>&nbsp;<?PHP echo $lang['wichpw4']; ?></button>
</p>
</form>
<br>
<p>
<button type="submit" class="btn btn-success btn-block" name="changepw"><i class="fas fa-save"></i>&nbsp;<?PHP echo $lang['wichpw4']; ?></button>
</p>
</form>
</div>
</div>
</div>
</div>
@@ -76,6 +79,8 @@ if (isset($_POST['changepw']) && isset($db_csrf[$_POST['csrf_token']])) {
</div>
</div>
</div>
</div>
</body>
</html>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,122 +1,127 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$cfg['rankup_time_assess_mode'] = $_POST['rankup_time_assess_mode'];
$cfg['rankup_ignore_idle_time'] = $_POST['rankup_ignore_idle_time'];
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_time_assess_mode','{$cfg['rankup_time_assess_mode']}'),('rankup_ignore_idle_time','{$cfg['rankup_ignore_idle_time']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = NULL;
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['winav3'],' ',$lang['wihlset']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$cfg['rankup_time_assess_mode'] = $_POST['rankup_time_assess_mode'];
$cfg['rankup_ignore_idle_time'] = $_POST['rankup_ignore_idle_time'];
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_time_assess_mode','{$cfg['rankup_time_assess_mode']}'),('rankup_ignore_idle_time','{$cfg['rankup_ignore_idle_time']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = NULL;
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['winav3'],' ',$lang['wihlset']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-6">
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisupidledesc"><?php echo $lang['wisupidle']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="rankup_time_assess_mode">
<?PHP
echo '<option data-icon="fas fa-microphone-slash" value="0"'; if($cfg['rankup_time_assess_mode']=="0") echo " selected=selected"; echo '>&nbsp;',$lang['wishcolot'],'</option>';
echo '<option data-icon="fas fa-microphone" value="1"'; if($cfg['rankup_time_assess_mode']=="1") echo " selected=selected"; echo '>&nbsp;&nbsp;',$lang['wishcolat'],'</option>';
?>
</select>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiignidledesc"><?php echo $lang['wiignidle']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="rankup_ignore_idle_time" value="<?php echo $cfg['rankup_ignore_idle_time']; ?>">
<script>
$("input[name='rankup_ignore_idle_time']").TouchSpin({
min: 0,
max: 65535,
verticalbuttons: true,
prefix: 'Sec.:'
});
</script>
</div>
</div>
</div>
</div>
<div class="col-md-3"></div>
<div class="col-md-6">
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisupidledesc"><?php echo $lang['wisupidle']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="rankup_time_assess_mode">
<?PHP
echo '<option data-icon="fas fa-microphone-slash" value="0"'; if($cfg['rankup_time_assess_mode']=="0") echo " selected=selected"; echo '>&nbsp;',$lang['wishcolot'],'</option>';
echo '<option data-icon="fas fa-microphone" value="1"'; if($cfg['rankup_time_assess_mode']=="1") echo " selected=selected"; echo '>&nbsp;&nbsp;',$lang['wishcolat'],'</option>';
?>
</select>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiignidledesc"><?php echo $lang['wiignidle']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="rankup_ignore_idle_time" value="<?php echo $cfg['rankup_ignore_idle_time']; ?>">
<script>
$("input[name='rankup_ignore_idle_time']").TouchSpin({
min: 0,
max: 65535,
verticalbuttons: true,
prefix: 'Sec.:'
});
</script>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
</div>
<div class="col-md-3"></div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wisupidledesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wisupidle']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wisupidledesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wisupidledesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wisupidle']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wisupidledesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiignidledesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiignidle']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiignidledesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<div class="modal fade" id="wiignidledesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiignidle']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiignidledesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,242 +1,247 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$newconfig='<?php
$db[\'type\']=\''.$_POST['dbtype'].'\';
$db[\'host\']=\''.$_POST['dbhost'].'\';
$db[\'user\']=\''.$_POST['dbuser'].'\';
$db[\'pass\']=\''.$_POST['dbpass'].'\';
$db[\'dbname\']=\''.$_POST['dbname'].'\';
?>';
$dbserver = $_POST['dbtype'].':host='.$_POST['dbhost'].';dbname='.$_POST['dbname'].';charset=utf8mb4';
try {
$mysqlcon = new PDO($dbserver, $_POST['dbuser'], $_POST['dbpass']);
$handle=fopen('../other/dbconfig.php','w');
if(!fwrite($handle,$newconfig))
{
$err_msg = sprintf($lang['widbcfgerr']);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button
type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = 0;
$db['type'] = $_POST['dbtype'];
$db['host'] = $_POST['dbhost'];
$dbname = $_POST['dbname'];
$db['user'] = $_POST['dbuser'];
$db['pass'] = $_POST['dbpass'];
}
fclose($handle);
} catch (PDOException $e) {
$err_msg = sprintf($lang['widbcfgerr']);
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['winav2'],' ',$lang['wihlset']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" data-toggle="validator" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$newconfig='<?php
$db[\'type\']=\''.$_POST['dbtype'].'\';
$db[\'host\']=\''.$_POST['dbhost'].'\';
$db[\'user\']=\''.$_POST['dbuser'].'\';
$db[\'pass\']=\''.$_POST['dbpass'].'\';
$db[\'dbname\']=\''.$_POST['dbname'].'\';
?>';
$dbserver = $_POST['dbtype'].':host='.$_POST['dbhost'].';dbname='.$_POST['dbname'].';charset=utf8mb4';
try {
$mysqlcon = new PDO($dbserver, $_POST['dbuser'], $_POST['dbpass']);
$handle=fopen('../other/dbconfig.php','w');
if(!fwrite($handle,$newconfig))
{
$err_msg = sprintf($lang['widbcfgerr']);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button
type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = 0;
$db['type'] = $_POST['dbtype'];
$db['host'] = $_POST['dbhost'];
$dbname = $_POST['dbname'];
$db['user'] = $_POST['dbuser'];
$db['pass'] = $_POST['dbpass'];
}
fclose($handle);
} catch (PDOException $e) {
$err_msg = sprintf($lang['widbcfgerr']);
$err_lvl = 3;
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-md-3">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['winav2'],' ',$lang['wihlset']; ?>
</h1>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbtypedesc"><?php echo $lang['isntwidbtype']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control required" id="basic" name="dbtype" required>
<option disabled value=""> -- select database -- </option>
<option data-divider="true">&nbsp;</option>
<?PHP
echo '<option data-subtext="Cubrid" value="cubrid"'; if($db['type']=="cubrid") echo " selected=selected"; echo '>cubrid</option>';
echo '<option data-subtext="FreeTDS / Microsoft SQL Server / Sybase" value="dblib"'; if($db['type']=="dblib") echo " selected=selected"; echo '>dblib</option>';
echo '<option data-subtext="Firebird/Interbase 6" value="firebird"'; if($db['type']=="firebird") echo " selected=selected"; echo '>firebird</option>';
echo '<option data-subtext="IBM DB2" value="ibm"'; if($db['type']=="ibm") echo " selected=selected"; echo '>ibm</option>';
echo '<option data-subtext="IBM Informix Dynamic Server" value="informix"'; if($db['type']=="informix") echo " selected=selected"; echo '>informix</option>';
echo '<option data-subtext="MySQL 3.x/4.x/5.x [recommended]" value="mysql"'; if($db['type']=="mysql") echo " selected=selected"; echo '>mysql</option>';
echo '<option data-subtext="Oracle Call Interface" value="oci"'; if($db['type']=="oci") echo " selected=selected"; echo '>oci</option>';
echo '<option data-subtext="ODBC v3 (IBM DB2, unixODBC und win32 ODBC)" value="odbc"'; if($db['type']=="odbc") echo " selected=selected"; echo '>odbc</option>';
echo '<option data-subtext="PostgreSQL" value="pgsql"'; if($db['type']=="pgsql") echo " selected=selected"; echo '>pgsql</option>';
echo '<option data-subtext="SQLite 3 und SQLite 2" value="sqlite"'; if($db['type']=="sqlite") echo " selected=selected"; echo '>sqlite</option>';
echo '<option data-subtext="Microsoft SQL Server / SQL Azure" value="sqlsrv"'; if($db['type']=="sqlsrv") echo " selected=selected"; echo '>sqlsrv</option>';
echo '<option data-subtext="4D" value="4d"'; if($db['type']=="4d") echo " selected=selected"; echo '>4d</option>';
?>
</select>
</div>
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbhostdesc"><?php echo $lang['isntwidbhost']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control required" name="dbhost" value="<?php echo $db['host']; ?>" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbnamedesc"><?php echo $lang['isntwidbname']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<input type="text" data-pattern="^([A-Za-z0-9$_]){1,64}$" data-error="Please do not use special characters or more then 64 characters inside the database name!" class="form-control required" name="dbname" value="<?php echo $dbname; ?>" required>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
<form class="form-horizontal" data-toggle="validator" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-3">
</div>
<div class="row">&nbsp;</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbusrdesc"><?php echo $lang['isntwidbusr']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<input type="text" data-pattern="^[^&quot;'\\-\s]+$" data-error="Please do not use one of the following special characters: ' \ &quot; - also no whitespace and do not user more then 64 characters inside the database user!" class="form-control required" name="dbuser" value="<?php echo $db['user']; ?>" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbpassdesc"><?php echo $lang['isntwidbpass']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<div class="input-group">
<span id="toggle-password2" class="input-group-addon" onclick="togglepwd()" style="cursor: pointer; pointer-events: all;"><svg class="svg-inline--fa fa-eye fa-w-18" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="eye" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg=""><path fill="currentColor" d="M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"></path></svg></span>
<span id="toggle-password1" class="input-group-addon" onclick="togglepwd()" style="cursor: pointer; pointer-events: all; display: none;"><svg class="svg-inline--fa fa-eye fa-w-18" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="eye" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg=""><path fill="currentColor" d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"></path></svg></span>
<input id="password" type="password" class="form-control required" name="dbpass" value="<?php echo $db['pass']; ?>" required>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbtypedesc"><?php echo $lang['isntwidbtype']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control required" id="basic" name="dbtype" required>
<option disabled value=""> -- select database -- </option>
<option data-divider="true">&nbsp;</option>
<?PHP
echo '<option data-subtext="Cubrid" value="cubrid"'; if($db['type']=="cubrid") echo " selected=selected"; echo '>cubrid</option>';
echo '<option data-subtext="FreeTDS / Microsoft SQL Server / Sybase" value="dblib"'; if($db['type']=="dblib") echo " selected=selected"; echo '>dblib</option>';
echo '<option data-subtext="Firebird/Interbase 6" value="firebird"'; if($db['type']=="firebird") echo " selected=selected"; echo '>firebird</option>';
echo '<option data-subtext="IBM DB2" value="ibm"'; if($db['type']=="ibm") echo " selected=selected"; echo '>ibm</option>';
echo '<option data-subtext="IBM Informix Dynamic Server" value="informix"'; if($db['type']=="informix") echo " selected=selected"; echo '>informix</option>';
echo '<option data-subtext="MySQL 3.x/4.x/5.x [recommended]" value="mysql"'; if($db['type']=="mysql") echo " selected=selected"; echo '>mysql</option>';
echo '<option data-subtext="Oracle Call Interface" value="oci"'; if($db['type']=="oci") echo " selected=selected"; echo '>oci</option>';
echo '<option data-subtext="ODBC v3 (IBM DB2, unixODBC und win32 ODBC)" value="odbc"'; if($db['type']=="odbc") echo " selected=selected"; echo '>odbc</option>';
echo '<option data-subtext="PostgreSQL" value="pgsql"'; if($db['type']=="pgsql") echo " selected=selected"; echo '>pgsql</option>';
echo '<option data-subtext="SQLite 3 und SQLite 2" value="sqlite"'; if($db['type']=="sqlite") echo " selected=selected"; echo '>sqlite</option>';
echo '<option data-subtext="Microsoft SQL Server / SQL Azure" value="sqlsrv"'; if($db['type']=="sqlsrv") echo " selected=selected"; echo '>sqlsrv</option>';
echo '<option data-subtext="4D" value="4d"'; if($db['type']=="4d") echo " selected=selected"; echo '>4d</option>';
?>
</select>
</div>
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbhostdesc"><?php echo $lang['isntwidbhost']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control required" name="dbhost" value="<?php echo $db['host']; ?>" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbnamedesc"><?php echo $lang['isntwidbname']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<input type="text" data-pattern="^([A-Za-z0-9$_]){1,64}$" data-error="Please do not use special characters or more then 64 characters inside the database name!" class="form-control required" name="dbname" value="<?php echo $dbname; ?>" required>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbusrdesc"><?php echo $lang['isntwidbusr']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<input type="text" data-pattern="^[^&quot;'\\-\s]+$" data-error="Please do not use one of the following special characters: ' \ &quot; - also no whitespace and do not user more then 64 characters inside the database user!" class="form-control required" name="dbuser" value="<?php echo $db['user']; ?>" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbpassdesc"><?php echo $lang['isntwidbpass']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<div class="input-group">
<span id="toggle-password2" class="input-group-addon" onclick="togglepwd()" style="cursor: pointer; pointer-events: all;"><svg class="svg-inline--fa fa-eye fa-w-18" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="eye" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg=""><path fill="currentColor" d="M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"></path></svg></span>
<span id="toggle-password1" class="input-group-addon" onclick="togglepwd()" style="cursor: pointer; pointer-events: all; display: none;"><svg class="svg-inline--fa fa-eye fa-w-18" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="eye" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg=""><path fill="currentColor" d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"></path></svg></span>
<input id="password" type="password" class="form-control required" name="dbpass" value="<?php echo $db['pass']; ?>" required>
</div>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbtypedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbtype']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['isntwidbtypedesc'], '<a href="https://ts-ranksystem.com/#linux" target="_blank">https://ts-ranksystem.com/#linux</a>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbtypedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbtype']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['isntwidbtypedesc'], '<a href="https://ts-ranksystem.com/#linux" target="_blank">https://ts-ranksystem.com/#linux</a>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbhostdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbhost']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbhostdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbusr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbusrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbpassdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbpass']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbpassdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbnamedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbname']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbnamedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
<div class="modal fade" id="isntwidbhostdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbhost']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbhostdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbusr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbusrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbpassdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbpass']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbpassdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbnamedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbname']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbnamedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
});
</script>
</body>
</html>
});
</script>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -0,0 +1,31 @@
<?PHP
require_once('_preload.php');
try {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($db_csrf[$_GET['csrf_token']]) && isset($_GET['file']) && substr($_GET['file'],0,10) == "db_export_" && file_exists($cfg['logs_path'].$_GET['file'])) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($cfg['logs_path'].$_GET['file']).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($cfg['logs_path'].$_GET['file']));
readfile($cfg['logs_path'].$_GET['file']);
} else {
rem_session_ts3();
echo "Error on downloading file. File do not exists (anymore)? If yes, try it again. There could happened a problem with your session.";
}
?>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,226 +1,231 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($groupslist = $mysqlcon->query("SELECT * FROM `$dbname`.`groups` ORDER BY `sortid`,`sgidname` ASC")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($user_arr = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` ORDER BY `name` ASC")->fetchAll(PDO::FETCH_ASSOC)) === false) {
$err_msg = "DB Error1: ".print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$err_msg = $cfg['rankup_excepted_group_id_list'] = $cfg['rankup_excepted_unique_client_id_list'] = '';
$errcnf = 0;
$cfg['rankup_excepted_mode'] = $_POST['rankup_excepted_mode'];
if (isset($_POST['rankup_excepted_unique_client_id_list']) && $_POST['rankup_excepted_unique_client_id_list'] != NULL) {
$cfg['rankup_excepted_unique_client_id_list'] = implode(',',$_POST['rankup_excepted_unique_client_id_list']);
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['rankup_excepted_group_id_list']) && $_POST['rankup_excepted_group_id_list'] != NULL) {
$cfg['rankup_excepted_group_id_list'] = implode(',',$_POST['rankup_excepted_group_id_list']);
}
$cfg['rankup_excepted_channel_id_list'] = $_POST['rankup_excepted_channel_id_list'];
if($errcnf == 0) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_excepted_mode','{$cfg['rankup_excepted_mode']}'),('rankup_excepted_unique_client_id_list','{$cfg['rankup_excepted_unique_client_id_list']}'),('rankup_excepted_group_id_list','{$cfg['rankup_excepted_group_id_list']}'),('rankup_excepted_channel_id_list','{$cfg['rankup_excepted_channel_id_list']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($groupslist = $mysqlcon->query("SELECT * FROM `$dbname`.`groups` ORDER BY `sortid`,`sgidname` ASC")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($user_arr = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` ORDER BY `name` ASC")->fetchAll(PDO::FETCH_ASSOC)) === false) {
$err_msg = "DB Error1: ".print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$err_msg = $cfg['rankup_excepted_group_id_list'] = $cfg['rankup_excepted_unique_client_id_list'] = '';
$errcnf = 0;
$cfg['rankup_excepted_mode'] = $_POST['rankup_excepted_mode'];
if (isset($_POST['rankup_excepted_unique_client_id_list']) && $_POST['rankup_excepted_unique_client_id_list'] != NULL) {
$cfg['rankup_excepted_unique_client_id_list'] = implode(',',$_POST['rankup_excepted_unique_client_id_list']);
}
} else {
$err_msg .= "<br>".$lang['errgrpid'];
}
if (isset($_POST['rankup_excepted_group_id_list']) && $_POST['rankup_excepted_group_id_list'] != NULL) {
$cfg['rankup_excepted_group_id_list'] = implode(',',$_POST['rankup_excepted_group_id_list']);
}
$cfg['rankup_excepted_channel_id_list'] = $_POST['rankup_excepted_channel_id_list'];
if (isset($_POST['rankup_excepted_unique_client_id_list']) && $_POST['rankup_excepted_unique_client_id_list'] != NULL) {
$cfg['rankup_excepted_unique_client_id_list'] = array_flip($_POST['rankup_excepted_unique_client_id_list']);
if($errcnf == 0) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_excepted_mode','{$cfg['rankup_excepted_mode']}'),('rankup_excepted_unique_client_id_list','{$cfg['rankup_excepted_unique_client_id_list']}'),('rankup_excepted_group_id_list','{$cfg['rankup_excepted_group_id_list']}'),('rankup_excepted_channel_id_list','{$cfg['rankup_excepted_channel_id_list']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
} else {
$err_msg .= "<br>".$lang['errgrpid'];
}
if (isset($_POST['rankup_excepted_unique_client_id_list']) && $_POST['rankup_excepted_unique_client_id_list'] != NULL) {
$cfg['rankup_excepted_unique_client_id_list'] = array_flip($_POST['rankup_excepted_unique_client_id_list']);
}
if (isset($_POST['rankup_excepted_group_id_list']) && $_POST['rankup_excepted_group_id_list'] != NULL) {
$cfg['rankup_excepted_group_id_list'] = array_flip($_POST['rankup_excepted_group_id_list']);
}
$cfg['rankup_excepted_channel_id_list'] = array_flip(explode(',', $cfg['rankup_excepted_channel_id_list']));
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
if (isset($_POST['rankup_excepted_group_id_list']) && $_POST['rankup_excepted_group_id_list'] != NULL) {
$cfg['rankup_excepted_group_id_list'] = array_flip($_POST['rankup_excepted_group_id_list']);
}
$cfg['rankup_excepted_channel_id_list'] = array_flip(explode(',', $cfg['rankup_excepted_channel_id_list']));
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header"><?php echo $lang['wiexcept'],' ',$lang['wihlset']; ?></h1>
</div>
</div>
<form class="form-horizontal" data-toggle="validator" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group expertelement">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexresdesc"><?php echo $lang['wiexres']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="rankup_excepted_mode">
<?PHP
echo '<option data-icon="fas fa-stopwatch" value="0"'; if($cfg['rankup_excepted_mode']=="0") echo " selected=selected"; echo '>&nbsp;&nbsp;',$lang['wiexres1'],'</option>';
echo '<option data-icon="fas fa-pause" value="1"'; if($cfg['rankup_excepted_mode']=="1") echo " selected=selected"; echo '>&nbsp;&nbsp;',$lang['wiexres2'],'</option>';
echo '<option data-icon="fas fa-sync" value="2"'; if($cfg['rankup_excepted_mode']=="2") echo " selected=selected"; echo '>&nbsp;&nbsp;',$lang['wiexres3'],'</option>';
?>
</select>
<div class="col-lg-12">
<h1 class="page-header"><?php echo $lang['wiexcept'],' ',$lang['wihlset']; ?></h1>
</div>
</div>
<form class="form-horizontal" data-toggle="validator" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-3"></div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group expertelement">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexresdesc"><?php echo $lang['wiexres']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="rankup_excepted_mode">
<?PHP
echo '<option data-icon="fas fa-stopwatch" value="0"'; if($cfg['rankup_excepted_mode']=="0") echo " selected=selected"; echo '>&nbsp;&nbsp;',$lang['wiexres1'],'</option>';
echo '<option data-icon="fas fa-pause" value="1"'; if($cfg['rankup_excepted_mode']=="1") echo " selected=selected"; echo '>&nbsp;&nbsp;',$lang['wiexres2'],'</option>';
echo '<option data-icon="fas fa-sync" value="2"'; if($cfg['rankup_excepted_mode']=="2") echo " selected=selected"; echo '>&nbsp;&nbsp;',$lang['wiexres3'],'</option>';
?>
</select>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexuiddesc"><?php echo $lang['wiexuid']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" data-actions-box="true" data-live-search="true" multiple name="rankup_excepted_unique_client_id_list[]">
<?PHP
foreach ($user_arr as $user) {
if ($cfg['rankup_excepted_unique_client_id_list'] != NULL && array_key_exists($user['uuid'], $cfg['rankup_excepted_unique_client_id_list'])) $selected=" selected"; else $selected="";
echo '<option value="',$user['uuid'],'" data-subtext="UUID: ',$user['uuid'],'; DBID: ',$user['cldbid'],'" ',$selected,'>',htmlspecialchars($user['name']),'</option>';
}
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexgrpdesc"><?php echo $lang['wiexgrp']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker form-control" data-live-search="true" data-actions-box="true" multiple name="rankup_excepted_group_id_list[]">
<?PHP
foreach ($groupslist as $groupID => $groupParam) {
if ($cfg['rankup_excepted_group_id_list'] != NULL && array_key_exists($groupID, $cfg['rankup_excepted_group_id_list'])) $selected=" selected"; else $selected="";
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if ($groupParam['type'] == 0) $disabled=" disabled"; else $disabled="";
if ($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if ($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="&nbsp;&nbsp;<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$selected,$disabled,'></option>';
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexuiddesc"><?php echo $lang['wiexuid']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" data-actions-box="true" data-live-search="true" multiple name="rankup_excepted_unique_client_id_list[]">
<?PHP
foreach ($user_arr as $user) {
if ($cfg['rankup_excepted_unique_client_id_list'] != NULL && array_key_exists($user['uuid'], $cfg['rankup_excepted_unique_client_id_list'])) $selected=" selected"; else $selected="";
echo '<option value="',$user['uuid'],'" data-subtext="UUID: ',$user['uuid'],'; DBID: ',$user['cldbid'],'" ',$selected,'>',htmlspecialchars($user['name']),'</option>';
}
}
?>
</select>
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexgrpdesc"><?php echo $lang['wiexgrp']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker form-control" data-live-search="true" data-actions-box="true" multiple name="rankup_excepted_group_id_list[]">
<?PHP
foreach ($groupslist as $groupID => $groupParam) {
if ($cfg['rankup_excepted_group_id_list'] != NULL && array_key_exists($groupID, $cfg['rankup_excepted_group_id_list'])) $selected=" selected"; else $selected="";
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if ($groupParam['type'] == 0) $disabled=" disabled"; else $disabled="";
if ($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if ($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="&nbsp;&nbsp;<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$selected,$disabled,'></option>';
}
}
?>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexciddesc"><?php echo $lang['wiexcid']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" data-pattern="^([0-9]{1,9},)*[0-9]{1,9}$" data-error="Only use digits separated with a comma! Also must the first and last value be digit!" rows="1" name="rankup_excepted_channel_id_list" maxlength="21588"><?php if(!empty($cfg['rankup_excepted_channel_id_list'])) echo implode(',',array_flip($cfg['rankup_excepted_channel_id_list'])); ?></textarea>
<div class="help-block with-errors"></div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexciddesc"><?php echo $lang['wiexcid']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" data-pattern="^([0-9]{1,9},)*[0-9]{1,9}$" data-error="Only use digits separated with a comma! Also must the first and last value be digit!" rows="1" name="rankup_excepted_channel_id_list" maxlength="21588"><?php if(!empty($cfg['rankup_excepted_channel_id_list'])) echo implode(',',array_flip($cfg['rankup_excepted_channel_id_list'])); ?></textarea>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="col-md-3"></div>
</div>
<div class="col-md-3"></div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiexresdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexres']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexresdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiexuiddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexuid']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexuiddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiexgrpdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexgrp']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexgrpdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiexciddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexcid']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexciddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
<div class="modal fade" id="wiexresdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexres']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexresdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiexuiddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexuid']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexuiddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiexgrpdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexgrp']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexgrpdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiexciddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexcid']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexciddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
});
</script>
</body>
</html>
});
</script>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

216
webinterface/export.php Normal file
View File

@@ -0,0 +1,216 @@
<?PHP
require_once('_preload.php');
try {
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
function get_status($lang, $job_check, $check = NULL) {
$err_msg = "<b>".$lang['wihladmex']."</b>: ";
switch($job_check['database_export']['timestamp']) {
case 1:
if($check == 1) {
$err_msg .= $lang['wihladmrs16']."<br>"; break;
} else {
$err_msg .= $lang['wihladmrs1']."<br>"; break;
}
case 2:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span><br>"; break;
case 3:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span><br>"; break;
case 4:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span><br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
}
return $err_msg;
}
if($job_check['database_export']['timestamp'] != 0) {
$err_msg = '<b>'.$lang['wihladmrs'].":</b><br><br><pre>"; $err_lvl = 2;
$err_msg .= get_status($lang, $job_check);
if(in_array($job_check['database_export']['timestamp'], ["0","4"], true)) {
$err_msg .= '</pre><br>';
if($job_check['database_export']['timestamp'] == 4) {
$err_msg .= "Exported file successfully.";
if(version_compare(phpversion(), '7.2', '>=')) {
$err_msg .= "<br><u>".sprintf($lang['wihladmex2'], "</u>")."<br><pre>".$cfg['teamspeak_query_pass']."</pre>";
}
}
$err_msg .= '<br>'.sprintf($lang['wihladmrs9'], '<form class="btn-group" name="confirm" action="export.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-success btn-sm" name="confirm"><i class="fas fa-check"></i>&nbsp;', '</button></form>');
} else {
$err_msg .= '</pre><br>'.sprintf($lang['wihladmrs7'], '<form class="btn-group" name="refresh" action="export.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary btn-sm" name="refresh"><i class="fas fa-sync"></i>&nbsp;', '</button></form>').'<br><br>'.$lang['wihladmrs8'];
}
}
if (isset($_POST['confirm']) && isset($db_csrf[$_POST['csrf_token']])) {
if(in_array($job_check['database_export']['timestamp'], ["0","4"], true)) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`job_check` (`job_name`,`timestamp`) VALUES ('database_export','0') ON DUPLICATE KEY UPDATE `timestamp`=VALUES(`timestamp`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wihladmrs10'];
$err_lvl = NULL;
}
} else {
$err_msg = $lang['errukwn'];
$err_lvl = 3;
}
} elseif (isset($_POST['delete']) && isset($db_csrf[$_POST['csrf_token']])) {
if(substr($_POST['delete'],0,10) == "db_export_" && unlink($cfg['logs_path'].$_POST['delete'])) {
$err_msg = sprintf($lang['wihladmex3'], $_POST['delete']);
$err_lvl = NULL;
} else {
$err_msg = sprintf($lang['wihladmex4'], $_POST['delete']);
$err_lvl = 3;
}
} elseif (isset($_POST['download']) && isset($db_csrf[$_POST['csrf_token']])) {
$err_msg = "download request: ".$_POST['download'];
$err_lvl = 3;
} elseif (isset($_POST['export']) && isset($db_csrf[$_POST['csrf_token']])) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`job_check` (`job_name`,`timestamp`) VALUES ('database_export','1') ON DUPLICATE KEY UPDATE `timestamp`=VALUES(`timestamp`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = '<b>'.$lang['wihladmex1'].'</b><br><br>'.sprintf($lang['wihladmrs7'], '<form class="btn-group" name="refresh" action="export.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary btn-sm" name="refresh"><i class="fas fa-sync"></i>&nbsp;', '</button></form>').'<br><br>'.$lang['wihladmrs8'];
if(($snapshot = $mysqlcon->query("SELECT COUNT(*) AS `count` from `$dbname`.`user_snapshot`")->fetch()) === false) { } else {
$est_time = round($snapshot['count'] * 0.00005) + 5;
$dtF = new \DateTime('@0');
$dtT = new \DateTime("@$est_time");
$est_time = $dtF->diff($dtT)->format($cfg['default_date_format']);
$err_msg .= '<br><br>'.$lang['wihladmrs11'].': '.$est_time.'.<br>';
}
$err_lvl = NULL;
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihladmex']; ?>
</h1>
</div>
</div>
<div class="form-horizontal">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#wihladmexdesc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<div class="col-sm-6">
<b><?php echo "File" ?></b>
</div>
<div class="col-sm-1">
<b><?php echo "Filesize" ?></b>
</div>
<div class="col-sm-3">
<b><?php echo "MD5" ?></b>
</div>
<div class="col-sm-1"></div>
<div class="col-sm-1"></div>
</div>
<div class="form-group" name="filegroup">
<?PHP
foreach(scandir($cfg['logs_path']) as $file) {
if ('.' === $file || '..' === $file) continue;
if (is_dir($cfg['logs_path'].$file)) continue;
if(substr($file, 0, 10) != 'db_export_') continue;
?>
<div class="col-sm-6">
<?PHP echo $cfg['logs_path'].$file; ?>
</div>
<div class="col-sm-1">
<?PHP echo number_format(round((filesize($cfg['logs_path'].$file) / 1048576), 1), 1, '.', ' ') , " MiB"; ?>
</div>
<div class="col-sm-3">
<?PHP echo md5_file($cfg['logs_path'].$file); ?>
</div>
<div class="col-sm-1 text-center delete">
<form id="<?PHP echo $file.'dow' ?>" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<input type="hidden" name="download" value="<?PHP echo $file; ?>">
<?PHP if(in_array($job_check['database_export']['timestamp'], ["0","4"], true)) { ?>
<a href="download_file.php?csrf_token=<?PHP echo $csrf_token; ?>&file=<?PHP echo $file ?>">
<span onclick="document.getElementById('<?PHP echo $file.'dow' ?>').submit();" style="cursor: pointer; pointer-events: all;">
<svg class="svg-inline--fa fa-download fa-w-16" style="margin-top: 10px;cursor: pointer;" title="download file" aria-labelledby="svg-inline--fa-title-D8LEkIGcdqdt" data-prefix="fas" data-icon="download" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><title id="svg-inline--fa-title-D8LEkIGcdqdt"><?PHP echo $lang['wihladmex5']; ?></title><path fill="currentColor" d="M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z" style="--darkreader-inline-fill:currentColor;" data-darkreader-inline-fill=""></path></svg>
</span>
</a>
<?PHP } ?>
</form>
</div>
<div class="col-sm-1 text-center delete">
<form id="<?PHP echo $file.'del' ?>" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<input type="hidden" name="delete" value="<?PHP echo $file ?>">
<?PHP if(in_array($job_check['database_export']['timestamp'], ["0","4"], true)) { ?>
<span onclick="document.getElementById('<?PHP echo $file.'del' ?>').submit();" style="cursor: pointer; pointer-events: all;">
<svg class="svg-inline--fa fa-trash fa-w-14" style="margin-top: 10px;cursor: pointer;" title="delete file" onclick="javascript:this.form.submit();" aria-labelledby="svg-inline--fa-title-gtKCZkgszs1S" data-prefix="fas" data-icon="trash" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" data-fa-i2svg=""><title id="svg-inline--fa-title-gtKCZkgszs1S"><?PHP echo $lang['wihladmex6']; ?></title><path fill="currentColor" d="M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z" style="--darkreader-inline-fill:currentColor;" data-darkreader-inline-fill=""></path></svg>
</span>
<?PHP } ?>
</form>
</div>
<?PHP
}
?>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<form name="post" id="post" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="export"><?php echo $lang['wihladmex7']; ?></button>
</div>
</form>
</div>
<div class="row">&nbsp;</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladmexdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm0']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladmexdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,261 +1,266 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$cfg['stats_imprint_address'] = addslashes($_POST['stats_imprint_address']);
$cfg['stats_imprint_address_url'] = addslashes($_POST['stats_imprint_address_url']);
$cfg['stats_imprint_email'] = addslashes($_POST['stats_imprint_email']);
$cfg['stats_imprint_phone'] = addslashes($_POST['stats_imprint_phone']);
$cfg['stats_imprint_notes'] = addslashes($_POST['stats_imprint_notes']);
$cfg['stats_imprint_privacypolicy'] = addslashes($_POST['stats_imprint_privacypolicy']);
$cfg['stats_imprint_privacypolicy_url'] = addslashes($_POST['stats_imprint_privacypolicy_url']);
if (isset($_POST['stats_imprint_switch'])) $cfg['stats_imprint_switch'] = 1; else $cfg['stats_imprint_switch'] = 0;
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('stats_imprint_switch','{$cfg['stats_imprint_switch']}'),('stats_imprint_address','{$cfg['stats_imprint_address']}'),('stats_imprint_address_url','{$cfg['stats_imprint_address_url']}'),('stats_imprint_email','{$cfg['stats_imprint_email']}'),('stats_imprint_phone','{$cfg['stats_imprint_phone']}'),('stats_imprint_notes','{$cfg['stats_imprint_notes']}'),('stats_imprint_privacypolicy','{$cfg['stats_imprint_privacypolicy']}'),('stats_imprint_privacypolicy_url','{$cfg['stats_imprint_privacypolicy_url']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres']);
$err_lvl = NULL;
}
$cfg['stats_imprint_address'] = $_POST['stats_imprint_address'];
$cfg['stats_imprint_email'] = $_POST['stats_imprint_email'];
$cfg['stats_imprint_phone'] = $_POST['stats_imprint_phone'];
$cfg['stats_imprint_notes'] = $_POST['stats_imprint_notes'];
$cfg['stats_imprint_privacypolicy'] = $_POST['stats_imprint_privacypolicy'];
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['imprint'],' & ',$lang['privacy']; ?>
</h1>
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$cfg['stats_imprint_address'] = addslashes($_POST['stats_imprint_address']);
$cfg['stats_imprint_address_url'] = addslashes($_POST['stats_imprint_address_url']);
$cfg['stats_imprint_email'] = addslashes($_POST['stats_imprint_email']);
$cfg['stats_imprint_phone'] = addslashes($_POST['stats_imprint_phone']);
$cfg['stats_imprint_notes'] = addslashes($_POST['stats_imprint_notes']);
$cfg['stats_imprint_privacypolicy'] = addslashes($_POST['stats_imprint_privacypolicy']);
$cfg['stats_imprint_privacypolicy_url'] = addslashes($_POST['stats_imprint_privacypolicy_url']);
if (isset($_POST['stats_imprint_switch'])) $cfg['stats_imprint_switch'] = 1; else $cfg['stats_imprint_switch'] = 0;
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('stats_imprint_switch','{$cfg['stats_imprint_switch']}'),('stats_imprint_address','{$cfg['stats_imprint_address']}'),('stats_imprint_address_url','{$cfg['stats_imprint_address_url']}'),('stats_imprint_email','{$cfg['stats_imprint_email']}'),('stats_imprint_phone','{$cfg['stats_imprint_phone']}'),('stats_imprint_notes','{$cfg['stats_imprint_notes']}'),('stats_imprint_privacypolicy','{$cfg['stats_imprint_privacypolicy']}'),('stats_imprint_privacypolicy_url','{$cfg['stats_imprint_privacypolicy_url']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres']);
$err_lvl = NULL;
}
$cfg['stats_imprint_address'] = $_POST['stats_imprint_address'];
$cfg['stats_imprint_email'] = $_POST['stats_imprint_email'];
$cfg['stats_imprint_phone'] = $_POST['stats_imprint_phone'];
$cfg['stats_imprint_notes'] = $_POST['stats_imprint_notes'];
$cfg['stats_imprint_privacypolicy'] = $_POST['stats_imprint_privacypolicy'];
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['imprint'],' & ',$lang['privacy']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpswitchdesc"><?php echo $lang['wiimpswitch']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_imprint_switch'] == 1) {
echo '<input id="switch-animate" type="checkbox" checked data-size="mini" name="stats_imprint_switch" value="',$cfg['stats_imprint_switch'],'">';
} else {
echo '<input id="switch-animate" type="checkbox" data-size="mini" name="stats_imprint_switch" value="',$cfg['stats_imprint_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpaddrurldesc"><?php echo $lang['wiimpaddrurl']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="url" name="stats_imprint_address_url" class="form-control" value='<?php echo $cfg["stats_imprint_address_url"]; ?>'>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpaddrdesc"><?php echo $lang['wiimpaddr']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="4" name="stats_imprint_address" maxlength="21588"><?php echo $cfg['stats_imprint_address']; ?></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpemaildesc"><?php echo $lang['wiimpnotes']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="email" name="stats_imprint_email" class="form-control" value='<?php echo $cfg["stats_imprint_email"]; ?>'>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpphonedesc"><?php echo $lang['wiimpphone']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="tel" name="stats_imprint_phone" class="form-control" value='<?php echo $cfg["stats_imprint_phone"]; ?>'>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpnotesdesc"><?php echo $lang['wiimpnotes']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="stats_imprint_notes" maxlength="21588"><?php echo $cfg['stats_imprint_notes']; ?></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpprivurldesc"><?php echo $lang['wiimpprivurl']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="url" name="stats_imprint_privacypolicy_url" class="form-control" value='<?php echo $cfg["stats_imprint_privacypolicy_url"]; ?>'>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpprivacydesc"><?php echo $lang['privacy']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="15" name="stats_imprint_privacypolicy" maxlength="21588"><?php echo $cfg['stats_imprint_privacypolicy']; ?></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wiimpswitchdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpswitch']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpswitchdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpswitchdesc"><?php echo $lang['wiimpswitch']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_imprint_switch'] == 1) {
echo '<input id="switch-animate" type="checkbox" checked data-size="mini" name="stats_imprint_switch" value="',$cfg['stats_imprint_switch'],'">';
} else {
echo '<input id="switch-animate" type="checkbox" data-size="mini" name="stats_imprint_switch" value="',$cfg['stats_imprint_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpaddrurldesc"><?php echo $lang['wiimpaddrurl']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="url" name="stats_imprint_address_url" class="form-control" value='<?php echo $cfg["stats_imprint_address_url"]; ?>'>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpaddrdesc"><?php echo $lang['wiimpaddr']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="4" name="stats_imprint_address" maxlength="21588"><?php echo $cfg['stats_imprint_address']; ?></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpemaildesc"><?php echo $lang['wiimpnotes']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="email" name="stats_imprint_email" class="form-control" value='<?php echo $cfg["stats_imprint_email"]; ?>'>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpphonedesc"><?php echo $lang['wiimpphone']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="tel" name="stats_imprint_phone" class="form-control" value='<?php echo $cfg["stats_imprint_phone"]; ?>'>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpnotesdesc"><?php echo $lang['wiimpnotes']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="stats_imprint_notes" maxlength="21588"><?php echo $cfg['stats_imprint_notes']; ?></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpprivurldesc"><?php echo $lang['wiimpprivurl']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="url" name="stats_imprint_privacypolicy_url" class="form-control" value='<?php echo $cfg["stats_imprint_privacypolicy_url"]; ?>'>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiimpprivacydesc"><?php echo $lang['privacy']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="15" name="stats_imprint_privacypolicy" maxlength="21588"><?php echo $cfg['stats_imprint_privacypolicy']; ?></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wiimpswitchdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpswitch']; ?></h4>
<div class="modal fade" id="wiimpaddrurldesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpaddrurl']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpaddrurldesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
<div class="modal-body">
<?php echo $lang['wiimpswitchdesc']; ?>
</div>
</div>
<div class="modal fade" id="wiimpaddrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpaddr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpaddrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
<div class="modal-footer">
</div>
</div>
<div class="modal fade" id="wiimpemaildesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpnotes']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpemaildesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiimpphonedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpphone']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpphonedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiimpaddrurldesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpaddrurl']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpaddrurldesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
<div class="modal fade" id="wiimpnotesdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpnotes']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpnotesdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiimpaddrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpaddr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpaddrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
<div class="modal fade" id="wiimpprivurldesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpprivurl']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpprivurldesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiimpemaildesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpnotes']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpemaildesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
<div class="modal fade" id="wiimpprivacydesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['privacy']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpprivacydesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiimpphonedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpphone']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpphonedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiimpnotesdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpnotes']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpnotesdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiimpprivurldesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiimpprivurl']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpprivurldesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiimpprivacydesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['privacy']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiimpprivacydesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,139 +1,146 @@
<?PHP
require_once('_preload.php');
if(!class_exists('PDO')) {
unset($err_msg); $err_msg = sprintf($lang['insterr2'],'PHP PDO','//php.net/manual/en/book.pdo.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(version_compare(phpversion(), '5.5.0', '<')) {
unset($err_msg); $err_msg = sprintf($lang['insterr4'],phpversion()); $err_lvl = 3; $dis_login = 1;
}
if(!function_exists('simplexml_load_file')) {
unset($err_msg); $err_msg = sprintf($lang['insterr2'],'PHP SimpleXML','//php.net/manual/en/book.simplexml.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(!in_array('curl', get_loaded_extensions())) {
unset($err_msg); $err_msg = sprintf($lang['insterr2'],'PHP cURL','//php.net/manual/en/book.curl.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(!in_array('zip', get_loaded_extensions())) {
unset($err_msg); $err_msg = sprintf($lang['insterr2'],'PHP Zip','//php.net/manual/en/book.zip.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(!in_array('mbstring', get_loaded_extensions())) {
unset($err_msg); $err_msg = sprintf($lang['insterr2'],'PHP mbstring','//php.net/manual/en/book.mbstring.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(!in_array('openssl', get_loaded_extensions())) {
unset($err_msg); $err_msg = sprintf($lang['insterr2'],'PHP OpenSSL','//php.net/manual/en/book.openssl.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
if(!in_array('com_dotnet', get_loaded_extensions())) {
unset($err_msg); $err_msg = sprintf($lang['insterr2'],'PHP COM extension (php_com_dotnet.dll)','//php.net/manual/en/book.com.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
try {
if(!class_exists('PDO')) {
$err_msg = sprintf($lang['insterr2'],'PHP PDO','//php.net/manual/en/book.pdo.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
}
if(file_exists($cfg['logs_path'].'ranksystem.log') && !is_writable($cfg['logs_path'].'ranksystem.log')) {
$err_msg = sprintf($lang['chkfileperm'], '<pre>chown -R www-data:www-data '.$cfg['logs_path'].'</pre><br>', '<pre>chmod 740 '.$cfg['logs_path'].'ranksystem.log</pre><br><br>', '<pre>'.$cfg['logs_path'].'ranksystem.log</pre>');
$err_lvl = 3; $dis_login = 0;
}
if(!is_writable($cfg['logs_path'])) {
$err_msg = sprintf($lang['chkfileperm'], '<pre>chown -R www-data:www-data '.$cfg['logs_path'].'</pre><br>', '<pre>chmod 740 '.$cfg['logs_path'].'</pre><br><br>', '<pre>'.$cfg['logs_path'].'</pre>');
$err_lvl = 3; $dis_login = 0;
}
if(!function_exists('exec')) {
unset($err_msg); $err_msg = sprintf($lang['insterr3'],'exec','//php.net/manual/en/book.exec.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
} else {
exec("$phpcommand -v", $phpversioncheck);
$output = '';
foreach($phpversioncheck as $line) $output .= print_r($line, true).'<br>';
if(empty($phpversioncheck) || strtoupper(substr($phpversioncheck[0], 0, 3)) != "PHP") {
$err_msg = sprintf($lang['chkphpcmd'], "\"other/phpcommand.php\"", "<u>\"other/phpcommand.php\"</u>", '<pre>'.$phpcommand.'</pre>', '<pre>'.$output.'</pre><br><br>', '<pre>php -v</pre>');
$err_lvl = 3; $dis_login = 1;
} else {
$exploded = explode(' ',$phpversioncheck[0]);
if($exploded[1] != phpversion()) {
$err_msg = sprintf($lang['chkphpmulti'], phpversion(), "<u>\"other/phpcommand.php\"</u>", $exploded[1], "\"other/phpcommand.php\"</u>", "\"other/phpcommand.php\"</u>", '<pre>'.$phpcommand.'</pre>');
if(getenv('PATH')!='') {
$err_msg .= "<br><br>".sprintf($lang['chkphpmulti2'], '<br>'.getenv('PATH'));
}
$err_lvl = 2;
if(version_compare(PHP_VERSION, '5.5.0', '<')) {
$err_msg = sprintf($lang['insterr4'],PHP_VERSION); $err_lvl = 3; $dis_login = 1;
}
if(!function_exists('simplexml_load_file')) {
$err_msg = sprintf($lang['insterr2'],'PHP SimpleXML','//php.net/manual/en/book.simplexml.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(!in_array('curl', get_loaded_extensions())) {
$err_msg = sprintf($lang['insterr2'],'PHP cURL','//php.net/manual/en/book.curl.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(!in_array('zip', get_loaded_extensions())) {
$err_msg = sprintf($lang['insterr2'],'PHP Zip','//php.net/manual/en/book.zip.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(!in_array('mbstring', get_loaded_extensions())) {
$err_msg = sprintf($lang['insterr2'],'PHP mbstring','//php.net/manual/en/book.mbstring.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(!in_array('openssl', get_loaded_extensions())) {
$err_msg = sprintf($lang['insterr2'],'PHP OpenSSL','//php.net/manual/en/book.openssl.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
if(!in_array('com_dotnet', get_loaded_extensions())) {
unset($err_msg); $err_msg = sprintf($lang['insterr2'],'PHP COM extension (php_com_dotnet.dll)','//php.net/manual/en/book.com.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
}
}
}
if(($cfg['webinterface_access_last'] + 1) >= time()) {
$waittime = $cfg['webinterface_access_last'] + 2 - time();
$err_msg = sprintf($lang['errlogin2'],$waittime);
$err_lvl = 3;
} elseif ($cfg['webinterface_access_count'] >= 10) {
enter_logfile($cfg,3,sprintf($lang['brute'], getclientip()));
$err_msg = $lang['errlogin3'];
$err_lvl = 3;
$bantime = time() + 299;
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_access_last','{$bantime}'),('webinterface_access_count','0') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) { }
} elseif (isset($_POST['username']) && $_POST['username'] == $cfg['webinterface_user'] && password_verify($_POST['password'], $cfg['webinterface_pass'])) {
$_SESSION[$rspathhex.'username'] = $cfg['webinterface_user'];
$_SESSION[$rspathhex.'password'] = $cfg['webinterface_pass'];
$_SESSION[$rspathhex.'clientip'] = getclientip();
$_SESSION[$rspathhex.'newversion'] = $cfg['version_latest_available'];
enter_logfile($cfg,6,sprintf($lang['brute2'], getclientip()));
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_access_count','0') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) { }
header("Location: $prot://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."/bot.php");
exit;
} elseif(isset($_POST['username'])) {
$nowtime = time();
enter_logfile($cfg,5,sprintf($lang['brute1'], getclientip(), $_POST['username']));
$cfg['webinterface_access_count']++;
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_access_last','{$nowtime}'),('webinterface_access_count','{$cfg['webinterface_access_count']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) { }
$err_msg = $lang['errlogin'];
$err_lvl = 3;
}
if(file_exists($cfg['logs_path'].'ranksystem.log') && !is_writable($cfg['logs_path'].'ranksystem.log')) {
$err_msg = sprintf($lang['chkfileperm'], '<pre>chown -R www-data:www-data '.$cfg['logs_path'].'</pre><br>', '<pre>chmod 0740 '.$cfg['logs_path'].'ranksystem.log</pre><br><br>', '<pre>'.$cfg['logs_path'].'ranksystem.log</pre>');
$err_lvl = 3; $dis_login = 0;
}
if(isset($_SESSION[$rspathhex.'username']) && $_SESSION[$rspathhex.'username'] == $cfg['webinterface_user'] && $_SESSION[$rspathhex.'password'] == $cfg['webinterface_pass']) {
header("Location: $prot://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."/bot.php");
exit;
}
if(!is_writable($cfg['logs_path'])) {
$err_msg = sprintf($lang['chkfileperm'], '<pre>chown -R www-data:www-data '.$cfg['logs_path'].'</pre><br>', '<pre>chmod 0740 '.$cfg['logs_path'].'</pre><br><br>', '<pre>'.$cfg['logs_path'].'</pre>');
$err_lvl = 3; $dis_login = 0;
}
require_once('_nav.php');
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div id="login-overlay" class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel"><?PHP echo $lang['isntwiusrh']; ?></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-xs-12">
<form id="loginForm" method="POST">
<div class="form-group">
<label class="control-label"><?PHP echo $lang['user']; ?>:</label>
<div class="input-group">
<span class="input-group-addon"><i class="fas fa-user"></i></span>
<input type="text" class="form-control" name="username" placeholder="<?PHP echo $lang['user']; ?>" maxlength="21588" autofocus>
if(!function_exists('exec')) {
unset($err_msg); $err_msg = sprintf($lang['insterr3'],'exec','//php.net/manual/en/book.exec.php',get_cfg_var('cfg_file_path')); $err_lvl = 3; $dis_login = 1;
} else {
exec("$phpcommand -v", $phpversioncheck);
$output = '';
foreach($phpversioncheck as $line) $output .= print_r($line, true).'<br>';
if(empty($phpversioncheck) || strtoupper(substr($phpversioncheck[0], 0, 3)) != "PHP") {
$err_msg = sprintf($lang['chkphpcmd'], "\"other/phpcommand.php\"", "<u>\"other/phpcommand.php\"</u>", '<pre>'.$phpcommand.'</pre>', '<pre>'.$output.'</pre><br><br>', '<pre>php -v</pre>');
$err_lvl = 3; $dis_login = 1;
} else {
$exploded = explode(' ',$phpversioncheck[0]);
if($exploded[1] != phpversion()) {
$err_msg = sprintf($lang['chkphpmulti'], phpversion(), "<u>\"other/phpcommand.php\"</u>", $exploded[1], "\"other/phpcommand.php\"</u>", "\"other/phpcommand.php\"</u>", '<pre>'.$phpcommand.'</pre>');
if(getenv('PATH')!='') {
$err_msg .= "<br><br>".sprintf($lang['chkphpmulti2'], '<br>'.getenv('PATH'));
}
$err_lvl = 2;
}
}
}
if(!isset($err_msg) && version_compare(PHP_VERSION, '7.2.0', '<')) {
$err_msg = "Your PHP Version: (".PHP_VERSION.") is outdated and no longer supported. Please update it!";
$err_lvl = 2;
}
if(($cfg['webinterface_access_last'] + 1) >= time()) {
$waittime = $cfg['webinterface_access_last'] + 2 - time();
$err_msg = sprintf($lang['errlogin2'],$waittime);
$err_lvl = 3;
} elseif ($cfg['webinterface_access_count'] >= 10) {
enter_logfile($cfg,3,sprintf($lang['brute'], getclientip()));
$err_msg = $lang['errlogin3'];
$err_lvl = 3;
$bantime = time() + 299;
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_access_last','{$bantime}'),('webinterface_access_count','0') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) { }
} elseif (isset($_POST['username']) && $_POST['username'] == $cfg['webinterface_user'] && password_verify($_POST['password'], $cfg['webinterface_pass'])) {
$_SESSION[$rspathhex.'username'] = $cfg['webinterface_user'];
$_SESSION[$rspathhex.'password'] = $cfg['webinterface_pass'];
$_SESSION[$rspathhex.'clientip'] = getclientip();
$_SESSION[$rspathhex.'newversion'] = $cfg['version_latest_available'];
enter_logfile($cfg,6,sprintf($lang['brute2'], getclientip()));
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_access_count','0') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) { }
header("Location: $prot://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."/bot.php");
exit;
} elseif(isset($_POST['username'])) {
$nowtime = time();
enter_logfile($cfg,5,sprintf($lang['brute1'], getclientip(), $_POST['username']));
$cfg['webinterface_access_count']++;
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_access_last','{$nowtime}'),('webinterface_access_count','{$cfg['webinterface_access_count']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) { }
$err_msg = $lang['errlogin'];
$err_lvl = 3;
}
if(isset($_SESSION[$rspathhex.'username']) && $_SESSION[$rspathhex.'username'] == $cfg['webinterface_user'] && $_SESSION[$rspathhex.'password'] == $cfg['webinterface_pass']) {
header("Location: $prot://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."/bot.php");
exit;
}
require_once('_nav.php');
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div id="login-overlay" class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel"><?PHP echo $lang['isntwiusrh']; ?></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-xs-12">
<form id="loginForm" method="POST">
<div class="form-group">
<label class="control-label"><?PHP echo $lang['user']; ?>:</label>
<div class="input-group">
<span class="input-group-addon"><i class="fas fa-user"></i></span>
<input type="text" class="form-control" name="username" placeholder="<?PHP echo $lang['user']; ?>" maxlength="21588" autofocus>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label"><?PHP echo $lang['pass']; ?>:</label>
<div class="input-group">
<span class="input-group-addon"><i class="fas fa-lock"></i></span>
<input type="password" class="form-control" name="password" placeholder="<?PHP echo $lang['pass']; ?>" maxlength="21588">
<div class="form-group">
<label class="control-label"><?PHP echo $lang['pass']; ?>:</label>
<div class="input-group">
<span class="input-group-addon"><i class="fas fa-lock"></i></span>
<input type="password" class="form-control" name="password" placeholder="<?PHP echo $lang['pass']; ?>" maxlength="21588">
</div>
</div>
</div>
<br>
<p>
<?PHP
if(isset($dis_login) && $dis_login == 1) {
echo '<button type="submit" class="btn btn-success btn-block" disabled>',$lang['login'],'</button>';
} else {
echo '<button type="submit" class="btn btn-success btn-block">',$lang['login'],'</button>';
}
?>
</p>
<p class="small text-right">
<a href="resetpassword.php"><?PHP echo $lang['pass5']; ?></a>
</p>
</form>
<br>
<p>
<?PHP
if(isset($dis_login) && $dis_login == 1) {
echo '<button type="submit" class="btn btn-success btn-block" disabled>',$lang['login'],'</button>';
} else {
echo '<button type="submit" class="btn btn-success btn-block">',$lang['login'],'</button>';
}
?>
</p>
<p class="small text-right">
<a href="resetpassword.php"><?PHP echo $lang['pass5']; ?></a>
</p>
</form>
</div>
</div>
</div>
</div>
@@ -141,6 +148,8 @@ require_once('_nav.php');
</div>
</div>
</div>
</div>
</body>
</html>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,221 +1,226 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$cfg['rankup_message_to_user'] = addslashes($_POST['rankup_message_to_user']);
$cfg['rankup_next_message_1'] = addslashes($_POST['rankup_next_message_1']);
$cfg['rankup_next_message_2'] = addslashes($_POST['rankup_next_message_2']);
$cfg['rankup_next_message_3'] = addslashes($_POST['rankup_next_message_3']);
$cfg['rankup_next_message_mode'] = $_POST['rankup_next_message_mode'];
if (isset($_POST['rankup_message_to_user_switch'])) $cfg['rankup_message_to_user_switch'] = 1; else $cfg['rankup_message_to_user_switch'] = 0;
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_message_to_user_switch','{$cfg['rankup_message_to_user_switch']}'),('rankup_message_to_user','{$cfg['rankup_message_to_user']}'),('rankup_next_message_mode','{$cfg['rankup_next_message_mode']}'),('rankup_next_message_1','{$cfg['rankup_next_message_1']}'),('rankup_next_message_2','{$cfg['rankup_next_message_2']}'),('rankup_next_message_3','{$cfg['rankup_next_message_3']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button
type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
$cfg['rankup_message_to_user'] = $_POST['rankup_message_to_user'];
$cfg['rankup_next_message_1'] = $_POST['rankup_next_message_1'];
$cfg['rankup_next_message_2'] = $_POST['rankup_next_message_2'];
$cfg['rankup_next_message_3'] = $_POST['rankup_next_message_3'];
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['winav5'],' ',$lang['wihlset']; ?>
</h1>
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$cfg['rankup_message_to_user'] = addslashes($_POST['rankup_message_to_user']);
$cfg['rankup_next_message_1'] = addslashes($_POST['rankup_next_message_1']);
$cfg['rankup_next_message_2'] = addslashes($_POST['rankup_next_message_2']);
$cfg['rankup_next_message_3'] = addslashes($_POST['rankup_next_message_3']);
$cfg['rankup_next_message_mode'] = $_POST['rankup_next_message_mode'];
if (isset($_POST['rankup_message_to_user_switch'])) $cfg['rankup_message_to_user_switch'] = 1; else $cfg['rankup_message_to_user_switch'] = 0;
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_message_to_user_switch','{$cfg['rankup_message_to_user_switch']}'),('rankup_message_to_user','{$cfg['rankup_message_to_user']}'),('rankup_next_message_mode','{$cfg['rankup_next_message_mode']}'),('rankup_next_message_1','{$cfg['rankup_next_message_1']}'),('rankup_next_message_2','{$cfg['rankup_next_message_2']}'),('rankup_next_message_3','{$cfg['rankup_next_message_3']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button
type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
$cfg['rankup_message_to_user'] = $_POST['rankup_message_to_user'];
$cfg['rankup_next_message_1'] = $_POST['rankup_next_message_1'];
$cfg['rankup_next_message_2'] = $_POST['rankup_next_message_2'];
$cfg['rankup_next_message_3'] = $_POST['rankup_next_message_3'];
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['winav5'],' ',$lang['wihlset']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wimsgusrdesc"><?php echo $lang['wimsgusr']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['rankup_message_to_user_switch'] == 1) {
echo '<input id="switch-animate" type="checkbox" checked data-size="mini" name="rankup_message_to_user_switch" value="',$cfg['rankup_message_to_user_switch'],'">';
} else {
echo '<input id="switch-animate" type="checkbox" data-size="mini" name="rankup_message_to_user_switch" value="',$cfg['rankup_message_to_user_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wimsgmsgdesc"><?php echo $lang['wimsgmsg']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="rankup_message_to_user" maxlength="21588"><?php echo $cfg['rankup_message_to_user']; ?></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#winxinfodesc"><?php echo $lang['winxinfo']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" id="basic" name="rankup_next_message_mode">
<?PHP
echo '<option data-icon="fas fa-ban" value="0"'; if($cfg['rankup_next_message_mode']=="0") echo " selected=selected"; echo '>&nbsp;',$lang['winxmode1'],'</option>';
echo '<option data-icon="fas fa-clipboard-check" value="1"'; if($cfg['rankup_next_message_mode']=="1") echo " selected=selected"; echo '>&nbsp;',$lang['winxmode2'],'</option>';
echo '<option data-icon="fas fa-clipboard-list" value="2"'; if($cfg['rankup_next_message_mode']=="2") echo " selected=selected"; echo '>&nbsp;',$lang['winxmode3'],'</option>';
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#winxmsgdesc1"><?php echo $lang['winxmsg1']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="rankup_next_message_1" maxlength="21588"><?php echo $cfg['rankup_next_message_1']; ?></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#winxmsgdesc2"><?php echo $lang['winxmsg2']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="rankup_next_message_2" maxlength="21588"><?php echo $cfg['rankup_next_message_2']; ?></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#winxmsgdesc3"><?php echo $lang['winxmsg3']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="rankup_next_message_3" maxlength="21588"><?php echo $cfg['rankup_next_message_3']; ?></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wimsgusrdesc"><?php echo $lang['wimsgusr']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['rankup_message_to_user_switch'] == 1) {
echo '<input id="switch-animate" type="checkbox" checked data-size="mini" name="rankup_message_to_user_switch" value="',$cfg['rankup_message_to_user_switch'],'">';
} else {
echo '<input id="switch-animate" type="checkbox" data-size="mini" name="rankup_message_to_user_switch" value="',$cfg['rankup_message_to_user_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wimsgmsgdesc"><?php echo $lang['wimsgmsg']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="rankup_message_to_user" maxlength="21588"><?php echo $cfg['rankup_message_to_user']; ?></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#winxinfodesc"><?php echo $lang['winxinfo']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" id="basic" name="rankup_next_message_mode">
<?PHP
echo '<option data-icon="fas fa-ban" value="0"'; if($cfg['rankup_next_message_mode']=="0") echo " selected=selected"; echo '>&nbsp;',$lang['winxmode1'],'</option>';
echo '<option data-icon="fas fa-clipboard-check" value="1"'; if($cfg['rankup_next_message_mode']=="1") echo " selected=selected"; echo '>&nbsp;',$lang['winxmode2'],'</option>';
echo '<option data-icon="fas fa-clipboard-list" value="2"'; if($cfg['rankup_next_message_mode']=="2") echo " selected=selected"; echo '>&nbsp;',$lang['winxmode3'],'</option>';
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#winxmsgdesc1"><?php echo $lang['winxmsg1']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="rankup_next_message_1" maxlength="21588"><?php echo $cfg['rankup_next_message_1']; ?></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#winxmsgdesc2"><?php echo $lang['winxmsg2']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="rankup_next_message_2" maxlength="21588"><?php echo $cfg['rankup_next_message_2']; ?></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#winxmsgdesc3"><?php echo $lang['winxmsg3']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="rankup_next_message_3" maxlength="21588"><?php echo $cfg['rankup_next_message_3']; ?></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
<div class="modal fade" id="wimsgusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wimsgusr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wimsgusrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wimsgusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wimsgusr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wimsgusrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wimsgmsgdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wimsgmsg']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['wimsgmsgdesc'], '<a href="https://ts-n.net/lexicon.php?showid=97#lexindex" target="_blank">https://ts-n.net/lexicon.php?showid=97#lexindex</a>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="winxinfodesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['winxinfo']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['winxinfodesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="winxmsgdesc1" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['winxmsg1']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['winxmsgdesc1']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="winxmsgdesc2" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['winxmsg2']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['winxmsgdesc2']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="winxmsgdesc3" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['winxmsg3']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['winxmsgdesc3']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<div class="modal fade" id="wimsgmsgdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wimsgmsg']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['wimsgmsgdesc'], '<a href="https://ts-n.net/lexicon.php?showid=97#lexindex" target="_blank">https://ts-n.net/lexicon.php?showid=97#lexindex</a>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="winxinfodesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['winxinfo']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['winxinfodesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="winxmsgdesc1" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['winxmsg1']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['winxmsgdesc1']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="winxmsgdesc2" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['winxmsg2']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['winxmsgdesc2']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="winxmsgdesc3" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['winxmsg3']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['winxmsgdesc3']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

File diff suppressed because it is too large Load Diff

View File

@@ -1,362 +1,367 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($groupslist = $mysqlcon->query("SELECT * FROM `$dbname`.`groups` ORDER BY `sortid`,`sgidname` ASC")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(!isset($groupslist) || $groupslist == NULL) {
$err_msg = '<b>No servergroups found inside the Ranksystem cache!</b><br><br>Please connect the Ranksystem Bot to the TS server. The Ranksystem will download the servergroups when it is connected to the server.<br>Give it a few minutes and reload this page. The dropdown field should contain your groups after.';
$err_lvl = 1;
}
if (isset($_POST['update_old']) && isset($db_csrf[$_POST['csrf_token']])) {
if(empty($_POST['rankup_definition'])) {
$grouparr_old = null;
} else {
foreach (explode(',', $_POST['rankup_definition']) as $entry) {
list($time, $groupid, $keepflag) = explode('=>', $entry);
if($keepflag == NULL) $keepflag = 0;
$grouparr_old[$time] = array("time"=>$time,"group"=>$groupid,"keep"=>$keepflag);
$cfg['rankup_definition'] = $grouparr_old;
}
}
if(isset($groupslist) && $groupslist != NULL) {
if(isset($cfg['rankup_definition']) && $cfg['rankup_definition'] != NULL) {
foreach($cfg['rankup_definition'] as $time => $value) {
if(!isset($groupslist[$value['group']]) && $value['group'] != NULL) {
$err_msg .= sprintf($lang['upgrp0001'], $value['group'], $lang['wigrptime']).'<br>';
$err_lvl = 3;
$errcnf++;
}
}
}
}
if($_POST['rankup_definition'] == "") {
$err_msg = "Saving of empty defintion prevented.<br><br>Your changes were <b>not</b> be saved!<br><br>You need at least one entry to be able to save the configuration!";
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
if($errcnf == 0) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_definition','{$_POST['rankup_definition']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
} else {
$err_msg .= "<br>".$lang['errgrpid'];
}
}
} elseif (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$rankup_definition = "";
if(isset($_POST['rankuptime']) && isset($_POST['rankupgroup'])) {
$rankupgroups = [];
foreach($_POST['rankuptime'] as $key => $entry) {
$servergroupId = isset($_POST["rankupgroup"][$key]) ? $_POST["rankupgroup"][$key] : 0;
if(in_array($key,$_POST["rankupkeep"])) {
$keepflag = 1;
} else {
$keepflag = 0;
}
if(empty($entry)) {
$entry = 0;
}
$rankupgroups[] = "$entry=>$servergroupId=>$keepflag";
}
$rankup_definition = implode(",", $rankupgroups);
$grouparr = [];
foreach(explode(',', $rankup_definition) as $entry) {
list($time, $groupid, $keepflag) = explode('=>', $entry);
$grouparr[$groupid] = $time;
}
$err_msg = '';
$errcnf = 0;
if(isset($groupslist) && $groupslist != NULL) {
foreach($grouparr as $groupid => $time) {
if((!isset($groupslist[$groupid]) && $groupid != NULL) || $groupid == 0) {
$err_msg .= sprintf($lang['upgrp0001'], $groupid, $lang['wigrptime']).'<br>';
$err_lvl = 3;
$errcnf++;
}
}
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
$cfg['rankup_definition'] = $rankup_definition;
if(($groupslist = $mysqlcon->query("SELECT * FROM `$dbname`.`groups` ORDER BY `sortid`,`sgidname` ASC")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if($errcnf == 0) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_definition','{$cfg['rankup_definition']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
if(!isset($groupslist) || $groupslist == NULL) {
$err_msg = '<b>No servergroups found inside the Ranksystem cache!</b><br><br>Please connect the Ranksystem Bot to the TS server. The Ranksystem will download the servergroups when it is connected to the server.<br>Give it a few minutes and reload this page. The dropdown field should contain your groups after.';
$err_lvl = 1;
}
if (isset($_POST['update_old']) && isset($db_csrf[$_POST['csrf_token']])) {
if(empty($_POST['rankup_definition'])) {
$grouparr_old = null;
} else {
$err_msg .= "<br>".$lang['errgrpid'];
}
if(empty($rankup_definition)) {
$cfg['rankup_definition'] = NULL;
} else {
$grouptimearr = explode(',', $rankup_definition);
foreach ($grouptimearr as $entry) {
foreach (explode(',', $_POST['rankup_definition']) as $entry) {
list($time, $groupid, $keepflag) = explode('=>', $entry);
$addnewvalue1[$time] = array("time"=>$time,"group"=>$groupid,"keep"=>$keepflag);
$cfg['rankup_definition'] = $addnewvalue1;
if($keepflag == NULL) $keepflag = 0;
$grouparr_old[$time] = array("time"=>$time,"group"=>$groupid,"keep"=>$keepflag);
$cfg['rankup_definition'] = $grouparr_old;
}
}
} else {
$err_msg = $lang['errukwn'];
$err_lvl = 3;
}
} elseif(isset($_POST['update']) || isset($_POST['update_old'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<form class="form-horizontal" data-toggle="validator" name="update" method="POST" id="new">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<span><?php echo $lang['stmy0002'],' ',$lang['wihlset']; ?></span>
<div class="btn pull-right expertelement">
<input id="switchexpert1" class="switch-animate" type="checkbox" data-size="mini" value="switchexpert1" data-label-text="<?php echo $lang['wigrpimp'] ?>" data-off-text="OFF">
</div>
</h1>
</div>
</div>
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#wihladm0desc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<div class="col-sm-4">
<b><?php echo $lang['wigrpt1'],' (',$lang['wigrptk'],')'; ?></b>
</div>
<div class="col-sm-5">
<b><?php echo $lang['wigrpt2'] ?></b>
</div>
<div class="col-sm-2">
<b><?php echo $lang['wigrpt3'] ?></b>
</div>
<div class="col-sm-1"></div>
</div>
<?PHP
$rowid = 0;
foreach($cfg['rankup_definition'] as $rank) {
?>
<div class="form-group" name="rankupgroup">
<div class="col-sm-4">
<input type="text" class="form-control rankuptime" name="rankuptime[]" value="<?PHP echo $rank['time']; ?>">
</div>
<div class="col-sm-5">
<select class="selectpicker show-tick form-control" data-live-search="true" name="rankupgroup[]">
<?PHP
foreach ($groupslist as $groupID => $groupParam) {
if ($groupID == $rank['group']) $selected=" selected"; else $selected="";
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if ($groupParam['type'] == 0 || $groupParam['type'] == 2) $disabled=" disabled"; else $disabled="";
if ($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if ($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$selected,$disabled,'></option>';
}
}
?>
</select>
</div>
<div class="col-sm-2">
<?PHP if ($rank['keep'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="rankupkeep[]" value="',$rowid,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="rankupkeep[]" value="',$rowid,'">';
} ?>
</div>
<div class="col-sm-1 text-center delete" name="delete"><i class="fas fa-trash" style="margin-top:10px;cursor:pointer;" title="delete line"></i></div>
</div>
<?PHP
$rowid++;
}
?>
<div class="form-group" id="addrankupgroup">
<div class="col-sm-9"></div>
<div class="col-sm-1 text-center">
<span class="d-inline-block" ata-toggle="tooltip" title="Add new line">
<button class="btn btn-primary" onclick="addrankupgroup()" style="margin-top: 5px;" type="button"><i class="fas fa-plus"></i></button>
</span>
</div>
<div class="col-sm-2"></div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<form class="form-horizontal hidden" data-toggle="validator" name="update_old" method="POST" id="old">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<span><?php echo $lang['stmy0002'],' ',$lang['wihlset']; ?></span>
<div class="btn pull-right">
<input id="switchexpert2" class="switch-animate" type="checkbox" checked data-size="mini" value="switchexpert2" data-label-text="<?php echo $lang['wigrpimp'] ?>" data-on-text="ON">
</div>
</h1>
</div>
</div>
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12" data-toggle="modal" data-target="#wihladm1desc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
if(isset($groupslist) && $groupslist != NULL) {
if(isset($cfg['rankup_definition']) && $cfg['rankup_definition'] != NULL) {
foreach($cfg['rankup_definition'] as $time => $value) {
if(!isset($groupslist[$value['group']]) && $value['group'] != NULL) {
$err_msg .= sprintf($lang['upgrp0001'], $value['group'], $lang['wigrptime']).'<br>';
$err_lvl = 3;
$errcnf++;
}
}
}
}
if($_POST['rankup_definition'] == "") {
$err_msg = "Saving of empty defintion prevented.<br><br>Your changes were <b>not</b> be saved!<br><br>You need at least one entry to be able to save the configuration!";
$err_lvl = 3;
} else {
if($errcnf == 0) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_definition','{$_POST['rankup_definition']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
} else {
$err_msg .= "<br>".$lang['errgrpid'];
}
}
} elseif (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$rankup_definition = "";
if(isset($_POST['rankuptime']) && isset($_POST['rankupgroup'])) {
$rankupgroups = [];
foreach($_POST['rankuptime'] as $key => $entry) {
$servergroupId = isset($_POST["rankupgroup"][$key]) ? $_POST["rankupgroup"][$key] : 0;
if(isset($_POST["rankupkeep"]) && in_array($key,$_POST["rankupkeep"])) {
$keepflag = 1;
} else {
$keepflag = 0;
}
if(empty($entry)) {
$entry = 0;
}
$rankupgroups[] = "$entry=>$servergroupId=>$keepflag";
}
$rankup_definition = implode(",", $rankupgroups);
$grouparr = [];
foreach(explode(',', $rankup_definition) as $entry) {
list($time, $groupid, $keepflag) = explode('=>', $entry);
$grouparr[$groupid] = $time;
}
$err_msg = '';
$errcnf = 0;
if(isset($groupslist) && $groupslist != NULL) {
foreach($grouparr as $groupid => $time) {
if((!isset($groupslist[$groupid]) && $groupid != NULL) || $groupid == 0) {
$err_msg .= sprintf($lang['upgrp0001'], $groupid, $lang['wigrptime']).'<br>';
$err_lvl = 3;
$errcnf++;
}
}
}
$cfg['rankup_definition'] = $rankup_definition;
if($errcnf == 0) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('rankup_definition','{$cfg['rankup_definition']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
} else {
$err_msg .= "<br>".$lang['errgrpid'];
}
if(empty($rankup_definition)) {
$cfg['rankup_definition'] = NULL;
} else {
$grouptimearr = explode(',', $rankup_definition);
foreach ($grouptimearr as $entry) {
list($time, $groupid, $keepflag) = explode('=>', $entry);
$addnewvalue1[$time] = array("time"=>$time,"group"=>$groupid,"keep"=>$keepflag);
$cfg['rankup_definition'] = $addnewvalue1;
}
}
} else {
$err_msg = $lang['errukwn'];
$err_lvl = 3;
}
} elseif(isset($_POST['update']) || isset($_POST['update_old'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<form class="form-horizontal" data-toggle="validator" name="update" method="POST" id="new">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<span><?php echo $lang['stmy0002'],' ',$lang['wihlset']; ?></span>
<div class="btn pull-right expertelement">
<input id="switchexpert1" class="switch-animate" type="checkbox" data-size="mini" value="switchexpert1" data-label-text="<?php echo $lang['wigrpimp'] ?>" data-off-text="OFF">
</div>
</h1>
</div>
<div class="form-group required-field-block">
<label class="col-sm-2 control-label"><?php echo $lang['wigrptime']; ?></label>
<div class="col-sm-10">
<textarea class="form-control required" data-pattern="^([0-9]{1,9}=>[0-9]{1,9}=>[0-1]{1},)*[0-9]{1,9}=>[0-9]{1,9}=>[0-1]{1}$" data-error="Wrong definition, please look at description for more details. No comma at ending!" rows="15" name="rankup_definition" maxlength="21588" required><?php $implode_definition = ''; foreach ($cfg['rankup_definition'] as $rank) { $implode_definition .= $rank['time']."=>".$rank['group']."=>".$rank['keep'].","; } $implode_definition = substr($implode_definition, 0, -1); echo $implode_definition; ?></textarea>
<div class="help-block with-errors"></div>
</div>
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#wihladm0desc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<div class="col-sm-4">
<b><?php echo $lang['wigrpt1'],' (',$lang['wigrptk'],')'; ?></b>
</div>
<div class="col-sm-5">
<b><?php echo $lang['wigrpt2'] ?></b>
</div>
<div class="col-sm-2">
<b><?php echo $lang['wigrpt3'] ?></b>
</div>
<div class="col-sm-1"></div>
</div>
<?PHP
$rowid = 0;
foreach($cfg['rankup_definition'] as $rank) {
?>
<div class="form-group" name="rankupgroup">
<div class="col-sm-4">
<input type="text" class="form-control rankuptime" name="rankuptime[]" value="<?PHP echo $rank['time']; ?>">
</div>
<div class="col-sm-5">
<select class="selectpicker show-tick form-control" data-live-search="true" name="rankupgroup[]">
<?PHP
foreach ($groupslist as $groupID => $groupParam) {
if ($groupID == $rank['group']) $selected=" selected"; else $selected="";
if (isset($groupParam['iconid']) && $groupParam['iconid'] != 0) $iconid=$groupParam['iconid']."."; else $iconid="placeholder.png";
if ($groupParam['type'] == 0 || $groupParam['type'] == 2) $disabled=" disabled"; else $disabled="";
if ($groupParam['type'] == 0) $grouptype=" [TEMPLATE GROUP]"; else $grouptype="";
if ($groupParam['type'] == 2) $grouptype=" [QUERY GROUP]";
if ($groupID != 0) {
echo '<option data-content="<img src=\'../tsicons/',$iconid,$groupParam['ext'],'\' width=\'16\' height=\'16\'>&nbsp;&nbsp;',$groupParam['sgidname'],'&nbsp;<span class=\'text-muted small\'>SGID:&nbsp;',$groupID,$grouptype,'</span>" value="',$groupID,'"',$selected,$disabled,'></option>';
}
}
?>
</select>
</div>
<div class="col-sm-2">
<?PHP if ($rank['keep'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="rankupkeep[]" value="',$rowid,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="rankupkeep[]" value="',$rowid,'">';
} ?>
</div>
<div class="col-sm-1 text-center delete" name="delete"><i class="fas fa-trash" style="margin-top:10px;cursor:pointer;" title="delete line"></i></div>
</div>
<?PHP
$rowid++;
}
?>
<div class="form-group" id="addrankupgroup">
<div class="col-sm-9"></div>
<div class="col-sm-1 text-center">
<span class="d-inline-block" ata-toggle="tooltip" title="Add new line">
<button class="btn btn-primary" onclick="addrankupgroup()" style="margin-top: 5px;" type="button"><i class="fas fa-plus"></i></button>
</span>
</div>
<div class="col-sm-2"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update_old"><?php echo $lang['wisvconf']; ?></button>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
</form>
<form class="form-horizontal hidden" data-toggle="validator" name="update_old" method="POST" id="old">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<span><?php echo $lang['stmy0002'],' ',$lang['wihlset']; ?></span>
<div class="btn pull-right">
<input id="switchexpert2" class="switch-animate" type="checkbox" checked data-size="mini" value="switchexpert2" data-label-text="<?php echo $lang['wigrpimp'] ?>" data-on-text="ON">
</div>
</h1>
</div>
</div>
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12" data-toggle="modal" data-target="#wihladm1desc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="row">&nbsp;</div>
</div>
<div class="form-group required-field-block">
<label class="col-sm-2 control-label"><?php echo $lang['wigrptime']; ?></label>
<div class="col-sm-10">
<textarea class="form-control required" data-pattern="^([0-9]{1,9}=>[0-9]{1,9}=>[0-1]{1},)*[0-9]{1,9}=>[0-9]{1,9}=>[0-1]{1}$" data-error="Wrong definition, please look at description for more details. No comma at ending!" rows="15" name="rankup_definition" maxlength="21588" required><?php $implode_definition = ''; foreach ($cfg['rankup_definition'] as $rank) { $implode_definition .= $rank['time']."=>".$rank['group']."=>".$rank['keep'].","; } $implode_definition = substr($implode_definition, 0, -1); echo $implode_definition; ?></textarea>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update_old"><?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wihladm0desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wigrptime']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wigrptime2desc'],$lang['wigrptime3desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm0desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wigrptime']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wigrptime2desc'],$lang['wigrptime3desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm1desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wigrptime']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wigrptimedesc'],$lang['wigrptime3desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
<div class="modal fade" id="wihladm1desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wigrptime']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wigrptimedesc'],$lang['wigrptime3desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
});
});
$(".rankuptime").TouchSpin({
min: 0,
max: 999999999,
verticalbuttons: true,
prefix: 'Sec.:'
});
function addrankupgroup() {
var $clone = $("div[name='rankupgroup']").last().clone();
$clone.insertBefore("#addrankupgroup");
$clone.find('.bootstrap-select').replaceWith(function() { return $('select', this); });
$clone.find('select').selectpicker('val', '');
$clone.find('.bootstrap-touchspin').replaceWith(function() { return $('input', this); });;
$("input[name='rankuptime[]']").last().TouchSpin({min: 0,max: 999999999,verticalbuttons: true,prefix: 'Sec.:'});
$("input[name='rankuptime[]']").last().trigger("touchspin.uponce");
$('.delete').removeClass("hidden");
};
$(document).on("click", ".delete", function(){
var $number = $('.delete').length;
if($number == 1) {
alert('Do not remove the last line! A definition without entries isn\'t valid!');
} else if($number == 2) {
$(this).parent().remove();
$('.delete').addClass("hidden");
} else {
$(this).parent().remove();
}
});
$(document).ready(function() {
var $number = $('.delete').length;
if($number == 1) {
$('.delete').remove();
}
});
$('#switchexpert1').on('switchChange.bootstrapSwitch', function() {
document.getElementById("new").classList.add("hidden");
document.getElementById("old").classList.remove("hidden");
$('#switchexpert2').bootstrapSwitch('state', true, false);
});
$('#switchexpert2').on('switchChange.bootstrapSwitch', function() {
document.getElementById("new").classList.remove("hidden");
document.getElementById("old").classList.add("hidden");
$('#switchexpert1').bootstrapSwitch('state', false, false);
});
</script>
</body>
</html>
$(".rankuptime").TouchSpin({
min: 0,
max: 999999999,
verticalbuttons: true,
prefix: 'Sec.:'
});
function addrankupgroup() {
var $clone = $("div[name='rankupgroup']").last().clone();
$clone.insertBefore("#addrankupgroup");
$clone.find('.bootstrap-select').replaceWith(function() { return $('select', this); });
$clone.find('select').selectpicker('val', '');
$clone.find('.bootstrap-touchspin').replaceWith(function() { return $('input', this); });;
$("input[name='rankuptime[]']").last().TouchSpin({min: 0,max: 999999999,verticalbuttons: true,prefix: 'Sec.:'});
$("input[name='rankuptime[]']").last().trigger("touchspin.uponce");
$('.delete').removeClass("hidden");
};
$(document).on("click", ".delete", function(){
var $number = $('.delete').length;
if($number == 1) {
alert('Do not remove the last line! A definition without entries isn\'t valid!');
} else if($number == 2) {
$(this).parent().remove();
$('.delete').addClass("hidden");
} else {
$(this).parent().remove();
}
});
$(document).ready(function() {
var $number = $('.delete').length;
if($number == 1) {
$('.delete').remove();
}
});
$('#switchexpert1').on('switchChange.bootstrapSwitch', function() {
document.getElementById("new").classList.add("hidden");
document.getElementById("old").classList.remove("hidden");
$('#switchexpert2').bootstrapSwitch('state', true, false);
});
$('#switchexpert2').on('switchChange.bootstrapSwitch', function() {
document.getElementById("new").classList.remove("hidden");
document.getElementById("old").classList.add("hidden");
$('#switchexpert1').bootstrapSwitch('state', false, false);
});
</script>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,377 +1,382 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
if (isset($_POST['stats_column_rank_switch'])) $cfg['stats_column_rank_switch'] = 1; else $cfg['stats_column_rank_switch'] = 0;
if (isset($_POST['stats_column_client_name_switch'])) $cfg['stats_column_client_name_switch'] = 1; else $cfg['stats_column_client_name_switch'] = 0;
if (isset($_POST['stats_column_unique_id_switch'])) $cfg['stats_column_unique_id_switch'] = 1; else $cfg['stats_column_unique_id_switch'] = 0;
if (isset($_POST['stats_column_client_db_id_switch'])) $cfg['stats_column_client_db_id_switch'] = 1; else $cfg['stats_column_client_db_id_switch'] = 0;
if (isset($_POST['stats_column_last_seen_switch'])) $cfg['stats_column_last_seen_switch'] = 1; else $cfg['stats_column_last_seen_switch'] = 0;
if (isset($_POST['stats_column_nation_switch'])) $cfg['stats_column_nation_switch'] = 1; else $cfg['stats_column_nation_switch'] = 0;
if (isset($_POST['stats_column_version_switch'])) $cfg['stats_column_version_switch'] = 1; else $cfg['stats_column_version_switch'] = 0;
if (isset($_POST['stats_column_platform_switch'])) $cfg['stats_column_platform_switch'] = 1; else $cfg['stats_column_platform_switch'] = 0;
if (isset($_POST['stats_column_online_time_switch'])) $cfg['stats_column_online_time_switch'] = 1; else $cfg['stats_column_online_time_switch'] = 0;
if (isset($_POST['stats_column_idle_time_switch'])) $cfg['stats_column_idle_time_switch'] = 1; else $cfg['stats_column_idle_time_switch'] = 0;
if (isset($_POST['stats_column_active_time_switch'])) $cfg['stats_column_active_time_switch'] = 1; else $cfg['stats_column_active_time_switch'] = 0;
if (isset($_POST['stats_column_current_server_group_switch'])) $cfg['stats_column_current_server_group_switch'] = 1; else $cfg['stats_column_current_server_group_switch'] = 0;
if (isset($_POST['stats_column_next_rankup_switch'])) $cfg['stats_column_next_rankup_switch'] = 1; else $cfg['stats_column_next_rankup_switch'] = 0;
if (isset($_POST['stats_column_next_server_group_switch'])) $cfg['stats_column_next_server_group_switch'] = 1; else $cfg['stats_column_next_server_group_switch'] = 0;
if (isset($_POST['stats_column_current_group_since_switch'])) $cfg['stats_column_current_group_since_switch'] = 1; else $cfg['stats_column_current_group_since_switch'] = 0;
if (isset($_POST['stats_show_excepted_clients_switch'])) $cfg['stats_show_excepted_clients_switch'] = 1; else $cfg['stats_show_excepted_clients_switch'] = 0;
if (isset($_POST['stats_show_clients_in_highest_rank_switch'])) $cfg['stats_show_clients_in_highest_rank_switch'] = 1; else $cfg['stats_show_clients_in_highest_rank_switch'] = 0;
$cfg['stats_column_default_order'] = $_POST['stats_column_default_order'];
$cfg['stats_column_default_sort'] = $_POST['stats_column_default_sort'];
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('stats_column_rank_switch','{$cfg['stats_column_rank_switch']}'),('stats_column_client_name_switch','{$cfg['stats_column_client_name_switch']}'),('stats_column_unique_id_switch','{$cfg['stats_column_unique_id_switch']}'),('stats_column_client_db_id_switch','{$cfg['stats_column_client_db_id_switch']}'),('stats_column_last_seen_switch','{$cfg['stats_column_last_seen_switch']}'),('stats_column_nation_switch','{$cfg['stats_column_nation_switch']}'),('stats_column_version_switch','{$cfg['stats_column_version_switch']}'),('stats_column_platform_switch','{$cfg['stats_column_platform_switch']}'),('stats_column_online_time_switch','{$cfg['stats_column_online_time_switch']}'),('stats_column_idle_time_switch','{$cfg['stats_column_idle_time_switch']}'),('stats_column_active_time_switch','{$cfg['stats_column_active_time_switch']}'),('stats_column_current_server_group_switch','{$cfg['stats_column_current_server_group_switch']}'),('stats_column_current_group_since_switch','{$cfg['stats_column_current_group_since_switch']}'),('stats_column_next_rankup_switch','{$cfg['stats_column_next_rankup_switch']}'),('stats_column_next_server_group_switch','{$cfg['stats_column_next_server_group_switch']}'),('stats_column_default_order','{$cfg['stats_column_default_order']}'),('stats_column_default_sort','{$cfg['stats_column_default_sort']}'),('stats_show_excepted_clients_switch','{$cfg['stats_show_excepted_clients_switch']}'),('stats_show_clients_in_highest_rank_switch','{$cfg['stats_show_clients_in_highest_rank_switch']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = NULL;
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['stnv0029'],' ',$lang['wihlset']; ?>
</h1>
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
if (isset($_POST['stats_column_rank_switch'])) $cfg['stats_column_rank_switch'] = 1; else $cfg['stats_column_rank_switch'] = 0;
if (isset($_POST['stats_column_client_name_switch'])) $cfg['stats_column_client_name_switch'] = 1; else $cfg['stats_column_client_name_switch'] = 0;
if (isset($_POST['stats_column_unique_id_switch'])) $cfg['stats_column_unique_id_switch'] = 1; else $cfg['stats_column_unique_id_switch'] = 0;
if (isset($_POST['stats_column_client_db_id_switch'])) $cfg['stats_column_client_db_id_switch'] = 1; else $cfg['stats_column_client_db_id_switch'] = 0;
if (isset($_POST['stats_column_last_seen_switch'])) $cfg['stats_column_last_seen_switch'] = 1; else $cfg['stats_column_last_seen_switch'] = 0;
if (isset($_POST['stats_column_nation_switch'])) $cfg['stats_column_nation_switch'] = 1; else $cfg['stats_column_nation_switch'] = 0;
if (isset($_POST['stats_column_version_switch'])) $cfg['stats_column_version_switch'] = 1; else $cfg['stats_column_version_switch'] = 0;
if (isset($_POST['stats_column_platform_switch'])) $cfg['stats_column_platform_switch'] = 1; else $cfg['stats_column_platform_switch'] = 0;
if (isset($_POST['stats_column_online_time_switch'])) $cfg['stats_column_online_time_switch'] = 1; else $cfg['stats_column_online_time_switch'] = 0;
if (isset($_POST['stats_column_idle_time_switch'])) $cfg['stats_column_idle_time_switch'] = 1; else $cfg['stats_column_idle_time_switch'] = 0;
if (isset($_POST['stats_column_active_time_switch'])) $cfg['stats_column_active_time_switch'] = 1; else $cfg['stats_column_active_time_switch'] = 0;
if (isset($_POST['stats_column_current_server_group_switch'])) $cfg['stats_column_current_server_group_switch'] = 1; else $cfg['stats_column_current_server_group_switch'] = 0;
if (isset($_POST['stats_column_next_rankup_switch'])) $cfg['stats_column_next_rankup_switch'] = 1; else $cfg['stats_column_next_rankup_switch'] = 0;
if (isset($_POST['stats_column_next_server_group_switch'])) $cfg['stats_column_next_server_group_switch'] = 1; else $cfg['stats_column_next_server_group_switch'] = 0;
if (isset($_POST['stats_column_current_group_since_switch'])) $cfg['stats_column_current_group_since_switch'] = 1; else $cfg['stats_column_current_group_since_switch'] = 0;
if (isset($_POST['stats_show_excepted_clients_switch'])) $cfg['stats_show_excepted_clients_switch'] = 1; else $cfg['stats_show_excepted_clients_switch'] = 0;
if (isset($_POST['stats_show_clients_in_highest_rank_switch'])) $cfg['stats_show_clients_in_highest_rank_switch'] = 1; else $cfg['stats_show_clients_in_highest_rank_switch'] = 0;
$cfg['stats_column_default_order'] = $_POST['stats_column_default_order'];
$cfg['stats_column_default_sort'] = $_POST['stats_column_default_sort'];
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('stats_column_rank_switch','{$cfg['stats_column_rank_switch']}'),('stats_column_client_name_switch','{$cfg['stats_column_client_name_switch']}'),('stats_column_unique_id_switch','{$cfg['stats_column_unique_id_switch']}'),('stats_column_client_db_id_switch','{$cfg['stats_column_client_db_id_switch']}'),('stats_column_last_seen_switch','{$cfg['stats_column_last_seen_switch']}'),('stats_column_nation_switch','{$cfg['stats_column_nation_switch']}'),('stats_column_version_switch','{$cfg['stats_column_version_switch']}'),('stats_column_platform_switch','{$cfg['stats_column_platform_switch']}'),('stats_column_online_time_switch','{$cfg['stats_column_online_time_switch']}'),('stats_column_idle_time_switch','{$cfg['stats_column_idle_time_switch']}'),('stats_column_active_time_switch','{$cfg['stats_column_active_time_switch']}'),('stats_column_current_server_group_switch','{$cfg['stats_column_current_server_group_switch']}'),('stats_column_current_group_since_switch','{$cfg['stats_column_current_group_since_switch']}'),('stats_column_next_rankup_switch','{$cfg['stats_column_next_rankup_switch']}'),('stats_column_next_server_group_switch','{$cfg['stats_column_next_server_group_switch']}'),('stats_column_default_order','{$cfg['stats_column_default_order']}'),('stats_column_default_sort','{$cfg['stats_column_default_sort']}'),('stats_show_excepted_clients_switch','{$cfg['stats_show_excepted_clients_switch']}'),('stats_show_clients_in_highest_rank_switch','{$cfg['stats_show_clients_in_highest_rank_switch']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = NULL;
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['stnv0029'],' ',$lang['wihlset']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listrank']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_rank_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_rank_switch" value="',$cfg['stats_column_rank_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_rank_switch" value="',$cfg['stats_column_rank_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listnick']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_client_name_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_client_name_switch" value="',$cfg['stats_column_client_name_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_client_name_switch" value="',$cfg['stats_column_client_name_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listuid']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_unique_id_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_unique_id_switch" value="',$cfg['stats_column_unique_id_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_unique_id_switch" value="',$cfg['stats_column_unique_id_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listcldbid']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_client_db_id_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_client_db_id_switch" value="',$cfg['stats_column_client_db_id_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_client_db_id_switch" value="',$cfg['stats_column_client_db_id_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listseen']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_last_seen_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_last_seen_switch" value="',$cfg['stats_column_last_seen_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_last_seen_switch" value="',$cfg['stats_column_last_seen_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listnat']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_nation_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_nation_switch" value="',$cfg['stats_column_nation_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_nation_switch" value="',$cfg['stats_column_nation_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listver']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_version_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_version_switch" value="',$cfg['stats_column_version_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_version_switch" value="',$cfg['stats_column_version_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listpla']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_platform_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_platform_switch" value="',$cfg['stats_column_platform_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_platform_switch" value="',$cfg['stats_column_platform_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listsumo']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_online_time_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_online_time_switch" value="',$cfg['stats_column_online_time_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_online_time_switch" value="',$cfg['stats_column_online_time_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listsumi']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_idle_time_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_idle_time_switch" value="',$cfg['stats_column_idle_time_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_idle_time_switch" value="',$cfg['stats_column_idle_time_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listsuma']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_active_time_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_active_time_switch" value="',$cfg['stats_column_active_time_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_active_time_switch" value="',$cfg['stats_column_active_time_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listacsg']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_current_server_group_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_current_server_group_switch" value="',$cfg['stats_column_current_server_group_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_current_server_group_switch" value="',$cfg['stats_column_current_server_group_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listgrps']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_current_group_since_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_current_group_since_switch" value="',$cfg['stats_column_current_group_since_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_current_group_since_switch" value="',$cfg['stats_column_current_group_since_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listnxup']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_next_rankup_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_next_rankup_switch" value="',$cfg['stats_column_next_rankup_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_next_rankup_switch" value="',$cfg['stats_column_next_rankup_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listnxsg']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_next_server_group_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_next_server_group_switch" value="',$cfg['stats_column_next_server_group_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_next_server_group_switch" value="',$cfg['stats_column_next_server_group_switch'],'">';
} ?>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishdefdesc"><?php echo $lang['wishdef']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="stats_column_default_sort">
<?PHP
echo '<option data-icon="fas fa-hashtag" data-subtext="[default]" value="rank"'.($cfg['stats_column_default_sort'] === '1' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listrank'].'</option>';
echo '<option data-icon="fas fa-user" value="name"'.($cfg['stats_column_default_sort'] === 'name' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listnick'].'</option>';
echo '<option data-icon="fas fa-id-card" value="uuid"'.($cfg['stats_column_default_sort'] === 'uuid' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listuid'].'</option>';
echo '<option data-icon="fas fa-database" value="cldbid"'.($cfg['stats_column_default_sort'] === 'cldbid' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listcldbid'].'</option>';
echo '<option data-icon="fas fa-user-clock" value="lastseen"'.($cfg['stats_column_default_sort'] === 'lastseen' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listseen'].'</option>';
echo '<option data-icon="fas fa-globe-europe" value="nation"'.($cfg['stats_column_default_sort'] === 'nation' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listnat'].'</option>';
echo '<option data-icon="fas fa-tag" value="version"'.($cfg['stats_column_default_sort'] === 'version' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listver'].'</option>';
echo '<option data-icon="fas fa-server" value="platform"'.($cfg['stats_column_default_sort'] === 'platform' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listpla'].'</option>';
echo '<option data-icon="fas fa-hourglass-start" value="count"'.($cfg['stats_column_default_sort'] === 'count' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listsumo'].'</option>';
echo '<option data-icon="fas fa-hourglass-end" value="idle"'.($cfg['stats_column_default_sort'] === 'idle' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listsumi'].'</option>';
echo '<option data-icon="fas fa-hourglass-half" value="active"'.($cfg['stats_column_default_sort'] === 'active' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listsuma'].'</option>';
echo '<option data-icon="fas fa-clipboard-check" value="grpid"'.($cfg['stats_column_default_sort'] === 'grpid' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listacsg'].'</option>';
echo '<option data-icon="fas fa-history" value="grpidsince"'.($cfg['stats_column_default_sort'] === 'grpidsince' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listgrps'].'</option>';
echo '<option data-icon="fas fa-clock" value="nextup"'.($cfg['stats_column_default_sort'] === 'nextup' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listnxup'].'</option>';
echo '<option data-icon="fas fa-clipboard-list" value="active"'.($cfg['stats_column_default_sort'] === 'active' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listnxsg'].'</option>';
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishsortdesc"><?php echo $lang['wishsort']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="stats_column_default_order">
<?PHP
echo '<option data-subtext="[ASC]" data-icon="fas fa-sort-asc" value="asc"'.($cfg['stats_column_default_order'] === 'asc' ? ' selected="selected"' : '').'>&nbsp;'.$lang['asc'].'</option>';
echo '<option data-subtext="[DESC]" data-icon="fas fa-sort-desc" value="desc"'.($cfg['stats_column_default_order'] === 'desc' ? ' selected="selected"' : '').'>&nbsp;'.$lang['desc'].'</option>';
?>
</select>
</div>
</div>
</div>
</div>
<div class="panel-body expertelement">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishexclddesc"><?php echo $lang['wishexcld']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_show_excepted_clients_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_show_excepted_clients_switch" value="',$cfg['stats_show_excepted_clients_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_show_excepted_clients_switch" value="',$cfg['stats_show_excepted_clients_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishhiclddesc"><?php echo $lang['wishhicld']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_show_clients_in_highest_rank_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_show_clients_in_highest_rank_switch" value="',$cfg['stats_show_clients_in_highest_rank_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_show_clients_in_highest_rank_switch" value="',$cfg['stats_show_clients_in_highest_rank_switch'],'">';
} ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listrank']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_rank_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_rank_switch" value="',$cfg['stats_column_rank_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_rank_switch" value="',$cfg['stats_column_rank_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listnick']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_client_name_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_client_name_switch" value="',$cfg['stats_column_client_name_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_client_name_switch" value="',$cfg['stats_column_client_name_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listuid']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_unique_id_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_unique_id_switch" value="',$cfg['stats_column_unique_id_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_unique_id_switch" value="',$cfg['stats_column_unique_id_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listcldbid']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_client_db_id_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_client_db_id_switch" value="',$cfg['stats_column_client_db_id_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_client_db_id_switch" value="',$cfg['stats_column_client_db_id_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listseen']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_last_seen_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_last_seen_switch" value="',$cfg['stats_column_last_seen_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_last_seen_switch" value="',$cfg['stats_column_last_seen_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listnat']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_nation_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_nation_switch" value="',$cfg['stats_column_nation_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_nation_switch" value="',$cfg['stats_column_nation_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listver']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_version_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_version_switch" value="',$cfg['stats_column_version_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_version_switch" value="',$cfg['stats_column_version_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listpla']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_platform_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_platform_switch" value="',$cfg['stats_column_platform_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_platform_switch" value="',$cfg['stats_column_platform_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listsumo']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_online_time_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_online_time_switch" value="',$cfg['stats_column_online_time_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_online_time_switch" value="',$cfg['stats_column_online_time_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listsumi']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_idle_time_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_idle_time_switch" value="',$cfg['stats_column_idle_time_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_idle_time_switch" value="',$cfg['stats_column_idle_time_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listsuma']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_active_time_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_active_time_switch" value="',$cfg['stats_column_active_time_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_active_time_switch" value="',$cfg['stats_column_active_time_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listacsg']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_current_server_group_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_current_server_group_switch" value="',$cfg['stats_column_current_server_group_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_current_server_group_switch" value="',$cfg['stats_column_current_server_group_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listgrps']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_current_group_since_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_current_group_since_switch" value="',$cfg['stats_column_current_group_since_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_current_group_since_switch" value="',$cfg['stats_column_current_group_since_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listnxup']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_next_rankup_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_next_rankup_switch" value="',$cfg['stats_column_next_rankup_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_next_rankup_switch" value="',$cfg['stats_column_next_rankup_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldesc"><?php echo $lang['listnxsg']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_column_next_server_group_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_column_next_server_group_switch" value="',$cfg['stats_column_next_server_group_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_column_next_server_group_switch" value="',$cfg['stats_column_next_server_group_switch'],'">';
} ?>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishdefdesc"><?php echo $lang['wishdef']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="stats_column_default_sort">
<?PHP
echo '<option data-icon="fas fa-hashtag" data-subtext="[default]" value="rank"'.($cfg['stats_column_default_sort'] === '1' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listrank'].'</option>';
echo '<option data-icon="fas fa-user" value="name"'.($cfg['stats_column_default_sort'] === 'name' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listnick'].'</option>';
echo '<option data-icon="fas fa-id-card" value="uuid"'.($cfg['stats_column_default_sort'] === 'uuid' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listuid'].'</option>';
echo '<option data-icon="fas fa-database" value="cldbid"'.($cfg['stats_column_default_sort'] === 'cldbid' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listcldbid'].'</option>';
echo '<option data-icon="fas fa-user-clock" value="lastseen"'.($cfg['stats_column_default_sort'] === 'lastseen' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listseen'].'</option>';
echo '<option data-icon="fas fa-globe-europe" value="nation"'.($cfg['stats_column_default_sort'] === 'nation' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listnat'].'</option>';
echo '<option data-icon="fas fa-tag" value="version"'.($cfg['stats_column_default_sort'] === 'version' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listver'].'</option>';
echo '<option data-icon="fas fa-server" value="platform"'.($cfg['stats_column_default_sort'] === 'platform' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listpla'].'</option>';
echo '<option data-icon="fas fa-hourglass-start" value="count"'.($cfg['stats_column_default_sort'] === 'count' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listsumo'].'</option>';
echo '<option data-icon="fas fa-hourglass-end" value="idle"'.($cfg['stats_column_default_sort'] === 'idle' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listsumi'].'</option>';
echo '<option data-icon="fas fa-hourglass-half" value="active"'.($cfg['stats_column_default_sort'] === 'active' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listsuma'].'</option>';
echo '<option data-icon="fas fa-clipboard-check" value="grpid"'.($cfg['stats_column_default_sort'] === 'grpid' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listacsg'].'</option>';
echo '<option data-icon="fas fa-history" value="grpidsince"'.($cfg['stats_column_default_sort'] === 'grpidsince' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listgrps'].'</option>';
echo '<option data-icon="fas fa-clock" value="nextup"'.($cfg['stats_column_default_sort'] === 'nextup' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listnxup'].'</option>';
echo '<option data-icon="fas fa-clipboard-list" value="active"'.($cfg['stats_column_default_sort'] === 'active' ? ' selected="selected"' : '').'>&nbsp;'.$lang['listnxsg'].'</option>';
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishsortdesc"><?php echo $lang['wishsort']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="stats_column_default_order">
<?PHP
echo '<option data-subtext="[ASC]" data-icon="fas fa-sort-asc" value="asc"'.($cfg['stats_column_default_order'] === 'asc' ? ' selected="selected"' : '').'>&nbsp;'.$lang['asc'].'</option>';
echo '<option data-subtext="[DESC]" data-icon="fas fa-sort-desc" value="desc"'.($cfg['stats_column_default_order'] === 'desc' ? ' selected="selected"' : '').'>&nbsp;'.$lang['desc'].'</option>';
?>
</select>
</div>
</div>
</div>
</div>
<div class="panel-body expertelement">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishexclddesc"><?php echo $lang['wishexcld']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_show_excepted_clients_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_show_excepted_clients_switch" value="',$cfg['stats_show_excepted_clients_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_show_excepted_clients_switch" value="',$cfg['stats_show_excepted_clients_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishhiclddesc"><?php echo $lang['wishhicld']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_show_clients_in_highest_rank_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_show_clients_in_highest_rank_switch" value="',$cfg['stats_show_clients_in_highest_rank_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_show_clients_in_highest_rank_switch" value="',$cfg['stats_show_clients_in_highest_rank_switch'],'">';
} ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
<div class="modal fade" id="wishcoldesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcol']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcoldesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcoldesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcol']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcoldesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishdefdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishdef']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishdefdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishsortdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishsort']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishsortdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishexclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishexcld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishexclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishhiclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishhicld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishhiclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<div class="modal fade" id="wishdefdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishdef']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishdefdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishsortdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishsort']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishsortdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishexclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishexcld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishexclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishhiclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishhicld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishhiclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,378 +1,383 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($job_check = $mysqlcon->query("SELECT * FROM `$dbname`.`job_check`")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
function reset_status($lang, $job_check, $check = NULL) {
$err_msg = "<b>".$lang['wihladm31']."</b>: ";
switch([$job_check['reset_user_time']['timestamp'],$job_check['reset_user_delete']['timestamp']]) {
case [0,1]:
if($check == 1) {
$err_msg .= $lang['wihladmrs16']." (".$lang['wisupidle'].": ".$lang['wihladm312'].")<br>"; break;
} else {
$err_msg .= $lang['wihladmrs1']." (".$lang['wisupidle'].": ".$lang['wihladm312'].")<br>"; break;
}
case [0,2]:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span> (".$lang['wisupidle'].": ".$lang['wihladm312'].")<br>"; break;
case [0,3]:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span> (".$lang['wisupidle'].": ".$lang['wihladm312'].")<br>"; break;
case [0,4]:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span> (".$lang['wisupidle'].": ".$lang['wihladm312'].")<br>"; break;
case [1,0]:
if($check == 1) {
$err_msg .= $lang['wihladmrs16']." (".$lang['wisupidle'].": ".$lang['wihladm311'].")<br>"; break;
} else {
$err_msg .= $lang['wihladmrs1']." (".$lang['wisupidle'].": ".$lang['wihladm311'].")<br>"; break;
}
case [2,0]:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span> (".$lang['wisupidle'].": ".$lang['wihladm311'].")<br>"; break;
case [3,0]:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span> (".$lang['wisupidle'].": ".$lang['wihladm311'].")<br>"; break;
case [4,0]:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span> (".$lang['wisupidle'].": ".$lang['wihladm311'].")<br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
$err_msg .= "<b>".$lang['wihladm32']."</b>: ";
switch($job_check['reset_group_withdraw']['timestamp']) {
case 1:
if($check == 1) {
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($job_check = $mysqlcon->query("SELECT * FROM `$dbname`.`job_check`")->fetchAll(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
function reset_status($lang, $job_check, $check = NULL) {
$err_msg = "<b>".$lang['wihladm31']."</b>: ";
switch([$job_check['reset_user_time']['timestamp'],$job_check['reset_user_delete']['timestamp']]) {
case [0,1]:
if($check == 1) {
$err_msg .= $lang['wihladmrs16']." (".$lang['wisupidle'].": ".$lang['wihladm312'].")<br>"; break;
} else {
$err_msg .= $lang['wihladmrs1']." (".$lang['wisupidle'].": ".$lang['wihladm312'].")<br>"; break;
}
case [0,2]:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span> (".$lang['wisupidle'].": ".$lang['wihladm312'].")<br>"; break;
case [0,3]:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span> (".$lang['wisupidle'].": ".$lang['wihladm312'].")<br>"; break;
case [0,4]:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span> (".$lang['wisupidle'].": ".$lang['wihladm312'].")<br>"; break;
case [1,0]:
if($check == 1) {
$err_msg .= $lang['wihladmrs16']." (".$lang['wisupidle'].": ".$lang['wihladm311'].")<br>"; break;
} else {
$err_msg .= $lang['wihladmrs1']." (".$lang['wisupidle'].": ".$lang['wihladm311'].")<br>"; break;
}
case [2,0]:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span> (".$lang['wisupidle'].": ".$lang['wihladm311'].")<br>"; break;
case [3,0]:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span> (".$lang['wisupidle'].": ".$lang['wihladm311'].")<br>"; break;
case [4,0]:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span> (".$lang['wisupidle'].": ".$lang['wihladm311'].")<br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
}
$err_msg .= "<b>".$lang['wihladm32']."</b>: ";
switch($job_check['reset_group_withdraw']['timestamp']) {
case 1:
if($check == 1) {
$err_msg .= $lang['wihladmrs16']."<br>"; break;
} else {
$err_msg .= $lang['wihladmrs1']."<br>"; break;
}
case 2:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span><br>"; break;
case 3:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span><br>"; break;
case 4:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span><br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
}
$err_msg .= "<b>".$lang['wihladm33']."</b>: ";
switch($job_check['reset_webspace_cache']['timestamp']) {
case 1:
if($check == 1) {
$err_msg .= $lang['wihladmrs16']."<br>"; break;
} else {
$err_msg .= $lang['wihladmrs1']."<br>"; break;
}
case 2:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span><br>"; break;
case 3:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span><br>"; break;
case 4:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span><br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
}
$err_msg .= "<b>".$lang['wihladm34']."</b>: ";
switch($job_check['reset_usage_graph']['timestamp']) {
case 1:
if($check == 1) {
$err_msg .= $lang['wihladmrs16']."<br>"; break;
} else {
$err_msg .= $lang['wihladmrs1']."<br>"; break;
}
case 2:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span><br>"; break;
case 3:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span><br>"; break;
case 4:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span><br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
}
$err_msg .= "<br><br><b>".$lang['wihladm36']."</b>: ";
switch($job_check['reset_stop_after']['timestamp']) {
case 1:
$err_msg .= $lang['wihladmrs16']."<br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
}
return $err_msg;
}
if($job_check['reset_user_time']['timestamp'] != 0 || $job_check['reset_user_delete']['timestamp'] != 0 || $job_check['reset_group_withdraw']['timestamp'] != 0 || $job_check['reset_webspace_cache']['timestamp'] != 0 || $job_check['reset_usage_graph']['timestamp'] != 0) {
$err_msg = '<b>'.$lang['wihladmrs'].":</b><br><br><pre>"; $err_lvl = 2;
$err_msg .= reset_status($lang, $job_check);
if(in_array($job_check['reset_user_time']['timestamp'], ["0","4"], true) && in_array($job_check['reset_user_delete']['timestamp'], ["0","4"], true) && in_array($job_check['reset_group_withdraw']['timestamp'], ["0","4"], true) && in_array($job_check['reset_webspace_cache']['timestamp'], ["0","4"], true) && in_array($job_check['reset_usage_graph']['timestamp'], ["0","4"], true)) {
$err_msg .= '</pre><br><br><br>'.sprintf($lang['wihladmrs9'], '<form class="btn-group" name="confirm" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-success btn-sm" name="confirm"><i class="fas fa-check"></i>&nbsp;', '</button></form>');
} else {
$err_msg .= '</pre><br>'.sprintf($lang['wihladmrs7'], '<form class="btn-group" name="refresh" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary btn-sm" name="refresh"><i class="fas fa-sync"></i>&nbsp;', '</button></form>').'<br><br>'.$lang['wihladmrs8'];
}
}
if (isset($_POST['confirm']) && isset($db_csrf[$_POST['csrf_token']])) {
if(in_array($job_check['reset_user_time']['timestamp'], ["0","4"], true) && in_array($job_check['reset_user_delete']['timestamp'], ["0","4"], true) && in_array($job_check['reset_group_withdraw']['timestamp'], ["0","4"], true) && in_array($job_check['reset_webspace_cache']['timestamp'], ["0","4"], true) && in_array($job_check['reset_usage_graph']['timestamp'], ["0","4"], true)) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`job_check` (`job_name`,`timestamp`) VALUES ('reset_user_time','0'),('reset_user_delete','0'),('reset_group_withdraw','0'),('reset_webspace_cache','0'),('reset_usage_graph','0'),('reset_stop_after','0') ON DUPLICATE KEY UPDATE `timestamp`=VALUES(`timestamp`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg .= $lang['wihladmrs1']."<br>"; break;
$err_msg = $lang['wihladmrs10'];
$err_lvl = NULL;
}
case 2:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span><br>"; break;
case 3:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span><br>"; break;
case 4:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span><br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
}
$err_msg .= "<b>".$lang['wihladm33']."</b>: ";
switch($job_check['reset_webspace_cache']['timestamp']) {
case 1:
if($check == 1) {
$err_msg .= $lang['wihladmrs16']."<br>"; break;
} else {
$err_msg .= $lang['wihladmrs1']."<br>"; break;
} else {
$err_msg = $lang['errukwn']; $err_lvl = 3;
}
} elseif (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
if($job_check['reset_user_time']['timestamp'] != 0 || $job_check['reset_user_delete']['timestamp'] != 0 || $job_check['reset_group_withdraw']['timestamp'] != 0 || $job_check['reset_webspace_cache']['timestamp'] != 0 || $job_check['reset_usage_graph']['timestamp'] != 0) {
$err_msg = '<b>'.$lang['wihladmrs6'].'</b><br><br>'.sprintf($lang['wihladmrs7'], '<form class="btn-group" name="refresh" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary btn-sm" name="refresh"><i class="fas fa-sync"></i>&nbsp;', '</button></form>').'<br><br>'.$lang['wihladmrs8'];
$err_lvl = 3;
} elseif($_POST['reset_user_time'] == 0 && !isset($_POST['reset_group_withdraw']) && !isset($_POST['reset_webspace_cache']) && !isset($_POST['reset_usage_graph'])) {
$err_msg = $lang['wihladmrs15']; $err_lvl = 3;
} else {
if(($stats_server = $mysqlcon->query("SELECT * FROM `$dbname`.`stats_server`")->fetch()) === false) {
$err_msg .= print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
case 2:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span><br>"; break;
case 3:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span><br>"; break;
case 4:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span><br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
}
$err_msg .= "<b>".$lang['wihladm34']."</b>: ";
switch($job_check['reset_usage_graph']['timestamp']) {
case 1:
if($check == 1) {
$err_msg .= $lang['wihladmrs16']."<br>"; break;
} else {
$err_msg .= $lang['wihladmrs1']."<br>"; break;
if(($groups = $mysqlcon->query("SELECT COUNT(*) AS `count` from `$dbname`.`groups`")->fetch()) === false) {
$err_msg .= print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
case 2:
$err_msg .= "<span class=\"alert-info\">".$lang['wihladmrs2']."</span><br>"; break;
case 3:
$err_msg .= "<span class=\"alert-danger\">".$lang['wihladmrs3']."</span><br>"; break;
case 4:
$err_msg .= "<span class=\"alert-success\">".$lang['wihladmrs4']."</span><br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
}
$err_msg .= "<br><br><b>".$lang['wihladm36']."</b>: ";
switch($job_check['reset_stop_after']['timestamp']) {
case 1:
$err_msg .= $lang['wihladmrs16']."<br>"; break;
default:
$err_msg .= "<span class=\"alert-secondary\"><i>".$lang['wihladmrs0']."</i></span><br>";
}
return $err_msg;
}
if (isset($_POST['reset_user_time']) && $_POST['reset_user_time'] == 1) {
$job_check['reset_user_time']['timestamp'] = 1;
} elseif (isset($_POST['reset_user_time']) && $_POST['reset_user_time'] == 2) {
$job_check['reset_user_delete']['timestamp'] = 1;
}
if (isset($_POST['reset_group_withdraw'])) $_POST['reset_group_withdraw'] = $job_check['reset_group_withdraw']['timestamp'] = 1; else $_POST['reset_group_withdraw'] = $job_check['reset_group_withdraw']['timestamp'] = 0;
if (isset($_POST['reset_webspace_cache'])) $_POST['reset_webspace_cache'] = $job_check['reset_webspace_cache']['timestamp'] = 1; else $_POST['reset_webspace_cache'] = $job_check['reset_webspace_cache']['timestamp'] = 0;
if (isset($_POST['reset_usage_graph'])) $_POST['reset_usage_graph'] = $job_check['reset_usage_graph']['timestamp'] = 1; else $_POST['reset_usage_graph'] = $job_check['reset_usage_graph']['timestamp'] = 0;
if (isset($_POST['reset_stop_after'])) $_POST['reset_stop_after'] = $job_check['reset_stop_after']['timestamp'] = 1; else $_POST['reset_stop_after'] = $job_check['reset_stop_after']['timestamp'] = 0;
if ($_POST['reset_group_withdraw'] == 0) $delay = 0; else $delay = ($cfg['teamspeak_query_command_delay'] / 1000000) + 0.05;
if ($_POST['reset_webspace_cache'] == 0) $cache_needed_time = 0; else $cache_needed_time = $stats_server['total_user'] / 10 * 0.005;
$time_to_begin = 5 * $cfg['teamspeak_query_command_delay'] / 1000000;
$est_time = round($delay * ($stats_server['total_user'] + $groups['count']) + $time_to_begin + $cache_needed_time);
$dtF = new \DateTime('@0');
$dtT = new \DateTime("@$est_time");
$est_time = $dtF->diff($dtT)->format($cfg['default_date_format']);
$err_msg = $lang['wihladmrs11'].': '.$est_time.'.<br>'.$lang['wihladmrs12'].'<br><br><pre>';
$err_msg .= reset_status($lang, $job_check, $check = 1);
$err_msg .= '</pre><br><br><form class="btn-group" name="startjobs" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><input type="hidden" name="reset_user_time" value="'.$_POST['reset_user_time'].'"><input type="hidden" name="reset_group_withdraw" value="'.$_POST['reset_group_withdraw'].'"><input type="hidden" name="reset_webspace_cache" value="'.$_POST['reset_webspace_cache'].'"><input type="hidden" name="reset_usage_graph" value="'.$_POST['reset_usage_graph'].'"><input type="hidden" name="reset_stop_after" value="'.$_POST['reset_stop_after'].'"><button type="submit" class="btn btn-success btn-sm" name="startjobs"><i class="fas fa-check"></i>&nbsp;'.$lang['wihladmrs13'].'</button></form>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<form class="btn-group" name="cancel" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-danger btn-sm" name="cancel"><i class="fas fa-times"></i>&nbsp;'.$lang['wihladmrs14'].'</button></form>';
$err_lvl = 1;
}
} elseif(isset($_POST['startjobs']) && isset($db_csrf[$_POST['csrf_token']])) {
if($_POST['reset_user_time'] == 1) {
$reset_user_time = 1;
$reset_user_delete = 0;
} elseif($_POST['reset_user_time'] == 2) {
$reset_user_delete = 1;
$reset_user_time = 0;
} else {
$reset_user_time = 0;
$reset_user_delete = 0;
}
if($job_check['reset_user_time']['timestamp'] != 0 || $job_check['reset_user_delete']['timestamp'] != 0 || $job_check['reset_group_withdraw']['timestamp'] != 0 || $job_check['reset_webspace_cache']['timestamp'] != 0 || $job_check['reset_usage_graph']['timestamp'] != 0) {
$err_msg = '<b>'.$lang['wihladmrs'].":</b><br><br><pre>"; $err_lvl = 2;
$err_msg .= reset_status($lang, $job_check);
if(in_array($job_check['reset_user_time']['timestamp'], ["0","4"], true) && in_array($job_check['reset_user_delete']['timestamp'], ["0","4"], true) && in_array($job_check['reset_group_withdraw']['timestamp'], ["0","4"], true) && in_array($job_check['reset_webspace_cache']['timestamp'], ["0","4"], true) && in_array($job_check['reset_usage_graph']['timestamp'], ["0","4"], true)) {
$err_msg .= '</pre><br><br><br>'.sprintf($lang['wihladmrs9'], '<form class="btn-group" name="confirm" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-success btn-sm" name="confirm"><i class="fas fa-check"></i>&nbsp;', '</button></form>');
} else {
$err_msg .= '</pre><br>'.sprintf($lang['wihladmrs7'], '<form class="btn-group" name="refresh" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary btn-sm" name="refresh"><i class="fas fa-sync"></i>&nbsp;', '</button></form>').'<br><br>'.$lang['wihladmrs8'];
}
}
if (isset($_POST['confirm']) && isset($db_csrf[$_POST['csrf_token']])) {
if(in_array($job_check['reset_user_time']['timestamp'], ["0","4"], true) && in_array($job_check['reset_user_delete']['timestamp'], ["0","4"], true) && in_array($job_check['reset_group_withdraw']['timestamp'], ["0","4"], true) && in_array($job_check['reset_webspace_cache']['timestamp'], ["0","4"], true) && in_array($job_check['reset_usage_graph']['timestamp'], ["0","4"], true)) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`job_check` (`job_name`,`timestamp`) VALUES ('reset_user_time','0'),('reset_user_delete','0'),('reset_group_withdraw','0'),('reset_webspace_cache','0'),('reset_usage_graph','0'),('reset_stop_after','0') ON DUPLICATE KEY UPDATE `timestamp`=VALUES(`timestamp`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`job_check` (`job_name`,`timestamp`) VALUES ('reset_user_time','{$reset_user_time}'),('reset_user_delete','{$reset_user_delete}'),('reset_group_withdraw','{$_POST['reset_group_withdraw']}'),('reset_webspace_cache','{$_POST['reset_webspace_cache']}'),('reset_usage_graph','{$_POST['reset_usage_graph']}'),('reset_stop_after','{$_POST['reset_stop_after']}') ON DUPLICATE KEY UPDATE `timestamp`=VALUES(`timestamp`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wihladmrs10'];
$err_msg = '<b>'.$lang['wihladmrs5'].'</b><br><br>'.sprintf($lang['wihladmrs7'], '<form class="btn-group" name="refresh" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary btn-sm" name="refresh"><i class="fas fa-sync"></i>&nbsp;', '</button></form>').'<br><br>'.$lang['wihladmrs8'];
$err_lvl = NULL;
}
} else {
$err_msg = $lang['errukwn']; $err_lvl = 3;
} elseif(isset($_POST['update']) || isset($_POST['confirm'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
} elseif (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
if($job_check['reset_user_time']['timestamp'] != 0 || $job_check['reset_user_delete']['timestamp'] != 0 || $job_check['reset_group_withdraw']['timestamp'] != 0 || $job_check['reset_webspace_cache']['timestamp'] != 0 || $job_check['reset_usage_graph']['timestamp'] != 0) {
$err_msg = '<b>'.$lang['wihladmrs6'].'</b><br><br>'.sprintf($lang['wihladmrs7'], '<form class="btn-group" name="refresh" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary btn-sm" name="refresh"><i class="fas fa-sync"></i>&nbsp;', '</button></form>').'<br><br>'.$lang['wihladmrs8'];
$err_lvl = 3;
} elseif($_POST['reset_user_time'] == 0 && !isset($_POST['reset_group_withdraw']) && !isset($_POST['reset_webspace_cache']) && !isset($_POST['reset_usage_graph'])) {
$err_msg = $lang['wihladmrs15']; $err_lvl = 3;
} else {
if(($stats_server = $mysqlcon->query("SELECT * FROM `$dbname`.`stats_server`")->fetch()) === false) {
$err_msg .= print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
if(($groups = $mysqlcon->query("SELECT COUNT(*) AS `count` from `$dbname`.`groups`")->fetch()) === false) {
$err_msg .= print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
if (isset($_POST['reset_user_time']) && $_POST['reset_user_time'] == 1) {
$job_check['reset_user_time']['timestamp'] = 1;
} elseif (isset($_POST['reset_user_time']) && $_POST['reset_user_time'] == 2) {
$job_check['reset_user_delete']['timestamp'] = 1;
}
if (isset($_POST['reset_group_withdraw'])) $_POST['reset_group_withdraw'] = $job_check['reset_group_withdraw']['timestamp'] = 1; else $_POST['reset_group_withdraw'] = $job_check['reset_group_withdraw']['timestamp'] = 0;
if (isset($_POST['reset_webspace_cache'])) $_POST['reset_webspace_cache'] = $job_check['reset_webspace_cache']['timestamp'] = 1; else $_POST['reset_webspace_cache'] = $job_check['reset_webspace_cache']['timestamp'] = 0;
if (isset($_POST['reset_usage_graph'])) $_POST['reset_usage_graph'] = $job_check['reset_usage_graph']['timestamp'] = 1; else $_POST['reset_usage_graph'] = $job_check['reset_usage_graph']['timestamp'] = 0;
if (isset($_POST['reset_stop_after'])) $_POST['reset_stop_after'] = $job_check['reset_stop_after']['timestamp'] = 1; else $_POST['reset_stop_after'] = $job_check['reset_stop_after']['timestamp'] = 0;
if ($_POST['reset_group_withdraw'] == 0) $delay = 0; else $delay = ($cfg['teamspeak_query_command_delay'] / 1000000) + 0.05;
if ($_POST['reset_webspace_cache'] == 0) $cache_needed_time = 0; else $cache_needed_time = $stats_server['total_user'] / 10 * 0.005;
$time_to_begin = 5 * $cfg['teamspeak_query_command_delay'] / 1000000;
$est_time = round($delay * ($stats_server['total_user'] + $groups['count']) + $time_to_begin + $cache_needed_time);
$dtF = new \DateTime('@0');
$dtT = new \DateTime("@$est_time");
$est_time = $dtF->diff($dtT)->format($cfg['default_date_format']);
$err_msg = $lang['wihladmrs11'].': '.$est_time.'.<br>'.$lang['wihladmrs12'].'<br><br><pre>';
$err_msg .= reset_status($lang, $job_check, $check = 1);
$err_msg .= '</pre><br><br><form class="btn-group" name="startjobs" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><input type="hidden" name="reset_user_time" value="'.$_POST['reset_user_time'].'"><input type="hidden" name="reset_group_withdraw" value="'.$_POST['reset_group_withdraw'].'"><input type="hidden" name="reset_webspace_cache" value="'.$_POST['reset_webspace_cache'].'"><input type="hidden" name="reset_usage_graph" value="'.$_POST['reset_usage_graph'].'"><input type="hidden" name="reset_stop_after" value="'.$_POST['reset_stop_after'].'"><button type="submit" class="btn btn-success btn-sm" name="startjobs"><i class="fas fa-check"></i>&nbsp;'.$lang['wihladmrs13'].'</button></form>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<form class="btn-group" name="cancel" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-danger btn-sm" name="cancel"><i class="fas fa-times"></i>&nbsp;'.$lang['wihladmrs14'].'</button></form>';
$err_lvl = 1;
}
} elseif(isset($_POST['startjobs']) && isset($db_csrf[$_POST['csrf_token']])) {
if($_POST['reset_user_time'] == 1) {
$reset_user_time = 1;
$reset_user_delete = 0;
} elseif($_POST['reset_user_time'] == 2) {
$reset_user_delete = 1;
$reset_user_time = 0;
} else {
$reset_user_time = 0;
$reset_user_delete = 0;
}
if ($mysqlcon->exec("INSERT INTO `$dbname`.`job_check` (`job_name`,`timestamp`) VALUES ('reset_user_time','{$reset_user_time}'),('reset_user_delete','{$reset_user_delete}'),('reset_group_withdraw','{$_POST['reset_group_withdraw']}'),('reset_webspace_cache','{$_POST['reset_webspace_cache']}'),('reset_usage_graph','{$_POST['reset_usage_graph']}'),('reset_stop_after','{$_POST['reset_stop_after']}') ON DUPLICATE KEY UPDATE `timestamp`=VALUES(`timestamp`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = '<b>'.$lang['wihladmrs5'].'</b><br><br>'.sprintf($lang['wihladmrs7'], '<form class="btn-group" name="refresh" action="reset.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button type="submit" class="btn btn-primary btn-sm" name="refresh"><i class="fas fa-sync"></i>&nbsp;', '</button></form>').'<br><br>'.$lang['wihladmrs8'];
$err_lvl = NULL;
}
} elseif(isset($_POST['update']) || isset($_POST['confirm'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihladm3']; ?>
</h1>
</div>
</div>
<form name="post" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="form-horizontal">
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#wihladm0desc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihladm3']; ?>
</h1>
</div>
</div>
<form name="post" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="form-horizontal">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label class="col-sm-12 pointer" data-toggle="modal" data-target="#wihladm0desc"><?php echo $lang['wihladm0']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="panel-body">
</div>
</div>
</div>
</div>
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wihladm31desc"><?php echo $lang['wihladm31']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="reset_user_time">
<option data-icon="fas fa-ban" selected="selected" value="0">&nbsp;<?PHP echo $lang['winxmode1']; ?></option>
<option data-divider="true">&nbsp;</option>
<option data-icon="fas fa-history" value="1">&nbsp;<?PHP echo $lang['wihladm311']; ?></option>
<option data-icon="fas fa-user-slash" value="2">&nbsp;<?PHP echo $lang['wihladm312']; ?></option>
</select>
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wihladm31desc"><?php echo $lang['wihladm31']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="reset_user_time">
<option data-icon="fas fa-ban" selected="selected" value="0">&nbsp;<?PHP echo $lang['winxmode1']; ?></option>
<option data-divider="true">&nbsp;</option>
<option data-icon="fas fa-history" value="1">&nbsp;<?PHP echo $lang['wihladm311']; ?></option>
<option data-icon="fas fa-user-slash" value="2">&nbsp;<?PHP echo $lang['wihladm312']; ?></option>
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wihladm32desc"><?php echo $lang['wihladm32']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input class="switch-animate" type="checkbox" data-size="mini" name="reset_group_withdraw" value="0">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wihladm32desc"><?php echo $lang['wihladm32']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input class="switch-animate" type="checkbox" data-size="mini" name="reset_group_withdraw" value="0">
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wihladm33desc"><?php echo $lang['wihladm33']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input class="switch-animate" type="checkbox" data-size="mini" name="reset_webspace_cache" value="0">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wihladm33desc"><?php echo $lang['wihladm33']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input class="switch-animate" type="checkbox" data-size="mini" name="reset_webspace_cache" value="0">
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wihladm34desc"><?php echo $lang['wihladm34']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input class="switch-animate" type="checkbox" data-size="mini" name="reset_usage_graph" value="0">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wihladm34desc"><?php echo $lang['wihladm34']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input class="switch-animate" type="checkbox" data-size="mini" name="reset_usage_graph" value="0">
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wihladm36desc"><?php echo $lang['wihladm36']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input class="switch-animate" type="checkbox" data-size="mini" name="reset_stop_after" value="0">
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wihladm36desc"><?php echo $lang['wihladm36']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input class="switch-animate" type="checkbox" data-size="mini" name="reset_stop_after" value="0">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><?php echo $lang['wihladm35']; ?></button>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><?php echo $lang['wihladm35']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</form>
</div>
</div>
<div class="modal fade" id="wihladm0desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm0']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm0desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm0desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm0']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm0desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm31desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm31']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm31desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm32desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm32']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm32desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm33desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm33']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm33desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm34desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm34']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm34desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm36desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm36']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm36desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<div class="modal fade" id="wihladm31desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm31']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm31desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm32desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm32']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm32desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm33desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm33']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm33desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm34desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm34']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm34desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wihladm36desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wihladm36']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wihladm36desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,116 +1,119 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($last_access = $mysqlcon->query("SELECT * FROM `$dbname`.`cfg_params` WHERE `param` IN ('webinterface_access_last','webinterface_access_count')")->fetchAll(PDO::FETCH_KEY_PAIR) === false) {
$err_msg .= print_r($mysqlcon->errorInfo(), true);
}
try {
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if ($last_access = $mysqlcon->query("SELECT * FROM `$dbname`.`cfg_params` WHERE `param` IN ('webinterface_access_last','webinterface_access_count')")->fetchAll(PDO::FETCH_KEY_PAIR) === false) {
$err_msg .= print_r($mysqlcon->errorInfo(), true);
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (($last_access['webinterface_access_last'] + 1) >= time()) {
$again = $last_access['webinterface_access_last'] + 2 - time();
$err_msg = sprintf($lang['errlogin2'],$again);
$err_lvl = 3;
} elseif (isset($_POST['resetpw']) && isset($db_csrf[$_POST['csrf_token']]) && ($cfg['webinterface_admin_client_unique_id_list']==NULL || count($cfg['webinterface_admin_client_unique_id_list']) == 0)) {
$err_msg = sprintf($lang['wirtpw1'], '<a href="https://github.com/Newcomer1989/TSN-Ranksystem/wiki/FAQ#reset-password-webinterface" target="_blank">https://github.com/Newcomer1989/TSN-Ranksystem/wiki/FAQ#reset-password-webinterface</a>'); $err_lvl=3;
} elseif (isset($_POST['resetpw']) && isset($db_csrf[$_POST['csrf_token']])) {
$nowtime = time();
$newcount = $last_access['webinterface_access_count'] + 1;
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_access_last','{$nowtime}'),('webinterface_access_count','{$newcount}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) { }
require_once(substr(__DIR__,0,-12).'libs/ts3_lib/TeamSpeak3.php');
try {
if($cfg['teamspeak_query_encrypt_switch'] == 1) {
$ts3 = TeamSpeak3::factory("serverquery://".rawurlencode($cfg['teamspeak_query_user']).":".rawurlencode($cfg['teamspeak_query_pass'])."@".$cfg['teamspeak_host_address'].":".$cfg['teamspeak_query_port']."/?server_port=".$cfg['teamspeak_voice_port']."&ssh=1");
} else {
$ts3 = TeamSpeak3::factory("serverquery://".rawurlencode($cfg['teamspeak_query_user']).":".rawurlencode($cfg['teamspeak_query_pass'])."@".$cfg['teamspeak_host_address'].":".$cfg['teamspeak_query_port']."/?server_port=".$cfg['teamspeak_voice_port']."&blocking=0");
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (($last_access['webinterface_access_last'] + 1) >= time()) {
$again = $last_access['webinterface_access_last'] + 2 - time();
$err_msg = sprintf($lang['errlogin2'],$again);
$err_lvl = 3;
} elseif (isset($_POST['resetpw']) && isset($db_csrf[$_POST['csrf_token']]) && ($cfg['webinterface_admin_client_unique_id_list']==NULL || count($cfg['webinterface_admin_client_unique_id_list']) == 0)) {
$err_msg = sprintf($lang['wirtpw1'], '<a href="https://github.com/Newcomer1989/TSN-Ranksystem/wiki/FAQ#reset-password-webinterface" target="_blank">https://github.com/Newcomer1989/TSN-Ranksystem/wiki/FAQ#reset-password-webinterface</a>'); $err_lvl=3;
} elseif (isset($_POST['resetpw']) && isset($db_csrf[$_POST['csrf_token']])) {
$nowtime = time();
$newcount = $last_access['webinterface_access_count'] + 1;
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_access_last','{$nowtime}'),('webinterface_access_count','{$newcount}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) { }
require_once(substr(__DIR__,0,-12).'libs/ts3_lib/TeamSpeak3.php');
try {
usleep($cfg['teamspeak_query_command_delay']);
$ts3->selfUpdate(array('client_nickname' => "Ranksystem - Reset Password"));
} catch (Exception $e) { }
try {
usleep($cfg['teamspeak_query_command_delay']);
$allclients = $ts3->clientList();
if($cfg['teamspeak_query_encrypt_switch'] == 1) {
$ts3 = TeamSpeak3::factory("serverquery://".rawurlencode($cfg['teamspeak_query_user']).":".rawurlencode($cfg['teamspeak_query_pass'])."@".$cfg['teamspeak_host_address'].":".$cfg['teamspeak_query_port']."/?server_port=".$cfg['teamspeak_voice_port']."&ssh=1");
} else {
$ts3 = TeamSpeak3::factory("serverquery://".rawurlencode($cfg['teamspeak_query_user']).":".rawurlencode($cfg['teamspeak_query_pass'])."@".$cfg['teamspeak_host_address'].":".$cfg['teamspeak_query_port']."/?server_port=".$cfg['teamspeak_voice_port']."&blocking=0");
}
try {
usleep($cfg['teamspeak_query_command_delay']);
$ts3->selfUpdate(array('client_nickname' => "Ranksystem - Reset Password"));
} catch (Exception $e) { }
try {
usleep($cfg['teamspeak_query_command_delay']);
$allclients = $ts3->clientList();
$pwd = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#*+;:-_~?=%&!()'),0,12);
$cfg['webinterface_pass'] = password_hash($pwd, PASSWORD_DEFAULT);
$pwd = substr(str_shuffle('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#*+;:-_~?=%&!()'),0,12);
$cfg['webinterface_pass'] = password_hash($pwd, PASSWORD_DEFAULT);
foreach($allclients as $client) {
if(array_key_exists(htmlspecialchars($client['client_unique_identifier'], ENT_QUOTES), $cfg['webinterface_admin_client_unique_id_list'])) {
$checkuuid = 1;
if($client['connection_client_ip'] == getclientip()) {
$checkip = 1;
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_pass','{$cfg['webinterface_pass']}'),('webinterface_access_last','0') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) {
$err_msg .= $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} else {
try {
usleep($cfg['teamspeak_query_command_delay']);
$ts3->clientGetByUid($client['client_unique_identifier'])->message(sprintf($lang['wirtpw4'], $cfg['webinterface_user'], $pwd, '[URL=http'.(!empty($_SERVER['HTTPS'])?"s":"").'://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME']).']','[/URL]'));
$err_msg .= sprintf($lang['wirtpw5'],'<a href="http'.(!empty($_SERVER['HTTPS'])?"s":"").'://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME']).'/">','</a>'); $err_lvl = 1;
enter_logfile($cfg,3,sprintf($lang['wirtpw6'],getclientip()));
} catch (Exception $e) {
$err_msg .= $lang['errorts3'].$e->getCode().': '.$e->getMessage(); $err_lvl = 3;
foreach($allclients as $client) {
if(array_key_exists(htmlspecialchars($client['client_unique_identifier'], ENT_QUOTES), $cfg['webinterface_admin_client_unique_id_list'])) {
$checkuuid = 1;
if($client['connection_client_ip'] == getclientip()) {
$checkip = 1;
if($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('webinterface_pass','{$cfg['webinterface_pass']}'),('webinterface_access_last','0') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`)") === false) {
$err_msg .= $lang['isntwidbmsg'].print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
} else {
try {
usleep($cfg['teamspeak_query_command_delay']);
$ts3->clientGetByUid($client['client_unique_identifier'])->message(sprintf($lang['wirtpw4'], $cfg['webinterface_user'], $pwd, '[URL=http'.(!empty($_SERVER['HTTPS'])?"s":"").'://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME']).']','[/URL]'));
$err_msg .= sprintf($lang['wirtpw5'],'<a href="http'.(!empty($_SERVER['HTTPS'])?"s":"").'://'.$_SERVER['SERVER_NAME'].dirname($_SERVER['SCRIPT_NAME']).'/">','</a>'); $err_lvl = 1;
enter_logfile($cfg,3,sprintf($lang['wirtpw6'],getclientip()));
} catch (Exception $e) {
$err_msg .= $lang['errorts3'].$e->getCode().': '.$e->getMessage(); $err_lvl = 3;
}
}
}
}
}
}
if (!isset($checkuuid)) {
$err_msg = $lang['wirtpw2']; $err_lvl = 3;
} elseif (!isset($checkip)) {
$err_msg = $lang['wirtpw3']; $err_lvl = 3;
if (!isset($checkuuid)) {
$err_msg = $lang['wirtpw2']; $err_lvl = 3;
} elseif (!isset($checkip)) {
$err_msg = $lang['wirtpw3']; $err_lvl = 3;
}
} catch (Exception $e) {
$err_msg = $lang['errorts3'].$e->getCode().': '.$e->getMessage(); $err_lvl = 3;
}
} catch (Exception $e) {
$err_msg = $lang['errorts3'].$e->getCode().': '.$e->getMessage(); $err_lvl = 3;
}
} catch (Exception $e) {
$err_msg = $lang['errorts3'].$e->getCode().': '.$e->getMessage(); $err_lvl = 3;
} elseif(isset($_POST['resetpw'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
} elseif(isset($_POST['resetpw'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div id="login-overlay" class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel"><?PHP echo $lang['wirtpw7'].' - '.$lang['wi']; ?></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-xs-12">
<form id="resetForm" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<p><?PHP echo $lang['wirtpw8']; ?></p>
<p><?PHP echo $lang['wirtpw9']; ?>
<ul>
<li><?PHP echo $lang['wirtpw10']; ?></li>
<li><?PHP echo $lang['wirtpw11']; ?></li>
<li><?PHP echo $lang['wirtpw12']; ?></li>
</ul>
</p>
<br>
<p>
<button type="submit" class="btn btn-success btn-block" name="resetpw"><?PHP echo $lang['wirtpw7']; ?></button>
</p>
</form>
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div id="login-overlay" class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel"><?PHP echo $lang['wirtpw7'].' - '.$lang['wi']; ?></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-xs-12">
<form id="resetForm" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<p><?PHP echo $lang['wirtpw8']; ?></p>
<p><?PHP echo $lang['wirtpw9']; ?>
<ul>
<li><?PHP echo $lang['wirtpw10']; ?></li>
<li><?PHP echo $lang['wirtpw11']; ?></li>
<li><?PHP echo $lang['wirtpw12']; ?></li>
</ul>
</p>
<br>
<p>
<button type="submit" class="btn btn-success btn-block" name="resetpw"><?PHP echo $lang['wirtpw7']; ?></button>
</p>
</form>
</div>
</div>
</div>
</div>
@@ -118,6 +121,8 @@ if (($last_access['webinterface_access_last'] + 1) >= time()) {
</div>
</div>
</div>
</div>
</body>
</html>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,334 +1,345 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
if (isset($_POST['stats_show_site_navigation_switch'])) $cfg['stats_show_site_navigation_switch'] = 1; else $cfg['stats_show_site_navigation_switch'] = 0;
if (isset($_POST['teamspeak_verification_channel_id'])) $cfg['teamspeak_verification_channel_id'] = $_POST['teamspeak_verification_channel_id']; else $cfg['teamspeak_verification_channel_id'] = 0;
$cfg['stats_show_maxclientsline_switch'] = $_POST['stats_show_maxclientsline_switch'];
$cfg['stats_time_bronze'] = $_POST['stats_time_bronze'];
$cfg['stats_time_silver'] = $_POST['stats_time_silver'];
$cfg['stats_time_gold'] = $_POST['stats_time_gold'];
$cfg['stats_time_legend'] = $_POST['stats_time_legend'];
$cfg['stats_connects_bronze'] = $_POST['stats_connects_bronze'];
$cfg['stats_connects_silver'] = $_POST['stats_connects_silver'];
$cfg['stats_connects_gold'] = $_POST['stats_connects_gold'];
$cfg['stats_connects_legend'] = $_POST['stats_connects_legend'];
$cfg['stats_server_news'] = addslashes($_POST['stats_server_news']);
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('stats_show_site_navigation_switch','{$cfg['stats_show_site_navigation_switch']}'),('stats_show_maxclientsline_switch','{$cfg['stats_show_maxclientsline_switch']}'),('stats_time_bronze','{$cfg['stats_time_bronze']}'),('stats_time_silver','{$cfg['stats_time_silver']}'),('stats_time_gold','{$cfg['stats_time_gold']}'),('stats_time_legend','{$cfg['stats_time_legend']}'),('stats_connects_bronze','{$cfg['stats_connects_bronze']}'),('stats_connects_silver','{$cfg['stats_connects_silver']}'),('stats_connects_gold','{$cfg['stats_connects_gold']}'),('stats_connects_legend','{$cfg['stats_connects_legend']}'),('teamspeak_verification_channel_id','{$cfg['teamspeak_verification_channel_id']}'),('stats_server_news','{$cfg['stats_server_news']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = NULL;
}
$cfg['stats_server_news'] = $_POST['stats_server_news'];
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['winav6'],' ',$lang['wihlset']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
}
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$old_nav = $cfg['stats_show_site_navigation_switch'];
if (isset($_POST['stats_show_site_navigation_switch'])) $cfg['stats_show_site_navigation_switch'] = 1; else $cfg['stats_show_site_navigation_switch'] = 0;
if (isset($_POST['teamspeak_verification_channel_id'])) $cfg['teamspeak_verification_channel_id'] = $_POST['teamspeak_verification_channel_id']; else $cfg['teamspeak_verification_channel_id'] = 0;
$cfg['stats_show_maxclientsline_switch'] = $_POST['stats_show_maxclientsline_switch'];
$cfg['stats_time_bronze'] = $_POST['stats_time_bronze'];
$cfg['stats_time_silver'] = $_POST['stats_time_silver'];
$cfg['stats_time_gold'] = $_POST['stats_time_gold'];
$cfg['stats_time_legend'] = $_POST['stats_time_legend'];
$cfg['stats_connects_bronze'] = $_POST['stats_connects_bronze'];
$cfg['stats_connects_silver'] = $_POST['stats_connects_silver'];
$cfg['stats_connects_gold'] = $_POST['stats_connects_gold'];
$cfg['stats_connects_legend'] = $_POST['stats_connects_legend'];
$cfg['stats_server_news'] = addslashes($_POST['stats_server_news']);
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('stats_show_site_navigation_switch','{$cfg['stats_show_site_navigation_switch']}'),('stats_show_maxclientsline_switch','{$cfg['stats_show_maxclientsline_switch']}'),('stats_time_bronze','{$cfg['stats_time_bronze']}'),('stats_time_silver','{$cfg['stats_time_silver']}'),('stats_time_gold','{$cfg['stats_time_gold']}'),('stats_time_legend','{$cfg['stats_time_legend']}'),('stats_connects_bronze','{$cfg['stats_connects_bronze']}'),('stats_connects_silver','{$cfg['stats_connects_silver']}'),('stats_connects_gold','{$cfg['stats_connects_gold']}'),('stats_connects_legend','{$cfg['stats_connects_legend']}'),('teamspeak_verification_channel_id','{$cfg['teamspeak_verification_channel_id']}'),('stats_server_news','{$cfg['stats_server_news']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = 0;
$url = 'https://github.com/Newcomer1989/TSN-Ranksystem/wiki/FAQ#embed-the-statistic-page-with-an-iframe';
if($old_nav != $cfg['stats_show_site_navigation_switch'] && $old_nav == 1) {
$err_msg .= '#####'.$lang['winav14'].'<br><a href="'.$url.'" target="_blank">'.$url.'</a>';
$err_lvl .= "#1";
}
}
$cfg['stats_server_news'] = $_POST['stats_server_news'];
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['winav6'],' ',$lang['wihlset']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisttidesc"><?php echo $lang['achieve'],' ',$lang['stmy0019']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_time_bronze" value="<?php echo $cfg['stats_time_bronze']; ?>">
<script>
$("input[name='stats_time_bronze']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: 'Hour(s):'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisttidesc"><?php echo $lang['achieve'],' ',$lang['stmy0017']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_time_silver" value="<?php echo $cfg['stats_time_silver']; ?>">
<script>
$("input[name='stats_time_silver']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: 'Hour(s):'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisttidesc"><?php echo $lang['achieve'],' ',$lang['stmy0015']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_time_gold" value="<?php echo $cfg['stats_time_gold']; ?>">
<script>
$("input[name='stats_time_gold']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: 'Hour(s):'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisttidesc"><?php echo $lang['achieve'],' ',$lang['stmy0012']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_time_legend" value="<?php echo $cfg['stats_time_legend']; ?>">
<script>
$("input[name='stats_time_legend']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: 'Hour(s):'
});
</script>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wistcodesc"><?php echo $lang['achieve'],' ',$lang['stmy0028']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_connects_bronze" value="<?php echo $cfg['stats_connects_bronze']; ?>">
<script>
$("input[name='stats_connects_bronze']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: '#'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wistcodesc"><?php echo $lang['achieve'],' ',$lang['stmy0027']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_connects_silver" value="<?php echo $cfg['stats_connects_silver']; ?>">
<script>
$("input[name='stats_connects_silver']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: '#'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wistcodesc"><?php echo $lang['achieve'],' ',$lang['stmy0026']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_connects_gold" value="<?php echo $cfg['stats_connects_gold']; ?>">
<script>
$("input[name='stats_connects_gold']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: '#'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wistcodesc"><?php echo $lang['achieve'],' ',$lang['stmy0024']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_connects_legend" value="<?php echo $cfg['stats_connects_legend']; ?>">
<script>
$("input[name='stats_connects_legend']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: '#'
});
</script>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishnavdesc"><?php echo $lang['wishnav']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_show_site_navigation_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_show_site_navigation_switch" value="',$cfg['stats_show_site_navigation_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_show_site_navigation_switch" value="',$cfg['stats_show_site_navigation_switch'],'">';
} ?>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiverifydesc"><?php echo $lang['wiverify']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="teamspeak_verification_channel_id" value="<?php echo $cfg['teamspeak_verification_channel_id']; ?>">
<script>
$("input[name='teamspeak_verification_channel_id']").TouchSpin({
min: 0,
max: 16777215,
verticalbuttons: true,
prefix: 'ID:'
});
</script>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishmaxdesc"><?php echo $lang['wishmax']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="stats_show_maxclientsline_switch">
<?PHP
echo '<option data-subtext="[default]" value="0"'; if($cfg['stats_show_maxclientsline_switch']=="0") echo " selected=selected"; echo '>',$lang['wishmax0'],'</option>';
echo '<option value="1"'; if($cfg['stats_show_maxclientsline_switch']=="1") echo " selected=selected"; echo '>',$lang['wishmax1'],'</option>';
echo '<option value="2"'; if($cfg['stats_show_maxclientsline_switch']=="2") echo " selected=selected"; echo '>',$lang['wishmax2'],'</option>';
echo '<option value="3"'; if($cfg['stats_show_maxclientsline_switch']=="3") echo " selected=selected"; echo '>',$lang['wishmax3'],'</option>';
?>
</select>
</div>
</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisttidesc"><?php echo $lang['achieve'],' ',$lang['stmy0019']; ?><i class="help-hover fas fa-question-circle"></i></label>
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wimsgsndesc"><?php echo $lang['wimsgsn']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_time_bronze" value="<?php echo $cfg['stats_time_bronze']; ?>">
<script>
$("input[name='stats_time_bronze']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: 'Hour(s):'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisttidesc"><?php echo $lang['achieve'],' ',$lang['stmy0017']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_time_silver" value="<?php echo $cfg['stats_time_silver']; ?>">
<script>
$("input[name='stats_time_silver']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: 'Hour(s):'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisttidesc"><?php echo $lang['achieve'],' ',$lang['stmy0015']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_time_gold" value="<?php echo $cfg['stats_time_gold']; ?>">
<script>
$("input[name='stats_time_gold']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: 'Hour(s):'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisttidesc"><?php echo $lang['achieve'],' ',$lang['stmy0012']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_time_legend" value="<?php echo $cfg['stats_time_legend']; ?>">
<script>
$("input[name='stats_time_legend']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: 'Hour(s):'
});
</script>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wistcodesc"><?php echo $lang['achieve'],' ',$lang['stmy0028']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_connects_bronze" value="<?php echo $cfg['stats_connects_bronze']; ?>">
<script>
$("input[name='stats_connects_bronze']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: '#'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wistcodesc"><?php echo $lang['achieve'],' ',$lang['stmy0027']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_connects_silver" value="<?php echo $cfg['stats_connects_silver']; ?>">
<script>
$("input[name='stats_connects_silver']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: '#'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wistcodesc"><?php echo $lang['achieve'],' ',$lang['stmy0026']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_connects_gold" value="<?php echo $cfg['stats_connects_gold']; ?>">
<script>
$("input[name='stats_connects_gold']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: '#'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wistcodesc"><?php echo $lang['achieve'],' ',$lang['stmy0024']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="stats_connects_legend" value="<?php echo $cfg['stats_connects_legend']; ?>">
<script>
$("input[name='stats_connects_legend']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: '#'
});
</script>
<textarea class="form-control" rows="15" name="stats_server_news" maxlength="21588"><?php echo $cfg['stats_server_news']; ?></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishnavdesc"><?php echo $lang['wishnav']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['stats_show_site_navigation_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="stats_show_site_navigation_switch" value="',$cfg['stats_show_site_navigation_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="stats_show_site_navigation_switch" value="',$cfg['stats_show_site_navigation_switch'],'">';
} ?>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiverifydesc"><?php echo $lang['wiverify']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="teamspeak_verification_channel_id" value="<?php echo $cfg['teamspeak_verification_channel_id']; ?>">
<script>
$("input[name='teamspeak_verification_channel_id']").TouchSpin({
min: 0,
max: 16777215,
verticalbuttons: true,
prefix: 'ID:'
});
</script>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishmaxdesc"><?php echo $lang['wishmax']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control basic" name="stats_show_maxclientsline_switch">
<?PHP
echo '<option data-subtext="[default]" value="0"'; if($cfg['stats_show_maxclientsline_switch']=="0") echo " selected=selected"; echo '>',$lang['wishmax0'],'</option>';
echo '<option value="1"'; if($cfg['stats_show_maxclientsline_switch']=="1") echo " selected=selected"; echo '>',$lang['wishmax1'],'</option>';
echo '<option value="2"'; if($cfg['stats_show_maxclientsline_switch']=="2") echo " selected=selected"; echo '>',$lang['wishmax2'],'</option>';
echo '<option value="3"'; if($cfg['stats_show_maxclientsline_switch']=="3") echo " selected=selected"; echo '>',$lang['wishmax3'],'</option>';
?>
</select>
</div>
</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wimsgsndesc"><?php echo $lang['wimsgsn']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<textarea class="form-control" rows="15" name="stats_server_news" maxlength="21588"><?php echo $cfg['stats_server_news']; ?></textarea>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wishnavdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishnav']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishnavdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishnavdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishnav']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishnavdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishmaxdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishmax']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishmaxdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wisttidesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['achieve']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wisttidesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wistcodesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['achieve']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wistcodesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiverifydesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiverify']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiverifydesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wimsgsndesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wimsgsn']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wimsgsndesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<div class="modal fade" id="wishmaxdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishmax']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishmaxdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wisttidesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['achieve']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wisttidesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wistcodesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['achieve']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wistcodesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiverifydesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiverify']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiverifydesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wimsgsndesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wimsgsn']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wimsgsndesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>

View File

@@ -1,421 +1,426 @@
<?PHP
require_once('_preload.php');
require_once('_nav.php');
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
try {
require_once('_nav.php');
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($user_arr = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` ORDER BY `name` ASC")->fetchAll(PDO::FETCH_ASSOC)) === false) {
$err_msg = "DB Error1: ".print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$cfg['webinterface_admin_client_unique_id_list'] = '';
if (isset($_POST['webinterface_admin_client_unique_id_list']) && $_POST['webinterface_admin_client_unique_id_list'] != NULL) {
$cfg['webinterface_admin_client_unique_id_list'] = implode(',',$_POST['webinterface_admin_client_unique_id_list']);
}
$cfg['teamspeak_host_address'] = $_POST['teamspeak_host_address'];
$cfg['teamspeak_query_port'] = $_POST['teamspeak_query_port'];
if (isset($_POST['teamspeak_query_encrypt_switch'])) $cfg['teamspeak_query_encrypt_switch'] = 1; else $cfg['teamspeak_query_encrypt_switch'] = 0;
$cfg['teamspeak_voice_port'] = $_POST['teamspeak_voice_port'];
$cfg['teamspeak_query_user'] = htmlspecialchars($_POST['teamspeak_query_user'], ENT_QUOTES);
$cfg['teamspeak_query_pass'] = htmlspecialchars($_POST['teamspeak_query_pass'], ENT_QUOTES);
$cfg['teamspeak_query_nickname'] = htmlspecialchars($_POST['teamspeak_query_nickname'], ENT_QUOTES);
$cfg['teamspeak_default_channel_id'] = $_POST['teamspeak_default_channel_id'];
$cfg['teamspeak_query_command_delay'] = $_POST['teamspeak_query_command_delay'];
$cfg['teamspeak_avatar_download_delay']= $_POST['teamspeak_avatar_download_delay'];
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('teamspeak_host_address','{$cfg['teamspeak_host_address']}'),('teamspeak_query_encrypt_switch','{$cfg['teamspeak_query_encrypt_switch']}'),('teamspeak_query_port','{$cfg['teamspeak_query_port']}'),('teamspeak_voice_port','{$cfg['teamspeak_voice_port']}'),('teamspeak_query_user','{$cfg['teamspeak_query_user']}'),('teamspeak_query_pass','{$cfg['teamspeak_query_pass']}'),('teamspeak_query_nickname','{$cfg['teamspeak_query_nickname']}'),('teamspeak_default_channel_id','{$cfg['teamspeak_default_channel_id']}'),('teamspeak_query_command_delay','{$cfg['teamspeak_query_command_delay']}'),('teamspeak_avatar_download_delay','{$cfg['teamspeak_avatar_download_delay']}'),('webinterface_admin_client_unique_id_list','{$cfg['webinterface_admin_client_unique_id_list']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
if ($mysqlcon->exec("INSERT INTO `$dbname`.`csrf_token` (`token`,`timestamp`,`sessionid`) VALUES ('$csrf_token','".time()."','".session_id()."')") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button
type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
if (isset($_POST['webinterface_admin_client_unique_id_list']) && $_POST['webinterface_admin_client_unique_id_list'] != NULL) {
$cfg['webinterface_admin_client_unique_id_list'] = array_flip($_POST['webinterface_admin_client_unique_id_list']);
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3($rspathhex);
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['winav1'],' ',$lang['wihlset']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" data-toggle="validator" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
if (($db_csrf = $mysqlcon->query("SELECT * FROM `$dbname`.`csrf_token` WHERE `sessionid`='".session_id()."'")->fetchALL(PDO::FETCH_UNIQUE|PDO::FETCH_ASSOC)) === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
}
if(($user_arr = $mysqlcon->query("SELECT `uuid`,`cldbid`,`name` FROM `$dbname`.`user` ORDER BY `name` ASC")->fetchAll(PDO::FETCH_ASSOC)) === false) {
$err_msg = "DB Error1: ".print_r($mysqlcon->errorInfo(), true); $err_lvl = 3;
}
if (isset($_POST['update']) && isset($db_csrf[$_POST['csrf_token']])) {
$cfg['webinterface_admin_client_unique_id_list'] = '';
if (isset($_POST['webinterface_admin_client_unique_id_list']) && $_POST['webinterface_admin_client_unique_id_list'] != NULL) {
$cfg['webinterface_admin_client_unique_id_list'] = implode(',',$_POST['webinterface_admin_client_unique_id_list']);
}
$cfg['teamspeak_host_address'] = $_POST['teamspeak_host_address'];
$cfg['teamspeak_query_port'] = $_POST['teamspeak_query_port'];
if (isset($_POST['teamspeak_query_encrypt_switch'])) $cfg['teamspeak_query_encrypt_switch'] = 1; else $cfg['teamspeak_query_encrypt_switch'] = 0;
$cfg['teamspeak_voice_port'] = $_POST['teamspeak_voice_port'];
$cfg['teamspeak_query_user'] = htmlspecialchars($_POST['teamspeak_query_user'], ENT_QUOTES);
$cfg['teamspeak_query_pass'] = htmlspecialchars($_POST['teamspeak_query_pass'], ENT_QUOTES);
$cfg['teamspeak_query_nickname'] = htmlspecialchars($_POST['teamspeak_query_nickname'], ENT_QUOTES);
$cfg['teamspeak_default_channel_id'] = $_POST['teamspeak_default_channel_id'];
$cfg['teamspeak_query_command_delay'] = $_POST['teamspeak_query_command_delay'];
$cfg['teamspeak_avatar_download_delay']= $_POST['teamspeak_avatar_download_delay'];
if ($mysqlcon->exec("INSERT INTO `$dbname`.`cfg_params` (`param`,`value`) VALUES ('teamspeak_host_address','{$cfg['teamspeak_host_address']}'),('teamspeak_query_encrypt_switch','{$cfg['teamspeak_query_encrypt_switch']}'),('teamspeak_query_port','{$cfg['teamspeak_query_port']}'),('teamspeak_voice_port','{$cfg['teamspeak_voice_port']}'),('teamspeak_query_user','{$cfg['teamspeak_query_user']}'),('teamspeak_query_pass','{$cfg['teamspeak_query_pass']}'),('teamspeak_query_nickname','{$cfg['teamspeak_query_nickname']}'),('teamspeak_default_channel_id','{$cfg['teamspeak_default_channel_id']}'),('teamspeak_query_command_delay','{$cfg['teamspeak_query_command_delay']}'),('teamspeak_avatar_download_delay','{$cfg['teamspeak_avatar_download_delay']}'),('webinterface_admin_client_unique_id_list','{$cfg['webinterface_admin_client_unique_id_list']}') ON DUPLICATE KEY UPDATE `value`=VALUES(`value`); DELETE FROM `$dbname`.`csrf_token` WHERE `token`='{$_POST['csrf_token']}'") === false) {
$err_msg = print_r($mysqlcon->errorInfo(), true);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".sprintf($lang['wisvres'], '&nbsp;&nbsp;<form class="btn-group" name="restart" action="bot.php" method="POST"><input type="hidden" name="csrf_token" value="'.$csrf_token.'"><button
type="submit" class="btn btn-primary" name="restart"><i class="fas fa-sync"></i>&nbsp;'.$lang['wibot7'].'</button></form>');
$err_lvl = NULL;
}
if (isset($_POST['webinterface_admin_client_unique_id_list']) && $_POST['webinterface_admin_client_unique_id_list'] != NULL) {
$cfg['webinterface_admin_client_unique_id_list'] = array_flip($_POST['webinterface_admin_client_unique_id_list']);
}
} elseif(isset($_POST['update'])) {
echo '<div class="alert alert-danger alert-dismissible">',$lang['errcsrf'],'</div>';
rem_session_ts3();
exit;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['winav1'],' ',$lang['wihlset']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" data-toggle="validator" name="update" method="POST">
<input type="hidden" name="csrf_token" value="<?PHP echo $csrf_token; ?>">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group required-field-block">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3hostdesc"><?php echo $lang['wits3host']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control required" data-pattern="^[^.]+[^:]*$" data-error="Do not enter the port inside this field. You should enter the port (e.g. 9987) inside the TS3-Voice-Port!" name="teamspeak_host_address" value="<?php echo $cfg['teamspeak_host_address']; ?>" maxlength="65535" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group expertelement">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3encryptdesc"><?php echo $lang['wits3encrypt']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['teamspeak_query_encrypt_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="teamspeak_query_encrypt_switch" value="',$cfg['teamspeak_query_encrypt_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="teamspeak_query_encrypt_switch" value="',$cfg['teamspeak_query_encrypt_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3querydesc"><?php echo $lang['wits3query']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block-spin">
<input type="text" class="form-control required" name="teamspeak_query_port" value="<?php echo $cfg['teamspeak_query_port']; ?>" required>
<script>
$("input[name='teamspeak_query_port']").TouchSpin({
min: 0,
max: 65535,
verticalbuttons: true,
prefix: 'TCP:'
});
</script>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3voicedesc"><?php echo $lang['wits3voice']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block-spin">
<input type="text" class="form-control required" name="teamspeak_voice_port" value="<?php echo $cfg['teamspeak_voice_port']; ?>" required>
<script>
$("input[name='teamspeak_voice_port']").TouchSpin({
min: 0,
max: 65535,
verticalbuttons: true,
prefix: 'UDP:'
});
</script>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3querusrdesc"><?php echo $lang['wits3querusr']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control required" name="teamspeak_query_user" value="<?php echo $cfg['teamspeak_query_user']; ?>" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3querpwdesc"><?php echo $lang['wits3querpw']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<div class="input-group">
<span id="toggle-password2" class="input-group-addon" onclick="togglepwd()" style="cursor: pointer; pointer-events: all;"><svg class="svg-inline--fa fa-eye fa-w-18" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="eye" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg=""><path fill="currentColor" d="M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"></path></svg></span>
<span id="toggle-password1" class="input-group-addon" onclick="togglepwd()" style="cursor: pointer; pointer-events: all; display: none;"><svg class="svg-inline--fa fa-eye fa-w-18" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="eye" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg=""><path fill="currentColor" d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"></path></svg></span>
<input id="password" type="password" class="form-control required" name="teamspeak_query_pass" value="<?php echo $cfg['teamspeak_query_pass']; ?>" required>
</div>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel-body">
<div class="form-group required-field-block">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3hostdesc"><?php echo $lang['wits3host']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control required" data-pattern="^[^.]+[^:]*$" data-error="Do not enter the port inside this field. You should enter the port (e.g. 9987) inside the TS3-Voice-Port!" name="teamspeak_host_address" value="<?php echo $cfg['teamspeak_host_address']; ?>" maxlength="65535" required>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3qnmdesc"><?php echo $lang['wits3qnm']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control required" name="teamspeak_query_nickname" value="<?php echo $cfg['teamspeak_query_nickname']; ?>" minlength="3" maxlength="30" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group expertelement">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3encryptdesc"><?php echo $lang['wits3encrypt']; ?><i class="help-hover fas fa-question-circle"></i></label>
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3dchdesc"><?php echo $lang['wits3dch']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<?PHP if ($cfg['teamspeak_query_encrypt_switch'] == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="teamspeak_query_encrypt_switch" value="',$cfg['teamspeak_query_encrypt_switch'],'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="teamspeak_query_encrypt_switch" value="',$cfg['teamspeak_query_encrypt_switch'],'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3querydesc"><?php echo $lang['wits3query']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block-spin">
<input type="text" class="form-control required" name="teamspeak_query_port" value="<?php echo $cfg['teamspeak_query_port']; ?>" required>
<input type="text" class="form-control" name="teamspeak_default_channel_id" value="<?php echo $cfg['teamspeak_default_channel_id']; ?>">
<script>
$("input[name='teamspeak_query_port']").TouchSpin({
$("input[name='teamspeak_default_channel_id']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: 'ID:'
});
</script>
</div>
</div>
<div class="row expertelement">&nbsp;</div>
<div class="form-group expertelement">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3smdesc"><?php echo $lang['wits3sm']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" id="basic" name="teamspeak_query_command_delay">
<?PHP
echo '<option data-icon="fas fa-ban" data-subtext="[recommended]" value="0"'; if($cfg['teamspeak_query_command_delay']=="0") echo ' selected="selected"'; echo '>&nbsp;disabled (Realtime)</option>';
echo '<option data-divider="true">&nbsp;</option>';
echo '<option data-subtext="(0,2 seconds)" value="200000"'; if($cfg['teamspeak_query_command_delay']=="200000") echo ' selected="selected"'; echo '>Low delay</option>';
echo '<option data-subtext="(0,5 seconds)" value="500000"'; if($cfg['teamspeak_query_command_delay']=="500000") echo ' selected="selected"'; echo '>Middle delay</option>';
echo '<option data-subtext="(1,0 seconds)" value="1000000"'; if($cfg['teamspeak_query_command_delay']=="1000000") echo ' selected="selected"'; echo '>High delay</option>';
echo '<option data-subtext="(2,0 seconds)" value="2000000"'; if($cfg['teamspeak_query_command_delay']=="2000000") echo ' selected="selected"'; echo '>Huge delay</option>';
echo '<option data-subtext="(5,0 seconds)" value="5000000"'; if($cfg['teamspeak_query_command_delay']=="5000000") echo ' selected="selected"'; echo '>Ultra delay</option>';
?>
</select>
</div>
</div>
<div class="row expertelement">&nbsp;</div>
<div class="form-group expertelement">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3avatdesc"><?php echo $lang['wits3avat']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="teamspeak_avatar_download_delay" value="<?php echo $cfg['teamspeak_avatar_download_delay']; ?>">
<script>
$("input[name='teamspeak_avatar_download_delay']").TouchSpin({
min: 0,
max: 65535,
verticalbuttons: true,
prefix: 'TCP:'
prefix: 'Sec.:'
});
</script>
<div class="help-block with-errors"></div>
</div>
</div>
<?PHP
if(!array_key_exists('webinterface_fresh_installation', $cfg) || $cfg['webinterface_fresh_installation'] != 1) { ?>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3voicedesc"><?php echo $lang['wits3voice']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block-spin">
<input type="text" class="form-control required" name="teamspeak_voice_port" value="<?php echo $cfg['teamspeak_voice_port']; ?>" required>
<script>
$("input[name='teamspeak_voice_port']").TouchSpin({
min: 0,
max: 65535,
verticalbuttons: true,
prefix: 'UDP:'
});
</script>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3querusrdesc"><?php echo $lang['wits3querusr']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control required" name="teamspeak_query_user" value="<?php echo $cfg['teamspeak_query_user']; ?>" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3querpwdesc"><?php echo $lang['wits3querpw']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<div class="input-group">
<span id="toggle-password2" class="input-group-addon" onclick="togglepwd()" style="cursor: pointer; pointer-events: all;"><svg class="svg-inline--fa fa-eye fa-w-18" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="eye" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg=""><path fill="currentColor" d="M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"></path></svg></span>
<span id="toggle-password1" class="input-group-addon" onclick="togglepwd()" style="cursor: pointer; pointer-events: all; display: none;"><svg class="svg-inline--fa fa-eye fa-w-18" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="eye" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" data-fa-i2svg=""><path fill="currentColor" d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"></path></svg></span>
<input id="password" type="password" class="form-control required" name="teamspeak_query_pass" value="<?php echo $cfg['teamspeak_query_pass']; ?>" required>
</div>
<div class="help-block with-errors"></div>
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiadmuuiddesc"><?php echo $lang['wiadmuuid']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" data-actions-box="true" data-live-search="true" multiple name="webinterface_admin_client_unique_id_list[]">
<?PHP
foreach ($user_arr as $user) {
if ($cfg['webinterface_admin_client_unique_id_list'] != NULL && array_key_exists($user['uuid'], $cfg['webinterface_admin_client_unique_id_list'])) $selected=" selected"; else $selected="";
echo '<option value="',$user['uuid'],'" data-subtext="UUID: ',$user['uuid'],'; DBID: ',$user['cldbid'],'" ',$selected,'>',htmlspecialchars($user['name']),'</option>';
}
?>
</select>
</div>
</div>
<?PHP } ?>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3qnmdesc"><?php echo $lang['wits3qnm']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control required" name="teamspeak_query_nickname" value="<?php echo $cfg['teamspeak_query_nickname']; ?>" minlength="3" maxlength="30" required>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group expertelement">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3dchdesc"><?php echo $lang['wits3dch']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="teamspeak_default_channel_id" value="<?php echo $cfg['teamspeak_default_channel_id']; ?>">
<script>
$("input[name='teamspeak_default_channel_id']").TouchSpin({
min: 0,
max: 2147483647,
verticalbuttons: true,
prefix: 'ID:'
});
</script>
</div>
</div>
<div class="row expertelement">&nbsp;</div>
<div class="form-group expertelement">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3smdesc"><?php echo $lang['wits3sm']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" id="basic" name="teamspeak_query_command_delay">
<?PHP
echo '<option data-icon="fas fa-ban" data-subtext="[recommended]" value="0"'; if($cfg['teamspeak_query_command_delay']=="0") echo ' selected="selected"'; echo '>&nbsp;disabled (Realtime)</option>';
echo '<option data-divider="true">&nbsp;</option>';
echo '<option data-subtext="(0,2 seconds)" value="200000"'; if($cfg['teamspeak_query_command_delay']=="200000") echo ' selected="selected"'; echo '>Low delay</option>';
echo '<option data-subtext="(0,5 seconds)" value="500000"'; if($cfg['teamspeak_query_command_delay']=="500000") echo ' selected="selected"'; echo '>Middle delay</option>';
echo '<option data-subtext="(1,0 seconds)" value="1000000"'; if($cfg['teamspeak_query_command_delay']=="1000000") echo ' selected="selected"'; echo '>High delay</option>';
echo '<option data-subtext="(2,0 seconds)" value="2000000"'; if($cfg['teamspeak_query_command_delay']=="2000000") echo ' selected="selected"'; echo '>Huge delay</option>';
echo '<option data-subtext="(5,0 seconds)" value="5000000"'; if($cfg['teamspeak_query_command_delay']=="5000000") echo ' selected="selected"'; echo '>Ultra delay</option>';
?>
</select>
</div>
</div>
<div class="row expertelement">&nbsp;</div>
<div class="form-group expertelement">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3avatdesc"><?php echo $lang['wits3avat']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="teamspeak_avatar_download_delay" value="<?php echo $cfg['teamspeak_avatar_download_delay']; ?>">
<script>
$("input[name='teamspeak_avatar_download_delay']").TouchSpin({
min: 0,
max: 65535,
verticalbuttons: true,
prefix: 'Sec.:'
});
</script>
</div>
</div>
<?PHP
if(!array_key_exists('webinterface_fresh_installation', $cfg) || $cfg['webinterface_fresh_installation'] != 1) { ?>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiadmuuiddesc"><?php echo $lang['wiadmuuid']; ?><i class="help-hover fas fa-question-circle"></i></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" data-actions-box="true" data-live-search="true" multiple name="webinterface_admin_client_unique_id_list[]">
<?PHP
foreach ($user_arr as $user) {
if ($cfg['webinterface_admin_client_unique_id_list'] != NULL && array_key_exists($user['uuid'], $cfg['webinterface_admin_client_unique_id_list'])) $selected=" selected"; else $selected="";
echo '<option value="',$user['uuid'],'" data-subtext="UUID: ',$user['uuid'],'; DBID: ',$user['cldbid'],'" ',$selected,'>',htmlspecialchars($user['name']),'</option>';
}
?>
</select>
</div>
</div>
<?PHP } ?>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><i class="fas fa-save"></i>&nbsp;<?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wits3hostdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3host']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3hostdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3hostdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3host']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3hostdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3encryptdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3encrypt']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['wits3encryptdesc'], '<pre>sudo apt-get install php-ssh2</pre>', '<pre>query_ssh_ip=0.0.0.0,::<br>query_ssh_port=10022<br>query_protocols=ssh,raw<br>query_ssh_rsa_host_key=ssh_host_rsa_key</pre>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3querydesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3query']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3querydesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3voicedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3voice']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3voicedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3querusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3querusr']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['wits3querusrdesc'], '<a href="https://ts-ranksystem.com/#linux" target="_blank">https://ts-ranksystem.com/</a>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3querpwdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3querpw']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3querpwdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3qnmdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3qnm']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3qnmdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3dchdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3dch']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3dchdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3smdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3sm']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['wits3smdesc'], '<pre>disabled (0,0) 0,10<br>low delay (0,2) 2,60<br>middle delay (0,5) 6,50<br>high delay (1,0) 13,00<br>huge delay (2,0) 26,00<br>ultra delay (5,0) 65,00</pre>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3avatdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3avat']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3avatdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiadmuuiddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiadmuuid']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['wiadmuuiddesc'], '<a href="//ts-ranksystem.com/?commands" target="_blank">', '</a>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
<div class="modal fade" id="wits3encryptdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3encrypt']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['wits3encryptdesc'], '<pre>sudo apt-get install php-ssh2</pre>', '<pre>query_ssh_ip=0.0.0.0,::<br>query_ssh_port=10022<br>query_protocols=ssh,raw<br>query_ssh_rsa_host_key=ssh_host_rsa_key</pre>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3querydesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3query']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3querydesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3voicedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3voice']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3voicedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3querusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3querusr']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['wits3querusrdesc'], '<a href="https://ts-ranksystem.com/#linux" target="_blank">https://ts-ranksystem.com/</a>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3querpwdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3querpw']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3querpwdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3qnmdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3qnm']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3qnmdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3dchdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3dch']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3dchdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3smdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3sm']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['wits3smdesc'], '<pre>disabled (0,0) 0,10<br>low delay (0,2) 2,60<br>middle delay (0,5) 6,50<br>high delay (1,0) 13,00<br>huge delay (2,0) 26,00<br>ultra delay (5,0) 65,00</pre>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3avatdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3avat']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3avatdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiadmuuiddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiadmuuid']; ?></h4>
</div>
<div class="modal-body">
<?php echo sprintf($lang['wiadmuuiddesc'], '<a href="//ts-ranksystem.com/?commands" target="_blank">', '</a>'); ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
});
</script>
</body>
</html>
});
</script>
</body>
</html>
<?PHP
} catch(Throwable $ex) { }
?>