Subversion Repositories vgwhois

Rev

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