annotate marns_import.php @ 3:5c8c4fa95803 draft

Added support for transfer chaining and some bugfixes
author Ivo Smits <Ivo@UCIS.nl>
date Mon, 17 Nov 2014 01:19:05 +0100
parents caa68b502313
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
1 <?php
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
2 require_once './marccore.php';
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
3
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
4 if (!isset($argv)) $argv = $_SERVER['argv'];
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
5 if (count($argv) < 4) {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
6 echo "Usage: ".$argv[0]." [marc-flatfile-database-filename] [domain-name-or-IP-network] [secret-key-or-file] < [zone-file]\n";
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
7 die();
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
8 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
9
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
10 $marclabel = argtolabel($argv[2]);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
11 switch (ord($marclabel[0])) {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
12 case 1:
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
13 $bits = ord($marclabel[5]);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
14 $orgzonename = 'in-addr.arpa';
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
15 if (($bits % 8) != 0) throw new Exception('Invalid prefix length for IPv4 network');
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
16 for ($i = 0; $i < $bits / 8; $i++) $orgzonename = ord($marclabel[$i + 1]).'.'.$orgzonename;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
17 break;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
18 case 2:
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
19 $bits = ord($marclabel[17]);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
20 $hex = bin2hex(substr($marclabel, 1, 16));
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
21 $orgzonename = 'ip6.arpa';
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
22 if (($bits % 4) != 0) throw new Exception('Invalid prefix length for IPv6 network');
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
23 for ($i = 0; $i < $bits / 4; $i++) $orgzonename = $hex[$i].'.'.$orgzonename;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
24 break;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
25 case 4:
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
26 $orgzonename = substr($marclabel, 1);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
27 break;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
28 default:
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
29 throw new Exception('Unsupported zone type');
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
30 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
31 $orgzonename .= '.';
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
32
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
33 $stdin = fopen('php://stdin', 'r');
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
34 $dnsrecords = array();
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
35 while (($line = fgets($stdin)) !== FALSE) {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
36 $line = rtrim($line, "\r\n");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
37 if (!strlen($line) || $line[0] == ';') continue;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
38 $token = strtok($line, " \t");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
39 if ($line[0] != ' ' && $line[0] != "\t") {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
40 if (!strlen($token) || $token[0] == ';') continue;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
41 if ($token == '@' || strcasecmp($token, $orgzonename) == 0) $name = '';
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
42 elseif (strlen($token) > strlen($orgzonename) && strcasecmp(substr($token, -strlen($orgzonename)-1), '.'.$orgzonename) == 0) $name = substr($token, 0, -strlen($orgzonename)-1);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
43 elseif (strlen($token) && $token[strlen($token) - 1] == '.') continue;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
44 else $name = $token;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
45 $name = strtolower($name);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
46 $token = strtok(" \t");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
47 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
48 $rr = array();
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
49 if (is_numeric($token)) {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
50 $rr['ttl'] = intval($token);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
51 $token = strtok(" \t");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
52 if ($token == 'IN') {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
53 $rr['class'] = $token;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
54 $token = strtok(" \t");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
55 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
56 } else if ($token == 'IN') {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
57 $rr['class'] = $token;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
58 $token = strtok(" \t");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
59 if (is_numeric($token)) {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
60 $rr['ttl'] = intval($token);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
61 $token = strtok(" \t");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
62 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
63 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
64 $rr['type'] = strtoupper($token);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
65 switch ($rr['type']) {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
66 case 'A':
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
67 case 'AAAA':
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
68 $rr['target'] = strtok(" \t");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
69 break;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
70 case 'CNAME':
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
71 case 'NS':
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
72 case 'PTR':
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
73 $rr['target'] = strtok(" \t");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
74 break;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
75 case 'MX':
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
76 $rr['priority'] = strtok(" \t");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
77 $rr['target'] = strtok(" \t");
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
78 break;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
79 default:
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
80 $rr = NULL;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
81 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
82 if ($rr === NULL) continue;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
83 if (!isset($dnsrecords[$name])) $dnsrecords[$name] = array();
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
84 $dnsrecords[$name][] = $rr;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
85 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
86 fclose($stdin);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
87
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
88 print_r($dnsrecords);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
89
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
90 $skey = $argv[3];
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
91 if (file_exists($skey)) {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
92 $skey = file_get_contents($skey);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
93 } else if (strlen($skey) == 64) {
3
5c8c4fa95803 Added support for transfer chaining and some bugfixes
Ivo Smits <Ivo@UCIS.nl>
parents: 1
diff changeset
94 $skey = hex2bin($skey);
1
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
95 } else if ($skey == '-') {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
96 nacl_crypto_sign_ed25519_keypair($skey);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
97 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
98 if (strlen($skey) != 32 && strlen($skey) != 64) throw new Exception('Invalid signing key specified');
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
99
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
100 error_reporting(E_ALL);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
101 $database = new MARCDatabaseFlatFile();
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
102 $database->Open($argv[1]);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
103 $label = chr(4).'ucis-test.ano';
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
104 $resource = $database->GetResource($marclabel);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
105 if ($resource) {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
106 $resource = $resource->ToArray();
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
107 unset($resource['key']);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
108 } else {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
109 $resource = array('label' => $marclabel, 'value' => array(), 'transfer' => '', 'expiration' => time() + 3600 * 24 * 7);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
110 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
111 $resource['value']['dnsrecords'] = $dnsrecords;
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
112 if (!$database->UpdateResource($resource, $skey)) throw new Exception('Could not update resource');
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
113 $database->Save();
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
114 $database->Close();
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
115
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
116 function argtolabel($t) {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
117 if (preg_match('_^[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}/[0-9]{1-2}$_', $t)) return ipnettolabel($t);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
118 if (preg_match('_^(((?=.*(::))(?!.*\3.+\3))\3?|([\dA-F]{1,4}(\3|:\b|$)|\2))(?4){5}((?4){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})\z/[0-9]{1-3}_i', $t)) return ipnettolabel($t);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
119 if (preg_match('/^[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,6}$/i', $t)) return chr(4).strtolower(trim($t, '.'));
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
120 throw new Exception('Could not detect label type for '.$t);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
121 }
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
122 function ipnettolabel($s) {
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
123 $ip = inet_pton(strtok($s, '/'));
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
124 $pl = intval(strtok('/'));
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
125 if ($pl == 0) throw new Exception('Invalid IP network specified');
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
126 if (strlen($ip) == 4) return chr(1).$ip.chr($pl);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
127 if (strlen($ip) == 16) return chr(2).$ip.chr($pl);
caa68b502313 Added the MARC DNS server (and small fixes in marcus and anoclaims)
Ivo Smits <Ivo@UCIS.nl>
parents:
diff changeset
128 }