Rev 5 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5 | Rev 11 | ||
---|---|---|---|
1 | <?php |
1 | <?php |
2 | 2 | ||
3 | # |
3 | # |
4 | # VWhois (ViaThinkSoft WHOIS, a fork of generic Whois / gwhois) |
4 | # VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois) |
5 | # Maintenance / Developer utilities |
5 | # Maintenance / Developer utilities |
6 | # |
6 | # |
7 | # (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de> |
7 | # (c) 2012-2019 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de> |
8 | # |
8 | # |
9 | # License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2) |
9 | # License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2) |
10 | # |
10 | # |
11 | 11 | ||
12 | # FUT: sqlinj und cmdinj beheben |
12 | # FUT: sqlinj und cmdinj beheben |
13 | 13 | ||
14 | function gwitc_initdb($db) { |
14 | function gwitc_initdb($db) { |
15 | # "CREATE TABLE IF NOT EXISTS" does not work with my version of PHP/SQLite |
15 | # "CREATE TABLE IF NOT EXISTS" does not work with my version of PHP/SQLite |
16 | $stm = "CREATE TABLE IF NOT EXISTS gwi_tc_whois_ping ( |
16 | $stm = "CREATE TABLE IF NOT EXISTS gwi_tc_whois_ping ( |
17 | id INTEGER PRIMARY KEY, |
17 | id INTEGER PRIMARY KEY, |
18 | server TEXT UNIQUE, |
18 | server TEXT UNIQUE, |
19 | fails INTEGER, |
19 | fails INTEGER, |
20 | lastcheck INTEGER, |
20 | lastcheck INTEGER, |
21 | lastsucc INTEGER, |
21 | lastsucc INTEGER, |
22 | firstfail INTEGER, |
22 | firstfail INTEGER, |
23 | lastfail INTEGER, |
23 | lastfail INTEGER, |
24 | reborn INTEGER |
24 | reborn INTEGER |
25 | )"; |
25 | )"; |
26 | $db->exec($stm); |
26 | $db->exec($stm); |
27 | } |
27 | } |
28 | 28 | ||
29 | function gwitc_checkage_succ($db, $server) { |
29 | function gwitc_checkage_succ($db, $server) { |
30 | $stm = "SELECT lastsucc FROM gwi_tc_whois_ping WHERE server = '$server'"; |
30 | $stm = "SELECT lastsucc FROM gwi_tc_whois_ping WHERE server = '$server'"; |
31 | $result = $db->query($stm); |
31 | $result = $db->query($stm); |
32 | if (!$result) die("Cannot execute query."); |
32 | if (!$result) die("Cannot execute query."); |
33 | $row = $result->fetchArray(SQLITE3_ASSOC); |
33 | $row = $result->fetchArray(SQLITE3_ASSOC); |
34 | $ts = (int)$row['lastsucc']; |
34 | $ts = (int)$row['lastsucc']; |
35 | $now = time(); |
35 | $now = time(); |
36 | 36 | ||
37 | return ($now-$ts); |
37 | return ($now-$ts); |
38 | } |
38 | } |
39 | 39 | ||
40 | function gwitc_checkage_check($db, $server) { |
40 | function gwitc_checkage_check($db, $server) { |
41 | $stm = "SELECT lastcheck FROM gwi_tc_whois_ping WHERE server = '$server'"; |
41 | $stm = "SELECT lastcheck FROM gwi_tc_whois_ping WHERE server = '$server'"; |
42 | $result = $db->query($stm); |
42 | $result = $db->query($stm); |
43 | if (!$result) die("Cannot execute query."); |
43 | if (!$result) die("Cannot execute query."); |
44 | $row = $result->fetchArray(SQLITE3_ASSOC); |
44 | $row = $result->fetchArray(SQLITE3_ASSOC); |
45 | $ts = (int)$row['lastcheck']; |
45 | $ts = (int)$row['lastcheck']; |
46 | $now = time(); |
46 | $now = time(); |
47 | 47 | ||
48 | return ($now-$ts); |
48 | return ($now-$ts); |
49 | } |
49 | } |
50 | 50 | ||
51 | function gwitc_reborn_val($db, $server) { |
51 | function gwitc_reborn_val($db, $server) { |
52 | $stm = "SELECT reborn FROM gwi_tc_whois_ping WHERE server = '$server'"; |
52 | $stm = "SELECT reborn FROM gwi_tc_whois_ping WHERE server = '$server'"; |
53 | $result = $db->query($stm); |
53 | $result = $db->query($stm); |
54 | if (!$result) die("Cannot execute query."); |
54 | if (!$result) die("Cannot execute query."); |
55 | $row = $result->fetchArray(SQLITE3_ASSOC); |
55 | $row = $result->fetchArray(SQLITE3_ASSOC); |
56 | return (int)$row['reborn']; |
56 | return (int)$row['reborn']; |
57 | } |
57 | } |
58 | 58 | ||
59 | function gwitc_fail_duration($db, $server) { |
59 | function gwitc_fail_duration($db, $server) { |
60 | $stm = "SELECT firstfail,lastsucc,lastfail FROM gwi_tc_whois_ping WHERE server = '$server'"; |
60 | $stm = "SELECT firstfail,lastsucc,lastfail FROM gwi_tc_whois_ping WHERE server = '$server'"; |
61 | $result = $db->query($stm); |
61 | $result = $db->query($stm); |
62 | if (!$result) die("Cannot execute query."); |
62 | if (!$result) die("Cannot execute query."); |
63 | $row = $result->fetchArray(SQLITE3_ASSOC); |
63 | $row = $result->fetchArray(SQLITE3_ASSOC); |
64 | $lastsucc = (int)$row['lastsucc']; |
64 | $lastsucc = (int)$row['lastsucc']; |
65 | $firstfail = (int)$row['firstfail']; |
65 | $firstfail = (int)$row['firstfail']; |
66 | $lastfail = (int)$row['lastfail']; |
66 | $lastfail = (int)$row['lastfail']; |
67 | 67 | ||
68 | if ($firstfail == 0) return 0; |
68 | if ($firstfail == 0) return 0; |
69 | if ($lastsucc > $lastfail) return 0; |
69 | if ($lastsucc > $lastfail) return 0; |
70 | 70 | ||
71 | return ($lastfail-max($lastsucc,$firstfail)); |
71 | return ($lastfail-max($lastsucc,$firstfail)); |
72 | } |
72 | } |
73 | 73 | ||
74 | function gwitc_first_fail($db, $server) { |
74 | function gwitc_first_fail($db, $server) { |
75 | $stm = "SELECT firstfail,lastsucc FROM gwi_tc_whois_ping WHERE server = '$server'"; |
75 | $stm = "SELECT firstfail,lastsucc FROM gwi_tc_whois_ping WHERE server = '$server'"; |
76 | $result = $db->query($stm); |
76 | $result = $db->query($stm); |
77 | if (!$result) die("Cannot execute query."); |
77 | if (!$result) die("Cannot execute query."); |
78 | $row = $result->fetchArray(SQLITE3_ASSOC); |
78 | $row = $result->fetchArray(SQLITE3_ASSOC); |
79 | $lastsucc = (int)$row['lastsucc']; |
79 | $lastsucc = (int)$row['lastsucc']; |
80 | $firstfail = (int)$row['firstfail']; |
80 | $firstfail = (int)$row['firstfail']; |
81 | 81 | ||
82 | if ($firstfail == 0) return 0; |
82 | if ($firstfail == 0) return 0; |
83 | 83 | ||
84 | return max($firstfail,$lastsucc); |
84 | return max($firstfail,$lastsucc); |
85 | } |
85 | } |
86 | 86 | ||
87 | function gwitc_set_reborn($db, $server, $val) { |
87 | function gwitc_set_reborn($db, $server, $val) { |
88 | $stm = "SELECT fails,lastsucc,firstfail FROM gwi_tc_whois_ping WHERE server = '$server'"; |
88 | $stm = "SELECT fails,lastsucc,firstfail FROM gwi_tc_whois_ping WHERE server = '$server'"; |
89 | $result = $db->query($stm); |
89 | $result = $db->query($stm); |
90 | if (!$result) die("Cannot execute query."); |
90 | if (!$result) die("Cannot execute query."); |
91 | $row = $result->fetchArray(SQLITE3_ASSOC); |
91 | $row = $result->fetchArray(SQLITE3_ASSOC); |
92 | $fails = 0; // (int)$row['fails']; |
92 | $fails = 0; // (int)$row['fails']; |
93 | $ts = time(); |
93 | $ts = time(); |
94 | $lastsucc = $ts; // (int)$row['lastsucc']; |
94 | $lastsucc = $ts; // (int)$row['lastsucc']; |
95 | $firstfail = 0; // (int)$row['firstfail']; |
95 | $firstfail = 0; // (int)$row['firstfail']; |
96 | $stm = "REPLACE INTO gwi_tc_whois_ping (server,fails,lastcheck,lastsucc,lastfail,firstfail,reborn) VALUES ('$server', $fails, $ts, $lastsucc, $ts, $firstfail, $val)"; |
96 | $stm = "REPLACE INTO gwi_tc_whois_ping (server,fails,lastcheck,lastsucc,lastfail,firstfail,reborn) VALUES ('$server', $fails, $ts, $lastsucc, $ts, $firstfail, $val)"; |
97 | $ok = $db->exec($stm); |
97 | $ok = $db->exec($stm); |
98 | if (!$ok) die("Cannot execute query."); |
98 | if (!$ok) die("Cannot execute query."); |
99 | 99 | ||
100 | return $fails; |
100 | return $fails; |
101 | } |
101 | } |
102 | 102 | ||
103 | function gwitc_incr_failcounter($db, $server) { |
103 | function gwitc_incr_failcounter($db, $server) { |
104 | $stm = "SELECT fails,lastsucc,firstfail FROM gwi_tc_whois_ping WHERE server = '$server'"; |
104 | $stm = "SELECT fails,lastsucc,firstfail FROM gwi_tc_whois_ping WHERE server = '$server'"; |
105 | $result = $db->query($stm); |
105 | $result = $db->query($stm); |
106 | if (!$result) die("Cannot execute query."); |
106 | if (!$result) die("Cannot execute query."); |
107 | $row = $result->fetchArray(SQLITE3_ASSOC); |
107 | $row = $result->fetchArray(SQLITE3_ASSOC); |
108 | $fails = (int)$row['fails']; |
108 | $fails = (int)$row['fails']; |
109 | $lastsucc = (int)$row['lastsucc']; |
109 | $lastsucc = (int)$row['lastsucc']; |
110 | 110 | ||
111 | $fails++; |
111 | $fails++; |
112 | $ts = time(); |
112 | $ts = time(); |
113 | $firstfail = ($fails == 1) ? $ts : (int)$row['firstfail']; |
113 | $firstfail = ($fails == 1) ? $ts : (int)$row['firstfail']; |
114 | $reborn = 0; // wenn er failed ist, kann er nicht reborned sein |
114 | $reborn = 0; // wenn er failed ist, kann er nicht reborned sein |
115 | 115 | ||
116 | $stm = "REPLACE INTO gwi_tc_whois_ping (server,fails,lastcheck,lastsucc,lastfail,firstfail,reborn) VALUES ('$server', $fails, $ts, $lastsucc, $ts, $firstfail, $reborn)"; |
116 | $stm = "REPLACE INTO gwi_tc_whois_ping (server,fails,lastcheck,lastsucc,lastfail,firstfail,reborn) VALUES ('$server', $fails, $ts, $lastsucc, $ts, $firstfail, $reborn)"; |
117 | $ok = $db->exec($stm); |
117 | $ok = $db->exec($stm); |
118 | if (!$ok) die("Cannot execute query."); |
118 | if (!$ok) die("Cannot execute query."); |
119 | 119 | ||
120 | return $fails; |
120 | return $fails; |
121 | } |
121 | } |
122 | 122 | ||
123 | function gwitc_reset_failcounter($db, $server) { |
123 | function gwitc_reset_failcounter($db, $server) { |
124 | $stm = "SELECT lastfail,reborn FROM gwi_tc_whois_ping WHERE server = '$server'"; |
124 | $stm = "SELECT lastfail,reborn FROM gwi_tc_whois_ping WHERE server = '$server'"; |
125 | $result = $db->query($stm); |
125 | $result = $db->query($stm); |
126 | if (!$result) die("Cannot execute query."); |
126 | if (!$result) die("Cannot execute query."); |
127 | $row = $result->fetchArray(SQLITE3_ASSOC); |
127 | $row = $result->fetchArray(SQLITE3_ASSOC); |
128 | $lastfail = (int)$row['lastfail']; |
128 | $lastfail = (int)$row['lastfail']; |
129 | $ts = time(); |
129 | $ts = time(); |
130 | $reborn = (int)$row['reborn']; |
130 | $reborn = (int)$row['reborn']; |
131 | 131 | ||
132 | $stm = "REPLACE INTO gwi_tc_whois_ping (server,fails,lastcheck,lastsucc,lastfail,firstfail,reborn) VALUES ('$server', 0, $ts, $ts, $lastfail, 0, $reborn)"; |
132 | $stm = "REPLACE INTO gwi_tc_whois_ping (server,fails,lastcheck,lastsucc,lastfail,firstfail,reborn) VALUES ('$server', 0, $ts, $ts, $lastfail, 0, $reborn)"; |
133 | $ok = $db->exec($stm); |
133 | $ok = $db->exec($stm); |
134 | if (!$ok) die("Cannot execute query."); |
134 | if (!$ok) die("Cannot execute query."); |
135 | } |
135 | } |
136 | 136 | ||
137 | function gwitc_list_whois_servers($patternfile) { |
137 | function gwitc_list_whois_servers($patternfile) { |
138 | $out = array(); |
138 | $out = array(); |
139 | $cont = file($patternfile); |
139 | $cont = file($patternfile); |
140 | foreach ($cont as &$x) { |
140 | foreach ($cont as &$x) { |
141 | $x = trim($x); |
141 | $x = trim($x); |
142 | if ($x == '') continue; |
142 | if ($x == '') continue; |
143 | if ($x[0] == '#') continue; |
143 | if ($x[0] == '#') continue; |
144 | if ((preg_match('@^:whois\|(.+)\|@isU', $x.'|', $m)) || (preg_match('@whois::(.+):@isU', $x.':', $m))) { |
144 | if ((preg_match('@^:whois\|(.+)\|@isU', $x.'|', $m)) || (preg_match('@whois::(.+):@isU', $x.':', $m))) { |
145 | $out[] = $m[1]; |
145 | $out[] = $m[1]; |
146 | } |
146 | } |
147 | } |
147 | } |
148 | $out = array_unique($out); |
148 | $out = array_unique($out); |
149 | return $out; |
149 | return $out; |
150 | } |
150 | } |
151 | 151 |