Rev 3 | Rev 11 | 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 | # |
||
5 | daniel-mar | 4 | # VWhois (ViaThinkSoft WHOIS, a fork of generic Whois / gwhois) |
5 | # Common functions in PHP |
||
2 | daniel-mar | 6 | # |
5 | daniel-mar | 7 | # (c) 2013-2015 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 | function getpatternfiles() { |
||
13 | $out = array(); |
||
14 | |||
15 | $files = glob(__DIR__ . '/../../main/pattern/'.'*'); |
||
16 | foreach ($files as &$file) { |
||
17 | # see /usr/bin/gwhois |
||
18 | if (preg_match('@\.dpkg-@', $file)) continue; |
||
19 | if (preg_match('@\.orig$@', $file)) continue; |
||
20 | if (preg_match('@\.bak$@', $file)) continue; |
||
21 | if (preg_match('@\.save$@', $file)) continue; |
||
22 | if (preg_match('@^\.@', $file)) continue; |
||
23 | |||
24 | $out[] = $file; |
||
25 | } |
||
26 | |||
27 | return $out; |
||
28 | } |
||
29 | |||
30 | function get_united_pattern() { |
||
31 | $cont = ''; |
||
32 | |||
33 | $files = getpatternfiles(); |
||
34 | foreach ($files as &$file) { |
||
35 | $cont .= file_get_contents($file)."\n\n"; |
||
36 | } |
||
37 | |||
38 | return $cont; |
||
39 | } |
||
40 | |||
41 | function cached_file($url, $cache_dir, $max_age = /* 24*60*60 */ 86400) { |
||
3 | daniel-mar | 42 | $opts = [ |
43 | "http" => [ |
||
44 | "method" => "GET", |
||
45 | "header" => "User-Agent: Google Chrome Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36.\r\n" |
||
46 | ] |
||
47 | ]; |
||
48 | $context = stream_context_create($opts); |
||
49 | |||
2 | daniel-mar | 50 | $cachefile = $cache_dir . '/' . sha1($url) . '.cache'; |
3 | daniel-mar | 51 | if (!is_dir($cache_dir)) mkdir($cache_dir, 0755, true); |
2 | daniel-mar | 52 | if (file_age($cachefile) > $max_age) { |
3 | daniel-mar | 53 | $cont = file_get_contents($url, 0, $context); |
2 | daniel-mar | 54 | file_put_contents($cachefile, $cont); |
55 | } else { |
||
56 | $cont = file_get_contents($cachefile); |
||
57 | } |
||
3 | daniel-mar | 58 | |
59 | if ($cont === false) { |
||
60 | throw new Exception("Failed to get contents from $url"); |
||
61 | } |
||
62 | |||
2 | daniel-mar | 63 | return $cont; |
64 | } |