Subversion Repositories vgwhois

Rev

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