Rev 1244 | Rev 1416 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
557 | daniel-mar | 1 | #!/usr/bin/env php |
239 | daniel-mar | 2 | -- This file (wellknown_other_mysql.sql) contains ASN.1 and IRI names of OIDs which are either |
54 | daniel-mar | 3 | -- a) Root OIDs |
4 | -- b) Unicode labels which are long arcs |
||
5 | -- c) Standardized ASN.1 identifiers |
||
6 | -- d) OIDs where potential users of this software can register OIDs in these arcs (e.g. an "identified organization" arc) |
||
239 | daniel-mar | 7 | -- Use the tool dev/generate_wellknown_other_mysql to generate this file |
54 | daniel-mar | 8 | |
9 | <?php |
||
10 | |||
511 | daniel-mar | 11 | /* |
12 | * OIDplus 2.0 |
||
13 | * Copyright 2019 - 2021 Daniel Marschall, ViaThinkSoft |
||
14 | * |
||
15 | * Licensed under the Apache License, Version 2.0 (the "License"); |
||
16 | * you may not use this file except in compliance with the License. |
||
17 | * You may obtain a copy of the License at |
||
18 | * |
||
19 | * http://www.apache.org/licenses/LICENSE-2.0 |
||
20 | * |
||
21 | * Unless required by applicable law or agreed to in writing, software |
||
22 | * distributed under the License is distributed on an "AS IS" BASIS, |
||
23 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||
24 | * See the License for the specific language governing permissions and |
||
25 | * limitations under the License. |
||
26 | */ |
||
27 | |||
1367 | daniel-mar | 28 | use ViaThinkSoft\OIDplus\OIDplus; |
29 | |||
54 | daniel-mar | 30 | require_once __DIR__ . '/../includes/oidplus.inc.php'; |
31 | |||
32 | OIDplus::init(false); |
||
261 | daniel-mar | 33 | if (!OIDplus::baseConfig()->exists('OIDINFO_API_URL')) { |
54 | daniel-mar | 34 | die("OIDINFO_API_URL not available (API is currently not public)\n"); |
35 | } |
||
36 | |||
37 | $output = array(); |
||
38 | |||
39 | function _is_standardized($oid, $asn1id) { |
||
40 | $std = asn1_get_standardized_array(); |
||
41 | $x = oid_up($oid) == $oid ? '' : oid_up($oid)."."; |
||
42 | return isset( $std[$x.$asn1id]) && ($std[$x.$asn1id] == $oid); |
||
43 | } |
||
44 | |||
45 | function _is_long($oid) { |
||
46 | $oid = '/'.str_replace('.', '/', $oid); |
||
47 | return in_array($oid, iri_get_long_arcs()); |
||
48 | } |
||
49 | |||
50 | function _process_oid($oid) { |
||
51 | global $output; |
||
52 | |||
53 | if (!isset($output[$oid])) { |
||
54 | if ($oid == '0.0.23') { |
||
55 | // Rec. ITU-T X.660 | ISO/IEC 9834-3, clause A.3.3.1 allows "0.0.w", although it is illegal, since no W-series exist |
||
56 | $data = array(); |
||
57 | $data['oid'] = array(); |
||
58 | $data['oid']['identifier'] = array('w'); |
||
59 | $data['oid']['unicode-label'] = array('W'); |
||
60 | } else { |
||
61 | $data = ft_get_oid_data($oid); |
||
62 | } |
||
63 | |||
1244 | daniel-mar | 64 | $output[$oid] = array(); |
54 | daniel-mar | 65 | $output[$oid]['asn1id'] = array(); |
66 | $output[$oid]['iri'] = array(); |
||
239 | daniel-mar | 67 | $output[$oid]['checksum'] = array(); |
54 | daniel-mar | 68 | |
69 | if (isset($data['oid']['identifier'])) { |
||
70 | foreach ($data['oid']['identifier'] as $asn1id) { |
||
239 | daniel-mar | 71 | $output[$oid]['checksum'][] = $oid.'|ASN1|'.$asn1id.'|'.(_is_standardized($oid, $asn1id) ? '1' : '0').'|1||'; |
72 | $std = _is_standardized($oid, $asn1id) ? "'1'" : "'0'"; |
||
73 | $output[$oid]['asn1id'][] = "INSERT INTO `asn1id` (oid, name, standardized, well_known) VALUES ('oid:$oid', '$asn1id', $std, '1');"; |
||
54 | daniel-mar | 74 | } |
75 | } else { |
||
111 | daniel-mar | 76 | //echo "-- Warning: Has no ASN.1 identifier: $oid\n"; |
54 | daniel-mar | 77 | } |
78 | if (isset($data['oid']['unicode-label'])) { |
||
79 | foreach ($data['oid']['unicode-label'] as $iri) { |
||
239 | daniel-mar | 80 | $output[$oid]['checksum'][] = $oid.'|IRI|'.$iri.'|'.(_is_long($oid) ? '1' : '0').'|1||'; |
54 | daniel-mar | 81 | |
239 | daniel-mar | 82 | $std = _is_long($oid) ? "'1'" : "'0'"; |
83 | |||
54 | daniel-mar | 84 | if (strpos($iri, '&#') !== false) { |
85 | $iri = "from_base64('".base64_encode(html_entity_decode($iri, ENT_COMPAT | ENT_HTML401, "UTF-8"))."')"; |
||
86 | } else { |
||
87 | $iri = "'$iri'"; |
||
88 | } |
||
89 | |||
239 | daniel-mar | 90 | $output[$oid]['iri'][] = "INSERT INTO `iri` (oid, name, longarc, well_known) VALUES ('oid:$oid', $iri, $std, '1');"; |
54 | daniel-mar | 91 | } |
92 | } |
||
93 | } |
||
94 | |||
95 | return $output[$oid]; |
||
96 | } |
||
97 | |||
98 | // --- |
||
99 | |||
100 | $interesting_oids = array(); |
||
101 | |||
102 | foreach (asn1_get_standardized_array() as $tmp => $oid) { |
||
103 | $interesting_oids[] = $oid; |
||
104 | } |
||
105 | |||
106 | foreach (iri_get_long_arcs() as $tmp => $oid) { |
||
107 | $oid = substr(str_replace('/', '.', $oid),1); |
||
108 | $interesting_oids[] = $oid; |
||
109 | } |
||
110 | |||
62 | daniel-mar | 111 | // ---------------------------------------------------------------- |
54 | daniel-mar | 112 | |
62 | daniel-mar | 113 | $interesting_oids[] = '0'; // itu-t |
114 | $interesting_oids[] = '0.2'; // telecom operators |
||
115 | $interesting_oids[] = '0.3'; // network-operator |
||
116 | $interesting_oids[] = '0.4'; // identified-organization |
||
117 | $interesting_oids[] = '0.4.0'; // etsi |
||
118 | $interesting_oids[] = '0.4.0.127'; // reserved |
||
119 | $interesting_oids[] = '0.4.0.127.0'; // etsi-identified-organization |
||
120 | $interesting_oids[] = '1'; // iso |
||
121 | $interesting_oids[] = '1.1'; // registration-authority |
||
122 | $interesting_oids[] = '1.1.19785'; // cbeff |
||
123 | $interesting_oids[] = '1.1.19785.0'; // organization |
||
124 | $interesting_oids[] = '1.2'; // member-body |
||
125 | // country_getter defines the country OIDs |
||
111 | daniel-mar | 126 | //$interesting_oids[] = '1.2.158'; // tw |
62 | daniel-mar | 127 | $interesting_oids[] = '1.2.158.1'; // organization |
111 | daniel-mar | 128 | //$interesting_oids[] = '1.2.276'; // de |
62 | daniel-mar | 129 | $interesting_oids[] = '1.2.276.0'; // din-certco |
111 | daniel-mar | 130 | //$interesting_oids[] = '1.2.344'; // hk |
62 | daniel-mar | 131 | $interesting_oids[] = '1.2.344.1'; // organization |
111 | daniel-mar | 132 | //$interesting_oids[] = '1.2.616'; // pl |
62 | daniel-mar | 133 | $interesting_oids[] = '1.2.616.1'; // organization |
111 | daniel-mar | 134 | //$interesting_oids[] = '1.2.826'; // gb |
62 | daniel-mar | 135 | $interesting_oids[] = '1.2.826.0'; // national |
136 | $interesting_oids[] = '1.2.826.0.1'; // eng-ltd |
||
137 | $interesting_oids[] = '1.2.826.0.1.3680043'; // Medical Connections ( https://www.medicalconnections.co.uk/FreeUID/ ) |
||
111 | daniel-mar | 138 | //$interesting_oids[] = '1.2.840'; // us |
62 | daniel-mar | 139 | $interesting_oids[] = '1.2.840.1'; // organization |
140 | $interesting_oids[] = '1.2.840.113556'; // microsoft |
||
141 | $interesting_oids[] = '1.2.840.113556.1'; // Microsoft Active Directory |
||
142 | $interesting_oids[] = '1.2.840.113556.1.8000'; // companies |
||
143 | $interesting_oids[] = '1.2.840.113556.1.8000.2554'; // customer usage |
||
144 | $interesting_oids[] = '1.2.840.113556.2'; // DICOM |
||
145 | $interesting_oids[] = '1.3'; // identified-organization |
||
146 | $interesting_oids[] = '1.3.6'; // dod |
||
147 | $interesting_oids[] = '1.3.6.1'; // internet |
||
148 | $interesting_oids[] = '1.3.6.1.2'; // mgmt |
||
149 | $interesting_oids[] = '1.3.6.1.2.1'; // mib-2 |
||
150 | $interesting_oids[] = '1.3.6.1.4'; // private |
||
151 | $interesting_oids[] = '1.3.6.1.4.1'; // enterprise |
||
152 | $interesting_oids[] = '1.3.6.1.4.1.19376'; // Integrating the Healthcare Enterprise International |
||
153 | $interesting_oids[] = '1.3.6.1.4.1.19376.3'; // Organizations (not in Repo!) |
||
154 | $interesting_oids[] = '1.3.6.1.4.1.19376.3.276'; // IHE Deutschland |
||
155 | $interesting_oids[] = '1.3.6.1.4.1.19376.3.276.1'; // OID für das OID Konzept Version 1 |
||
156 | $interesting_oids[] = '1.3.6.1.4.1.19376.3.276.1.4'; // Identifikation des ID-Pools für Institutionen (Organisationen, Einheiten, etc.) |
||
157 | $interesting_oids[] = '1.3.6.1.4.1.19376.3.276.1.4.1'; // Krankenhäuser |
||
158 | $interesting_oids[] = '1.3.6.1.4.1.19376.3.276.1.4.2'; // Praxen niedergelassener Ärzte |
||
159 | $interesting_oids[] = '1.3.6.1.4.1.19376.3.276.1.4.3'; // Systeme |
||
160 | $interesting_oids[] = '1.3.6.1.4.1.12798'; // Members of Internet-Käyttäjät Ikuisesti (IKI) |
||
161 | $interesting_oids[] = '1.3.6.1.4.1.12798.1'; // member |
||
162 | $interesting_oids[] = '1.3.6.1.4.1.37476'; // ViaThinkSoft |
||
163 | $interesting_oids[] = '1.3.6.1.4.1.37476.9000'; // freeoid |
||
205 | daniel-mar | 164 | $interesting_oids[] = '1.3.6.1.4.1.37553'; // frdlweb |
165 | $interesting_oids[] = '1.3.6.1.4.1.37553.8'; // WEID |
||
166 | $interesting_oids[] = '1.3.6.1.4.1.37553.8.8'; // private |
||
167 | $interesting_oids[] = '1.3.6.1.4.1.37553.8.9'; // ns |
||
168 | $interesting_oids[] = '1.3.6.1.4.1.37553.8.9.17704'; // dns |
||
169 | $interesting_oids[] = '1.3.6.1.4.1.37553.8.9.1439221'; // uuid |
||
62 | daniel-mar | 170 | $interesting_oids[] = '2'; // joint-iso-itu-t |
171 | $interesting_oids[] = '2.16'; // country |
||
172 | // country_getter defines the country OIDs |
||
111 | daniel-mar | 173 | //$interesting_oids[] = '2.16.158'; // tw |
62 | daniel-mar | 174 | $interesting_oids[] = '2.16.158.1'; // organization |
111 | daniel-mar | 175 | //$interesting_oids[] = '2.16.344'; // hk |
62 | daniel-mar | 176 | $interesting_oids[] = '2.16.344.1'; // organization |
111 | daniel-mar | 177 | //$interesting_oids[] = '2.16.616'; // pl |
62 | daniel-mar | 178 | $interesting_oids[] = '2.16.616.1'; // organization |
111 | daniel-mar | 179 | //$interesting_oids[] = '2.16.840'; // us |
62 | daniel-mar | 180 | $interesting_oids[] = '2.16.840.1'; // organization |
181 | $interesting_oids[] = '2.16.840.1.113883'; // hl7 |
||
182 | $interesting_oids[] = '2.16.840.1.113883.3'; // externalUseRoots |
||
183 | $interesting_oids[] = '2.16.840.1.113883.6'; // externalCodeSystems |
||
184 | $interesting_oids[] = '2.16.840.1.113883.13'; // externalValueSets |
||
185 | $interesting_oids[] = '2.23'; // international-organizations |
||
186 | $interesting_oids[] = '2.25'; // uuid |
||
187 | $interesting_oids[] = '2.40'; // upu |
||
188 | $interesting_oids[] = '2.40.2'; // member-body |
||
189 | $interesting_oids[] = '2.40.3'; // identified-organization |
||
190 | $interesting_oids[] = '2.49'; // alerting |
||
191 | $interesting_oids[] = '2.49.0'; // wmo |
||
192 | $interesting_oids[] = '2.49.0.0'; // authority (Countries) |
||
111 | daniel-mar | 193 | // country_getter defines the country OIDs beneath 2.49.0.0 |
62 | daniel-mar | 194 | $interesting_oids[] = '2.49.0.1'; // country-msg |
111 | daniel-mar | 195 | // country_getter defines the country OIDs beneath 2.49.0.1 |
62 | daniel-mar | 196 | $interesting_oids[] = '2.49.0.2'; // org |
197 | $interesting_oids[] = '2.49.0.3'; // org-msg |
||
198 | |||
199 | // ---------------------------------------------------------------- |
||
200 | |||
54 | daniel-mar | 201 | $interesting_oids = array_unique($interesting_oids); |
202 | natsort($interesting_oids); |
||
203 | |||
204 | $output = array(); |
||
205 | foreach ($interesting_oids as $oid) { |
||
206 | _process_oid($oid); |
||
207 | } |
||
208 | |||
209 | $check_sum = ''; |
||
210 | foreach ($output as $oid => $data) { |
||
111 | daniel-mar | 211 | if (count($data['asn1id']) + count($data['iri']) == 0) continue; |
212 | |||
54 | daniel-mar | 213 | echo "-- $oid\n"; |
214 | foreach ($data['asn1id'] as $line_asn1) { |
||
215 | echo "$line_asn1\n"; |
||
216 | } |
||
217 | foreach ($data['iri'] as $line_iri) { |
||
218 | echo "$line_iri\n"; |
||
219 | } |
||
239 | daniel-mar | 220 | foreach ($data['checksum'] as $chunk) { |
221 | $check_sum .= $chunk; |
||
222 | } |
||
54 | daniel-mar | 223 | echo "\n"; |
224 | } |
||
239 | daniel-mar | 225 | echo '-- Generator "generate_wellknown_other_mysql" checksum '.dechex(crc32($check_sum))."\n"; |
54 | daniel-mar | 226 | |
227 | # --- |
||
228 | |||
229 | function ft_get_oid_data($oid) { |
||
502 | daniel-mar | 230 | $url = OIDplus::baseConfig()->getValue('OIDINFO_API_URL') . '&oid='.urlencode($oid); |
54 | daniel-mar | 231 | $cont_json = @file_get_contents($url); |
232 | if (!$cont_json) { |
||
233 | sleep(5); |
||
1244 | daniel-mar | 234 | $cont_json = @file_get_contents($url); |
235 | if (!$cont_json) return false; |
||
54 | daniel-mar | 236 | } |
237 | $data = json_decode($cont_json,true); |
||
238 | |||
239 | return $data; |
||
240 | } |