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