mirror of
https://gitlab.com/JKANetwork/CheckServer.git
synced 2026-02-13 16:51:36 +01:00
338 lines
13 KiB
PHP
Executable File
338 lines
13 KiB
PHP
Executable File
<?php
|
|
require_once 'load.php';
|
|
requirelogin();
|
|
|
|
//Calculo día 1 del mes en curso
|
|
$dia = date('j');
|
|
$hora = date('H');
|
|
$datemes = time() - ($dia * 24 * 3600) + ($hora * 3600);
|
|
|
|
|
|
$page = isset($_GET['page']) ? $_GET['page'] : '';
|
|
|
|
//"Fast" check for pages that only an admin can view
|
|
$arrPagesFullRigths = array('addcheck','editcheck','savenewcheck','updatecheck','delcheck','modcheckgrp','modcheckname','addgroup','modgroup','delgroup','newnews','editnews','delnews','edituserperm','deluser','adduser','settings');
|
|
if (in_array($page,$arrPagesFullRigths) && $you['fullRights'] != 1){
|
|
$page = 'notperm'; //Why here? For switch not loading the other (Original) page
|
|
}
|
|
|
|
switch($page){
|
|
case 'notperm':
|
|
renderPage('panel/p_notperm.twig', array('you' => $you));
|
|
break;
|
|
case 'checks':
|
|
//Groups (For "fast-change-group option in html")
|
|
$results = dbw_query($db_conn,"SELECT * FROM GROUPS"); //All groups
|
|
while ($group = dbw_fetch_array($db_conn,$results)){
|
|
$groups[] = array(
|
|
'ID_G' =>$group['ID_G'],
|
|
'name' => $group['name']
|
|
);
|
|
}
|
|
|
|
|
|
$results = dbw_query($db_conn,"SELECT * FROM CHECKS ORDER BY ID_G"); //All checks
|
|
while ($onechk = dbw_fetch_array($db_conn,$results)){
|
|
$idchk = $onechk['ID_C'];
|
|
$chks[$idchk] = $onechk; //First array data
|
|
$ID_G = $chks[$idchk]['ID_G']; //For nameGroup
|
|
$chks[$idchk]['nameGroup'] = dbw_query_fetch_array($db_conn,"SELECT * FROM GROUPS WHERE ID_G='$ID_G'")['name'];
|
|
$ID_TC = $chks[$idchk]['ID_TC'];
|
|
$chks[$idchk]['nameTCheck'] = textTypeChk($ID_TC);
|
|
}
|
|
|
|
|
|
$results = dbw_query($db_conn,"SELECT name FROM GROUPS WHERE ID_G NOT IN (SELECT DISTINCT ID_G FROM CHECKS)");
|
|
while ($emptygrp = dbw_fetch_array($db_conn,$results)){
|
|
$emptyG[] = array('name' =>$emptygrp['name']);
|
|
}
|
|
|
|
renderPage('panel/p_checks.twig',array('mpage' => 'checks','you' => $you, 'checks' => $chks,'groups' => $groups,'emptygrp' => $emptyG));
|
|
break;
|
|
|
|
//Forms to add or edit a check (Not saving, only forms)
|
|
case 'addcheck':
|
|
case 'editcheck':
|
|
//General data
|
|
$results = dbw_query($db_conn,"SELECT * FROM GROUPS"); //All groups
|
|
while ($group = dbw_fetch_array($db_conn,$results)){
|
|
$groups[] = array(
|
|
'ID_G' =>$group['ID_G'],
|
|
'name' => $group['name']
|
|
);
|
|
}
|
|
//$results = arrayTypeChk(); //All Type Checks
|
|
foreach(arrayTypeChk() as $key => $value){
|
|
$tchecks[] = array(
|
|
'ID_TC' =>$key,
|
|
'name' => textTypeChk($key)
|
|
);
|
|
}
|
|
|
|
//En este if hago las diferencias entre add y edit, para no repetir código.
|
|
if ($page == 'addcheck'){
|
|
renderPage('panel/p_addedit.twig', array('mpage' => 'checks', 'type' => 'new','groups' => $groups,'tchecks' => $tchecks));
|
|
}elseif ($page == 'editcheck'){
|
|
$ID_C = (int)$_GET['ID_C']; //Check to edit
|
|
$checkdata = dbw_query_fetch_array($db_conn,"SELECT * FROM CHECKS WHERE ID_C='$ID_C'"); //Checkdata
|
|
|
|
renderPage('panel/p_addedit.twig', array('mpage' => 'checks', 'you' => $you, 'type' => 'edit','groups' => $groups,'tchecks' => $tchecks,'check' => $checkdata));
|
|
}
|
|
break;
|
|
|
|
case 'savenewcheck': //Crea los registros de la BD para pasarlo a updatecheck
|
|
$name = $_POST['name'];
|
|
dbw_query($db_conn,"INSERT INTO CHECKS(name) VALUES('$name')"); //Para crear un nuevo vacío
|
|
$ID_C = dbw_last_id($db_conn); //Sacar la ID del nuevo check
|
|
case 'updatecheck': //Guarda los cambios de un check (También lo uso para el primer guardado)
|
|
$ID_C = isset($ID_C) ? $ID_C : (int)$_GET['ID_C'];
|
|
$name = $_POST['name'];
|
|
$ID_G = $_POST['group'];
|
|
$ID_TC = $_POST['tcheck'];
|
|
//Datos que dependen del tipo de check
|
|
switch ($ID_TC){
|
|
case 1:
|
|
$url = $_POST['t1url'] . ':' . $_POST['t1port'];
|
|
dbw_query($db_conn,"UPDATE CHECKS SET url='$url' WHERE ID_C='$ID_C'");
|
|
break;
|
|
case 2:
|
|
$url = $_POST['t2url'];
|
|
$urlParam = isset($_POST['t2code']) ? $_POST['t2code'] : '';
|
|
dbw_queryurl($db_conn,"UPDATE CHECKS SET url='$url',urlParam = '$urlParam' WHERE ID_C='$ID_C'");
|
|
break;
|
|
case 4:
|
|
$url = $_POST['t4url'];
|
|
dbw_query($db_conn,"UPDATE CHECKS SET url='$url' WHERE ID_C='$ID_C'");
|
|
break;
|
|
case 5:
|
|
$url = $_POST['t5url'];
|
|
$urlParam = dbw_escape_string($db_conn,$_POST['t5type'].'|'.$_POST['t5params']);
|
|
$exceptedRes = dbw_escape_string($db_conn,$_POST['t5exceptedRes']);
|
|
dbw_query($db_conn,"UPDATE CHECKS SET url='$url', urlParam='$urlParam',exceptedRes='$exceptedRes' WHERE ID_C='$ID_C'");
|
|
break;
|
|
}//Si es 3 no hay datos que guardar (de momento)
|
|
|
|
|
|
//Guardamos el resto de datos
|
|
dbw_query($db_conn,"UPDATE CHECKS SET name='$name', ID_G='$ID_G', ID_TC='$ID_TC' WHERE ID_C='$ID_C'");
|
|
|
|
header('Location: panel.php?page=checks'); //Return to checks
|
|
break;
|
|
|
|
|
|
case 'delcheck':
|
|
$ID_C = (int)$_GET['ID_C']; //Check to delete
|
|
|
|
//Deleting all
|
|
dbw_query($db_conn,"DELETE FROM CHECKS WHERE ID_C='$ID_C'");
|
|
dbw_query($db_conn,"DELETE FROM CHKHIST WHERE ID_C='$ID_C'");
|
|
|
|
header('Location: panel.php?page=checks');
|
|
break;
|
|
|
|
case 'modcheckgrp': //Changes the group of a check "fast"
|
|
$ID_C = (int)$_GET['ID_C'];
|
|
$newID_G = $_POST['group_'.$ID_C]; //Name in form post is GN_XX
|
|
dbw_query($db_conn,"UPDATE CHECKS SET ID_G='$newID_G' WHERE ID_C='$ID_C'");
|
|
header('Location: panel.php?page=checks');
|
|
break;
|
|
|
|
case 'modcheckname': //Changes the name of a check "fast"
|
|
$ID_C = (int)$_GET['ID_C'];
|
|
$newName = $_POST['name_'.$ID_C]; //Name in form post is GN_XX
|
|
dbw_query($db_conn,"UPDATE CHECKS SET name='$newName' WHERE ID_C='$ID_C'");
|
|
header('Location: panel.php?page=checks');
|
|
break;
|
|
|
|
|
|
case 'groups':
|
|
//All group names and IDs
|
|
$results = dbw_query($db_conn,"SELECT * FROM GROUPS"); //All groups
|
|
while ($group = dbw_fetch_array($db_conn,$results)){
|
|
$countchk = dbw_query_fetch_array($db_conn,"SELECT COUNT(*) FROM CHECKS WHERE ID_G = '$group[ID_G]'")[0];
|
|
$groups[] = array(
|
|
'ID_G' =>$group['ID_G'],
|
|
'name' => $group['name'],
|
|
'checks' => $countchk
|
|
);
|
|
}
|
|
renderPage('panel/p_groups.twig', array('you' => $you, 'mpage' => 'groups', 'groups' => $groups));
|
|
break;
|
|
|
|
case 'addgroup':
|
|
$namegrp = $_POST['grpname']; //Name in form post is GN_XX
|
|
dbw_query($db_conn,"INSERT INTO GROUPS(name) VALUES('$namegrp')");
|
|
header('Location: panel.php?page=groups');
|
|
break;
|
|
case 'changegroup':
|
|
$ID_G = (int)$_GET['ID_G'];
|
|
$name = $_POST['GN_'.$ID_G]; //Name in form post is GN_XX
|
|
dbw_query($db_conn,"UPDATE GROUPS SET name='$name' WHERE ID_G='$ID_G'");
|
|
header('Location: panel.php?page=groups');
|
|
break;
|
|
|
|
case 'delgroup':
|
|
$ID_G = (int)$_GET['ID_G'];
|
|
dbw_query($db_conn,"DELETE FROM CHECKS WHERE ID_G='$ID_G'");
|
|
dbw_query($db_conn,"DELETE FROM GROUPS WHERE ID_G='$ID_G'");
|
|
header('Location: panel.php?page=groups');
|
|
break;
|
|
|
|
case 'news':
|
|
require_once "lib/parsedown.php"; //Import parsedown (once)
|
|
//Groups (For "fast-change-group option in html")
|
|
$results = dbw_query($db_conn,"SELECT * FROM NEWS ORDER BY `timestamp` DESC"); //All groups
|
|
while ($result = dbw_fetch_array($db_conn,$results)){
|
|
$ID_N = $result['ID_N'];
|
|
$news[$ID_N]['ID_N'] = $ID_N;
|
|
$news[$ID_N]['date'] = date('j/n/Y', $result['timestamp']);
|
|
/*$news[$ID_N]['sentBy'] = $result['sentBy'];
|
|
if ($result['sentBy'] != NULL && substr($result['sentBy'],0,1) == "S"){ // Sent by a page
|
|
$pageinc = substr($result['sentBy'],1);
|
|
$pageinc = dbw_query_fetch_array($db_conn,"SELECT name FROM CHECKS WHERE ID_C = '$pageinc'")[0];
|
|
$news[$ID_N]['sentBy'] = $pageinc;
|
|
}*/
|
|
$news[$ID_N]['text'] = Parsedown::instance()
|
|
->setMarkupEscaped(true) # escapes markup (HTML)
|
|
->text($result['text']);
|
|
$news[$ID_N]['mdtext'] = $result['text']; //Raw text
|
|
}
|
|
renderPage('panel/p_news.twig', array('you' => $you, 'mpage' => 'news', 'allnews' => $news));
|
|
break;
|
|
|
|
case 'newnews':
|
|
$text = dbw_escape_string($db_conn,$_POST['text_new']);
|
|
$timestamp = time();
|
|
dbw_query($db_conn,"INSERT INTO NEWS(`text`,`timestamp`) VALUES('$text','$timestamp')");
|
|
header('Location: panel.php?page=news');
|
|
break;
|
|
case 'editnews':
|
|
$ID_N = (int)$_GET['ID_N'];
|
|
$text = dbw_escape_string($db_conn,$_POST['text_'.$ID_N]);
|
|
dbw_query($db_conn,"UPDATE NEWS SET `text`='$text' WHERE ID_N='$ID_N'");
|
|
header('Location: panel.php?page=news');
|
|
break;
|
|
case 'delnews':
|
|
$ID_N = (int)$_GET['ID_N'];
|
|
dbw_query($db_conn,"DELETE FROM NEWS WHERE ID_N='$ID_N'");
|
|
header('Location: panel.php?page=news');
|
|
break;
|
|
|
|
case 'savesettings':
|
|
//All group names and IDs
|
|
dbw_query($db_conn,"UPDATE SYS SET `value`='$_POST[name]' WHERE `option`='name'");
|
|
dbw_query($db_conn,"UPDATE SYS SET `value`='$_POST[maxTimeSave]' WHERE `option`='maxTimeSave'");
|
|
case 'settings':
|
|
//All group names and IDs
|
|
$results = dbw_query($db_conn,"SELECT * FROM SYS"); //All groups
|
|
while ($syso = dbw_fetch_array($db_conn,$results)){
|
|
$sys[$syso['option']] = $syso['value'];
|
|
}
|
|
renderPage('panel/p_settings.twig', array('you' => $you, 'mpage' => 'settings', 'sys' => $sys));
|
|
break;
|
|
|
|
case 'users':
|
|
//All user data
|
|
$results = dbw_query($db_conn,"SELECT * FROM USERS"); //All groups
|
|
while ($us = dbw_fetch_array($db_conn,$results)){
|
|
$ID_U = $us['ID_U'];
|
|
$user[$ID_U] = array(
|
|
'ID_U' =>$ID_U,
|
|
'nick' => $us['nick'],
|
|
'fullrights' => $us['fullRights']
|
|
);
|
|
}
|
|
renderPage('panel/p_users.twig', array('mpage' => 'users', 'you' => $you, 'users' => $user));
|
|
break;
|
|
|
|
case 'adduser':
|
|
//Nuevo usuario
|
|
$nick = $_POST['nuser_name'];
|
|
$passw = hash("sha256",$_POST['nuser_pass']);
|
|
$perms = $_POST['nuser_type'];
|
|
dbw_query($db_conn,"INSERT INTO USERS(`nick`,`passw`,`fullRights`) VALUES('$nick','$passw','$perms')");
|
|
header('Location: panel.php?page=users');
|
|
break;
|
|
case 'editusername':
|
|
//Editar nombre de usuario
|
|
$ID_U = (int)$_GET['ID_U'];
|
|
$nick = $_POST['name_'.$ID_U];
|
|
dbw_query($db_conn,"UPDATE USERS SET `nick`='$nick' WHERE ID_U='$ID_U'");
|
|
header('Location: panel.php?page=users');
|
|
break;
|
|
case 'edituserperm':
|
|
//Editar nombre de usuario
|
|
$ID_U = (int)$_GET['ID_U'];
|
|
$newperm = $_POST['nperm_'.$ID_U];
|
|
dbw_query($db_conn,"UPDATE USERS SET `fullRights`='$newperm' WHERE ID_U='$ID_U'");
|
|
header('Location: panel.php?page=users');
|
|
break;
|
|
case 'edituserpass':
|
|
//Editar tu contraseña
|
|
$passw = hash("sha256",$_POST['userpass1']);
|
|
dbw_query($db_conn,"UPDATE USERS SET `passw`='$passw' WHERE SessionID='$_COOKIE[SessionID]'");
|
|
header('Location: panel.php?page=users');
|
|
break;
|
|
case 'deluser':
|
|
$ID_U = (int)$_GET['ID_U'];
|
|
dbw_query($db_conn,"DELETE FROM USERS WHERE ID_U='$ID_U'");
|
|
header('Location: panel.php?page=users');
|
|
break;
|
|
|
|
|
|
//History of checks for a ID_C
|
|
case 'viewhist':
|
|
//All page data
|
|
$ID_C = (int)$_GET['ID_C'];
|
|
$page = dbw_query_fetch_array($db_conn,"SELECT name FROM CHECKS WHERE ID_C='$ID_C'");
|
|
$cant = 100;
|
|
$results = dbw_query($db_conn,"SELECT * FROM CHKHIST WHERE ID_C='$ID_C' ORDER BY `timestamp` DESC LIMIT $cant");
|
|
|
|
//TODO TIMESTAMPS FAILS
|
|
$cgood = 0;$cbad = 0; $fails = array();
|
|
while ($us = dbw_fetch_array($db_conn,$results)){
|
|
if ($us['code'] == 0){
|
|
$cgood++;
|
|
}else{
|
|
$cbad++;
|
|
$fails[] = date('d/m/Y H:i',$us['timestamp']); //Record timestamps
|
|
}
|
|
}
|
|
|
|
$group = nameGroupFromIDG(IDGFromIDC($ID_C));
|
|
$pagedata = array('cgood' => $cgood,'cbad' => $cbad,'name' => nameFromIDC($db_conn,$ID_C), 'group' => $group,'cant' => $cant,'fails' => $fails);
|
|
|
|
renderPage('panel/p_viewhist.twig', array('mpage' => 'viewhist', 'you' => $you,'pagedata' => $pagedata));
|
|
break;
|
|
|
|
// Página principal
|
|
case 'status':
|
|
default:
|
|
//Estadísticas
|
|
$data['checks'] = dbw_query_fetch_array($db_conn, "SELECT COUNT(*) FROM CHECKS")[0];
|
|
$data['err'] = dbw_query_fetch_array($db_conn, "SELECT COUNT(*) FROM CHKHIST WHERE code !=0 AND `Timestamp` > $datemes ")[0];
|
|
$data['errinidate'] = date ('j/n/Y',$datemes );
|
|
//Load lastest fails
|
|
$failssql = dbw_query($db_conn,"SELECT * FROM CHKHIST WHERE code !=0 AND ID_C IN (SELECT ID_C FROM CHECKS) ORDER BY `timestamp` DESC LIMIT 10");
|
|
if ($failssql != false){
|
|
while ($fail = dbw_fetch_array($db_conn,$failssql)){ //Create array
|
|
$fails[] = array (
|
|
'ID_C' => $fail['ID_C'],
|
|
'name' => nameFromIDC($fail['ID_C']),
|
|
'groupName' => nameGroupFromIDG(IDGFromIDC($fail['ID_C'])),
|
|
/* 'typeCheck' => textTypeChk($fail['ID_TC']), Doesnt work yet */
|
|
'errorText' => $fail['errorText'],
|
|
'date' => date('j/n/Y',$fail['timestamp']),
|
|
'hour' => date('H:i',$fail['timestamp'])
|
|
);
|
|
};
|
|
}else{
|
|
$fails = array(); //Empty
|
|
}
|
|
|
|
renderPage('panel/p_index.twig', array('you' => $you, 'mpage' => 'index', 'data' => $data,'fails' => $fails)); //Render
|
|
break;
|
|
|
|
}
|
|
|
|
?>
|