Subversion Repositories vgwhois

Rev

Rev 5 | Go to most recent revision | 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 ($error);

gwitc_initdb($db);

$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;
}

# --- Check the servers in the pattern files

foreach ($pattern_servers as &$server) {

        // We will handle them below, not here. (Otherwise the recheck timer would be reset)
        if (in_array($server, $dead_servers)) {
                echo "[ !! ] Attention! $server is in dead-servers.list and pattern. Please remove one instance!\n";
                continue;
        }

        $age = gwitc_checkage_succ($db, $server);
        if ($age < RECHECK_AFTER) continue;
        $open = gwitc_is_port_open($server, 43);
        if ($open) {
                gwitc_reset_failcounter($db, $server);
                echo "OK: $server\n";
        } else {
                $fails = gwitc_incr_failcounter($db, $server);
                $duration = gwitc_fail_duration($db, $server);
                echo "FAIL #$fails: $server (Duration: $duration)\n";
        }
}

# --- Check the dead servers (which have been removed from the pattern list) have resurrected

foreach ($dead_servers as &$server) {
        $age = gwitc_checkage_check($db, $server);
        if ($age < RECHECK_AFTER) continue;
        $open = gwitc_is_port_open($server, 43);
        if ($open) {
                gwitc_set_reborn($db, $server, 1);
                echo "Attention: $server is ALIVE again! Please remove from maintenance/config/dead-servers.list and add to pattern.\n";
        } else {
                # wird bereits von gwitc_incr_failcounter() gemacht: gwitc_set_reborn($db, $server, 0);
                $fails = gwitc_incr_failcounter($db, $server); // hier wird auch lastcheck aktualisiert
                echo "Still dead: $server\n";
        }
}

$db->close();