Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
226 | daniel-mar | 1 | <?php |
2 | |||
3 | # if (!interface_exists('VolcanoSearchProvider')) throw new Exception('Required interface "VolcanoSearchProvider" not found.'); |
||
4 | # if (!class_exists('VolcanoDB')) throw new Exception('Required class "VolcanoDB" not found.'); |
||
5 | |||
6 | require_once __DIR__ . '/../../core/VolcanoSearchProvider.class.php'; |
||
7 | require_once __DIR__ . '/../../includes/ipv4_functions.inc.php'; |
||
8 | |||
9 | class VolcanoSearchIPv4 implements VolcanoSearchProvider { |
||
10 | public static function checkId($id) { |
||
11 | return self::strEqual($id, 'ipv4', true); // is always case insensitive |
||
12 | } |
||
13 | |||
14 | public static function calcDistance($candidate, $searchterm) { |
||
15 | return ipv4_distance($searchterm, $candidate); // TODO: richtig rum? |
||
16 | } |
||
17 | |||
18 | protected static function strEqual($str1, $str2, $caseInsensitive = false) { |
||
19 | if ($caseInsensitive) { |
||
20 | return strtolower($str1) == strtolower($str2); |
||
21 | } else { |
||
22 | return $str1 == $str2; |
||
23 | } |
||
24 | } |
||
25 | } |
||
26 | |||
27 | require_once __DIR__ . '/../../core/1_VolcanoDB.class.php'; |
||
28 | VolcanoDB::registerSearchProvider(new VolcanoSearchIPv4()); |
||
29 | |||
30 | # --- TEST |
||
31 | |||
32 | /* |
||
33 | $x = new VolcanoSearchIPv4(); |
||
34 | |||
35 | assert($x->calcDistance('192.168.0.0/16', '192.168.64.0/18') === 2); |
||
36 | assert($x->calcDistance('192.168.64.0/18', '192.168.64.0/18') === 0); |
||
37 | assert($x->calcDistance('192.168.64.0/20', '192.168.64.0/18') === -2); |
||
38 | |||
39 | assert($x->calcDistance('192.168.69.200/31', '192.168.69.202/31') === false); |
||
40 | assert($x->calcDistance('192.168.69.200/32', '192.168.69.201/32') === false); |
||
41 | assert($x->calcDistance('192.168.69.200', '192.168.69.201') === false); |
||
42 | |||
43 | assert($x->calcDistance('95.211.38.42/32', '95.211.38.42') === 0); |
||
44 | assert($x->calcDistance('95.211.38.42', '95.211.38.42/32') === 0); |
||
45 | */ |