244 lines
6.8 KiB
PHP
244 lines
6.8 KiB
PHP
<?php
|
||
|
||
use function PHPSTORM_META\type;
|
||
|
||
|
||
$weblist_file=file_get_contents(JSON_WEB_LIST);
|
||
$weblist_json=json_decode($weblist_file, true);
|
||
if (file_exists(JSON_WEB_CHECK)){
|
||
$webcheck_file=file_get_contents(JSON_WEB_CHECK);
|
||
$webcheck_json=json_decode($webcheck_file, true);
|
||
}
|
||
|
||
//var_dump($webcheck_json);
|
||
|
||
function checktoword($wordtochange){
|
||
if ( $wordtochange == "1"){
|
||
echo "OK";
|
||
}else{
|
||
echo "PROBLEM";
|
||
}
|
||
}
|
||
|
||
function get_status_class($ssl, $word, $expiry){
|
||
|
||
if ($ssl != 1 || $word != 1) {
|
||
return "alert_red";
|
||
}
|
||
|
||
$days = ssl_days_left($expiry);
|
||
|
||
if ($days !== null) {
|
||
if ($days < 0) {
|
||
return "alert_red";
|
||
}
|
||
elseif ($days <= SSL_CRITICAL_DAYS) {
|
||
return "alert_orange";
|
||
}
|
||
elseif ($days <= SSL_WARNING_DAYS) {
|
||
return "alert_yellow";
|
||
}
|
||
}
|
||
|
||
return "alert_green";
|
||
}
|
||
|
||
|
||
function word_col_status($input){
|
||
$col="#f7ce5f";
|
||
$style = " style='color: ". $col . "; text-decoration: underline; text-shadow: 0 0 0 yellow; animation: bumping 3s linear 2s infinite;' ";
|
||
|
||
if ($input != 1){
|
||
echo $style;
|
||
}
|
||
}
|
||
|
||
function get_checked_list(){
|
||
global $webcheck_json;
|
||
|
||
// Ordina: problemi prima
|
||
usort($webcheck_json, function($a, $b) {
|
||
|
||
// 1️⃣ Problemi contenuto o SSL
|
||
$a_problem = ($a['sslcheck_ok'] != 1 || $a['wordcheck_ok'] != 1);
|
||
$b_problem = ($b['sslcheck_ok'] != 1 || $b['wordcheck_ok'] != 1);
|
||
|
||
if ($a_problem && !$b_problem) return -1;
|
||
if (!$a_problem && $b_problem) return 1;
|
||
|
||
// 2️⃣ Giorni alla scadenza
|
||
$a_days = ssl_days_left($a['ssl-expiry']);
|
||
$b_days = ssl_days_left($b['ssl-expiry']);
|
||
|
||
// Se uno non ha data → mettilo in fondo
|
||
if ($a_days === null && $b_days !== null) return 1;
|
||
if ($b_days === null && $a_days !== null) return -1;
|
||
|
||
// 3️⃣ SSL già scaduti prima
|
||
if ($a_days < 0 && $b_days >= 0) return -1;
|
||
if ($b_days < 0 && $a_days >= 0) return 1;
|
||
|
||
// 4️⃣ Ordina per giorni crescenti (meno giorni prima)
|
||
return $a_days <=> $b_days;
|
||
});
|
||
|
||
foreach($webcheck_json as $check_element){
|
||
|
||
//VARIABLES
|
||
$host=$check_element['host'];
|
||
$domain=$check_element['domain'];
|
||
$path=$check_element['path'];
|
||
$checkword_ok=$check_element['wordcheck_ok'];
|
||
$sslcheck_ok=$check_element['sslcheck_ok'];
|
||
$wordtocheck=$check_element['wordtocheck'];
|
||
$ssl_released=$check_element['ssl-released'];
|
||
$ssl_expiry=$check_element['ssl-expiry'];
|
||
$ssl_company=$check_element['ssl-company'];
|
||
$http_error=$check_element['content_http_code'];
|
||
$content_error=$check_element['content_error'];
|
||
$ssl_error=$check_element['ssl_error'];
|
||
$expirying_days = ssl_days_left($ssl_expiry);
|
||
$expiry_col = get_expiry_style($expirying_days);
|
||
$status_class = get_status_class($sslcheck_ok, $checkword_ok, $ssl_expiry);
|
||
$col_red = "#ff4747";
|
||
$col_orange = "#ff830f";
|
||
$col_yellow = "#ffd70f";
|
||
$col_green = "#42c500";
|
||
|
||
if($expirying_days < 0){
|
||
$expiry_col='style="font-weight:bold; color:' . $col_red . ';"';
|
||
}elseif($expirying_days <= SSL_CRITICAL_DAYS ){
|
||
$expiry_col='style="font-weight:bold; color:' . $col_orange . ';"';
|
||
}elseif($expirying_days <= SSL_WARNING_DAYS){
|
||
$expiry_col='style="font-weight:bold; color:' . $col_yellow . ';"';
|
||
}else{
|
||
$expiry_col='style="font-weight:bold; color:' . $col_green . ';"';
|
||
}
|
||
|
||
if ($path == ""){
|
||
$path = "/";
|
||
}
|
||
|
||
?>
|
||
<div class="alert-container <?= $status_class ?>">
|
||
<div class="alert-info">
|
||
<div><b>HOST: </b><span><?= $host ?></span></div>
|
||
<div><b>DOMAIN: </b><span><?= $domain ?></span></div>
|
||
<div <?php word_col_status($checkword_ok) ?>><b>CONTENT: </b><span><?= checktoword($checkword_ok) ?></span></div>
|
||
<div <?php word_col_status($sslcheck_ok) ?>><b>SSL: </b><span><?= checktoword($sslcheck_ok) ?></span></div>
|
||
</div>
|
||
<div class="alert-details">
|
||
<?php
|
||
if (!$content_error || !$ssl_error){
|
||
?>
|
||
<div><b>WORD TO CHECK: </b> <span><?= $wordtocheck ?></span></div>
|
||
<div><b>SSL RELEASED: </b> <span><?= $ssl_released ?></span></div>
|
||
<div><b>SSL EXPIRY: </b> <span <?= $expiry_col ?>><?= $ssl_expiry ?></span></div>
|
||
<div><b>SSL DAYS LEFT: </b> <span <?= $expiry_col ?>><?= $expirying_days ?></span></span></div>
|
||
<div><b>SSL COMPANY: </b> <span> <?= $ssl_company ?></span></div>
|
||
<div><b>PATH: </b> <span><?= $path ?></span></div>
|
||
<div><b>ERROR CODE: </b> <span><?= $http_error ?></span></div>
|
||
<?php }else{?>
|
||
<div style="color:red;"><b>ERROR CODE: </b> <span><?= $http_error ?></span></div>
|
||
<div style="color:red;"><b>CONTENT ERROR: </b> <span><?= $content_error ?></span></div>
|
||
<div style="color:red;"><b>SSL ERROR: </b> <span><?= $ssl_error ?></span></div>
|
||
|
||
<?php }?>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<?php
|
||
}
|
||
}
|
||
|
||
function get_totals($type){
|
||
global $webcheck_json;
|
||
|
||
$totaldomain=0;
|
||
$totalok=0;
|
||
$totalssl_p=0;
|
||
$totalcheck_p=0;
|
||
|
||
foreach($webcheck_json as $i => $element){
|
||
|
||
// Total domain to check
|
||
$totaldomain ++;
|
||
|
||
// Total fine domain
|
||
if ($element['sslcheck_ok'] == 1 && $element['wordcheck_ok'] == 1){
|
||
$totalok ++;
|
||
}
|
||
|
||
// Total SSL Problem
|
||
if ($element['sslcheck_ok'] !== 1){
|
||
$totalssl_p ++;
|
||
}
|
||
|
||
// Total Word-check Problem
|
||
if ($element['wordcheck_ok'] !== 1){
|
||
$totalcheck_p ++;
|
||
}
|
||
|
||
|
||
}
|
||
|
||
switch($type){
|
||
case "total":
|
||
echo $totaldomain;
|
||
break;
|
||
|
||
case "ok":
|
||
echo $totalok;
|
||
break;
|
||
|
||
case "ssl":
|
||
echo $totalssl_p;
|
||
break;
|
||
|
||
case "word":
|
||
echo $totalcheck_p;
|
||
break;
|
||
}
|
||
|
||
}
|
||
|
||
function ssl_days_left($expiry_date) {
|
||
|
||
if (empty($expiry_date)) return null;
|
||
|
||
$expiry = DateTime::createFromFormat('d/m/Y', $expiry_date);
|
||
if (!$expiry) return null;
|
||
|
||
$now = new DateTime();
|
||
|
||
$interval = $now->diff($expiry);
|
||
$days = (int)$interval->format('%r%a'); // giorni con segno
|
||
|
||
return $days;
|
||
}
|
||
|
||
function get_expiry_style($days){
|
||
|
||
$col_red = "#ff4747";
|
||
$col_orange = "#ff830f";
|
||
$col_yellow = "#ffd70f";
|
||
$col_green = "#42c500";
|
||
|
||
if ($days === null) return "";
|
||
|
||
if ($days < 0) {
|
||
return "style='font-weight:bold;color:$col_red;'";
|
||
}
|
||
elseif ($days <= SSL_CRITICAL_DAYS) {
|
||
return "style='font-weight:bold;color:$col_orange;'";
|
||
}
|
||
elseif ($days <= SSL_WARNING_DAYS) {
|
||
return "style='font-weight:bold;color:$col_yellow;'";
|
||
}
|
||
|
||
return "style='font-weight:bold;color:$col_green;'";
|
||
}
|
||
|
||
|
||
?>
|