Rev 11 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/usr/bin/php
<?php
#
# VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
# Maintenance / Developer utilities
#
# (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
#
# License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
#
error_reporting(E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED);
require_once __DIR__ . '/../../../shared/php_includes/common_functions.inc.php';
require_once __DIR__ . '/whoisping_functions.inc.php';
require_once __DIR__ . '/../config.inc.php';
# ---
if (!is_dir(dirname(WHOISPING_DB))) mkdir(dirname(WHOISPING_DB), 0755, true);
$db = new SQLite3(WHOISPING_DB); # TODO: in config auslagern
if (!$db) die("Cannot open SQLite DB '" . WHOISPING_DB . "'");
gwitc_initdb($db);
/*
$stm = "SELECT * FROM gwi_tc_whois_ping WHERE server = 'whois.nic.ve'";
$result = $db->query("SELECT * FROM gwi_tc_whois_ping WHERE server = 'whois.nic.ve'");
$row = $result->fetchArray(SQLITE3_ASSOC);
print_r($row);
*/
$status=0;
$pattern_servers = array();
$pattern_files = getpatternfiles();
foreach ($pattern_files as &$pattern_file) {
$pattern_servers_c = gwitc_list_whois_servers($pattern_file);
$pattern_servers = array_merge($pattern_servers, $pattern_servers_c);
}
$dead_servers = array();
$dead_servers_raw = file(DEAD_SERVER_LIST);
foreach ($dead_servers_raw as &$server) {
$server = trim($server);
if ($server == '') continue;
if ($server[0] == '#') continue;
$dead_servers[] = $server;
}
# $servers = $dead_servers + $pattern_servers
$servers = array();
foreach ($pattern_servers as &$server) {
if (!in_array($server, $servers)) {
$servers[] = $server;
}
}
foreach ($dead_servers as &$server) {
if (!in_array($server, $servers)) {
$servers[] = $server;
} else {
if (in_array($server, $dead_servers)) {
$status=1;
echo "[ !! ] Attention! $server is in dead-servers.list and pattern. Please remove one instance!\n";
}
}
}
foreach ($servers as &$server) {
$reborn = gwitc_reborn_val($db, $server);
if ($reborn) { // TODO: also show time since when it is reborn?
if (in_array($server, $dead_servers)) {
$status=1;
echo "[ !! ] Attention: $server is ALIVE again! Please remove from dead-servers.list and add to pattern.\n";
}
if (in_array($server, $pattern_servers) && (!in_array($server, $dead_servers))) {
gwitc_set_reborn($db, $server, 0);
}
} else {
if (in_array($server, $dead_servers) && (!in_array($server, $pattern_servers))) continue;
$duration = gwitc_fail_duration($db, $server);
if ($duration < WHOIS_SERVER_DEAD_AFTER) continue;
$status=1;
echo "[ !! ] $server down for ".human_timediff($duration)."; first fail: ".date('Y-m-d', gwitc_first_fail($db, $server))."\n";
}
}
$db->close();
if ($status == 0) {
echo "[ OK ]\n";
}
exit($status);