Subversion Repositories vgwhois

Rev

Rev 5 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 daniel-mar 1
#!/usr/bin/php
2
<?php
3
 
4
#
11 daniel-mar 5
#  VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
5 daniel-mar 6
#  Maintenance / Developer utilities
2 daniel-mar 7
#
5 daniel-mar 8
#  (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
2 daniel-mar 9
#
5 daniel-mar 10
#  License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
2 daniel-mar 11
#
12
 
13
error_reporting(E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED);
14
 
15
require_once __DIR__ . '/../../../shared/php_includes/common_functions.inc.php';
16
require_once __DIR__ . '/whoisping_functions.inc.php';
4 daniel-mar 17
require_once __DIR__ . '/../config.inc.php';
2 daniel-mar 18
 
4 daniel-mar 19
# ---
20
 
21
if (!is_dir(dirname(WHOISPING_DB))) mkdir(dirname(WHOISPING_DB), 0755, true);
22
$db = new SQLite3(WHOISPING_DB); # TODO: in config auslagern
2 daniel-mar 23
if (!$db) die ($error);
24
 
25
gwitc_initdb($db);
26
 
27
/*
28
$stm = "SELECT * FROM gwi_tc_whois_ping WHERE server = 'whois.nic.ve'";
29
$result = $db->query("SELECT * FROM gwi_tc_whois_ping WHERE server = 'whois.nic.ve'");
30
$row = $result->fetchArray(SQLITE3_ASSOC);
31
print_r($row);
32
*/
33
 
34
$status=0;
35
 
36
$pattern_servers = array();
37
$pattern_files = getpatternfiles();
38
foreach ($pattern_files as &$pattern_file) {
39
	$pattern_servers_c = gwitc_list_whois_servers($pattern_file);
40
	$pattern_servers = array_merge($pattern_servers, $pattern_servers_c);
41
}
42
 
43
$dead_servers = array();
4 daniel-mar 44
$dead_servers_raw = file(DEAD_SERVER_LIST);
2 daniel-mar 45
foreach ($dead_servers_raw as &$server) {
46
	$server = trim($server);
47
	if ($server == '') continue;
48
	if ($server[0] == '#') continue;
49
 
50
	$dead_servers[] = $server;
51
}
52
 
53
# $servers = $dead_servers + $pattern_servers
54
$servers = array();
55
foreach ($pattern_servers as &$server) {
56
	if (!in_array($server, $servers)) {
57
		$servers[] = $server;
58
	}
59
}
60
foreach ($dead_servers as &$server) {
61
	if (!in_array($server, $servers)) {
62
		$servers[] = $server;
63
	} else {
64
		if (in_array($server, $dead_servers)) {
65
			$status=1;
66
			echo "[ !! ] Attention! $server is in dead-servers.list and pattern. Please remove one instance!\n";
67
		}
68
	}
69
}
70
 
71
foreach ($servers as &$server) {
72
	$reborn = gwitc_reborn_val($db, $server);
73
	if ($reborn) {  // TODO: also show time since when it is reborn?
74
		if (in_array($server, $dead_servers)) {
75
			$status=1;
76
			echo "[ !! ] Attention: $server is ALIVE again! Please remove from dead-servers.list and add to pattern.\n";
77
		}
78
 
79
		if (in_array($server, $pattern_servers) && (!in_array($server, $dead_servers))) {
80
			gwitc_set_reborn($db, $server, 0);
81
		}
82
	} else {
83
		if (in_array($server, $dead_servers) && (!in_array($server, $pattern_servers))) continue;
84
 
85
		$duration = gwitc_fail_duration($db, $server);
86
		if ($duration < WHOIS_SERVER_DEAD_AFTER) continue;
87
		$status=1;
88
		echo "[ !! ] $server down for ".human_timediff($duration)."; first fail: ".date('Y-m-d', gwitc_first_fail($db, $server))."\n";
89
	}
90
}
91
 
92
$db->close();
93
 
94
if ($status == 0) {
95
	echo "[ OK ]\n";
96
}
97
 
98
exit($status);