ip2cc : ajout des réseaux internes AUF
authorProgfou <jean-christophe.andre@auf.org>
Thu, 25 Jan 2018 22:02:24 +0000 (17:02 -0500)
committerProgfou <jean-christophe.andre@auf.org>
Thu, 25 Jan 2018 22:02:24 +0000 (17:02 -0500)
outils/ip2cc

index ea049ec..0e6d8a7 100755 (executable)
@@ -9,16 +9,83 @@ except:
     print "Support GeoIP non disponible. Installer le paquet 'python-geoip'."
     sys.exit(1)
 
-PATTERN_IP4 = r'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b'
+PATTERN_IP4 = r'\b(\d{1,3}\.\d{1,3}\.)\d{1,3}\.\d{1,3}\b'
 #REPLACEMENT_IP4 = '<%(cc)s>%(ip4)s'
 REPLACEMENT_IP4 = '<\033[1;31m%(cc)s\033[m>\033[34m%(ip4)s\033[m'
 
+AUF_NETWORKS = {
+  '10.1.':   'AD', '10.2.':   'AE', '10.3.':   'AF', '10.4.':   'AG',
+  '10.5.':   'AI', '10.6.':   'AL', '10.7.':   'AM', '10.8.':   'AN',
+  '10.9.':   'AO', '10.10.':  'AQ', '10.11.':  'AR', '10.12.':  'AS',
+  '10.13.':  'AT', '10.14.':  'AU', '10.15.':  'AW', '10.16.':  'AZ',
+  '10.17.':  'BA', '10.18.':  'BB', '10.19.':  'BD', '10.20.':  'BE',
+  '10.21.':  'BF', '10.22.':  'BG', '10.23.':  'BH', '10.24.':  'BI',
+  '10.25.':  'BJ', '10.26.':  'BM', '10.27.':  'BN', '10.28.':  'BO',
+  '10.29.':  'BR', '10.30.':  'BS', '10.31.':  'BT', '10.32.':  'BV',
+  '10.33.':  'BW', '10.34.':  'BY', '10.35.':  'BZ', '10.36.':  'CA',
+  '10.37.':  'CC', '10.38.':  'CD', '10.39.':  'CF', '10.40.':  'CG',
+  '10.41.':  'CH', '10.42.':  'CI', '10.43.':  'CK', '10.44.':  'CL',
+  '10.45.':  'CM', '10.46.':  'CN', '10.47.':  'CO', '10.48.':  'CR',
+  '10.49.':  'CU', '10.50.':  'CV', '10.51.':  'CX', '10.52.':  'CY',
+  '10.53.':  'CZ', '10.54.':  'DE', '10.55.':  'DJ', '10.56.':  'DK',
+  '10.57.':  'DM', '10.58.':  'DO', '10.59.':  'DZ', '10.60.':  'EC',
+  '10.61.':  'EE', '10.62.':  'EG', '10.63.':  'EH', '10.64.':  'ER',
+  '10.65.':  'ES', '10.66.':  'ET', '10.67.':  'FI', '10.68.':  'FJ',
+  '10.69.':  'FK', '10.70.':  'FM', '10.71.':  'FO', '10.72.':  'FR',
+  '10.73.':  'GA', '10.74.':  'GB', '10.75.':  'GD', '10.76.':  'GE',
+  '10.77.':  'GF', '10.78.':  'GH', '10.79.':  'GI', '10.80.':  'GL',
+  '10.81.':  'GM', '10.82.':  'GN', '10.83.':  'GP', '10.84.':  'GQ',
+  '10.85.':  'GR', '10.86.':  'GS', '10.87.':  'GT', '10.88.':  'GU',
+  '10.89.':  'GW', '10.90.':  'GY', '10.91.':  'HK', '10.92.':  'HM',
+  '10.93.':  'HN', '10.94.':  'HR', '10.95.':  'HT', '10.96.':  'HU',
+  '10.97.':  'ID', '10.98.':  'IE', '10.99.':  'IL', '10.100.': 'IN',
+  '10.101.': 'IO', '10.102.': 'IQ', '10.103.': 'IR', '10.104.': 'IS',
+  '10.105.': 'IT', '10.106.': 'JM', '10.107.': 'JO', '10.108.': 'JP',
+  '10.109.': 'KE', '10.110.': 'KG', '10.111.': 'KH', '10.112.': 'KI',
+  '10.113.': 'KM', '10.114.': 'KN', '10.115.': 'KP', '10.116.': 'KR',
+  '10.117.': 'KW', '10.118.': 'KY', '10.119.': 'KZ', '10.120.': 'LA',
+  '10.121.': 'LB', '10.122.': 'LC', '10.123.': 'LI', '10.124.': 'LK',
+  '10.125.': 'LR', '10.126.': 'LS', '10.127.': 'LT', '10.128.': 'LU',
+  '10.129.': 'LV', '10.130.': 'LY', '10.131.': 'MA', '10.132.': 'MC',
+  '10.133.': 'MD', '10.134.': 'MG', '10.135.': 'MH', '10.136.': 'MK',
+  '10.137.': 'ML', '10.138.': 'MM', '10.139.': 'MN', '10.140.': 'MO',
+  '10.141.': 'MP', '10.142.': 'MQ', '10.143.': 'MR', '10.144.': 'MS',
+  '10.145.': 'MT', '10.146.': 'MU', '10.147.': 'MV', '10.148.': 'MW',
+  '10.149.': 'MX', '10.150.': 'MY', '10.151.': 'MZ', '10.152.': 'NA',
+  '10.153.': 'NC', '10.154.': 'NE', '10.155.': 'NF', '10.156.': 'NG',
+  '10.157.': 'NI', '10.158.': 'NL', '10.159.': 'NO', '10.160.': 'NP',
+  '10.161.': 'NR', '10.162.': 'NU', '10.163.': 'NZ', '10.164.': 'OM',
+  '10.165.': 'PA', '10.166.': 'PE', '10.167.': 'PF', '10.168.': 'PG',
+  '10.169.': 'PH', '10.170.': 'PK', '10.171.': 'PL', '10.172.': 'PM',
+  '10.173.': 'PN', '10.174.': 'PR', '10.175.': 'PS', '10.176.': 'PT',
+  '10.177.': 'PW', '10.178.': 'PY', '10.179.': 'QA', '10.180.': 'RE',
+  '10.181.': 'RO', '10.182.': 'RU', '10.183.': 'RW', '10.184.': 'SA',
+  '10.185.': 'SB', '10.186.': 'SC', '10.187.': 'SD', '10.188.': 'SE',
+  '10.189.': 'SG', '10.190.': 'SH', '10.191.': 'SI', '10.192.': 'SJ',
+  '10.193.': 'SK', '10.194.': 'SL', '10.195.': 'SM', '10.196.': 'SN',
+  '10.197.': 'SO', '10.198.': 'SR', '10.199.': 'ST', '10.200.': 'SV',
+  '10.201.': 'SY', '10.202.': 'SZ', '10.203.': 'TC', '10.204.': 'TD',
+  '10.205.': 'TF', '10.206.': 'TG', '10.207.': 'TH', '10.208.': 'TJ',
+  '10.209.': 'TK', '10.210.': 'TM', '10.211.': 'TN', '10.212.': 'TO',
+  '10.213.': 'TP', '10.214.': 'TR', '10.215.': 'TT', '10.216.': 'TV',
+  '10.217.': 'TW', '10.218.': 'TZ', '10.219.': 'UA', '10.220.': 'UG',
+  '10.221.': 'UM', '10.222.': 'US', '10.223.': 'UY', '10.224.': 'UZ',
+  '10.225.': 'VA', '10.226.': 'VC', '10.227.': 'VE', '10.228.': 'VG',
+  '10.229.': 'VI', '10.230.': 'VN', '10.231.': 'VU', '10.232.': 'WF',
+  '10.233.': 'WS', '10.234.': 'YE', '10.235.': 'YT', '10.236.': 'YU',
+  '10.237.': 'ZA', '10.238.': 'ZM', '10.239.': 'ZW',
+}
+
 gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
 
 def ip4_to_cc(matchobj):
     ip4 = matchobj.group(0)
-    cc = gi.country_code_by_addr(ip4)
-    if cc is None: cc = '??'
+    prefix = matchobj.group(1)
+    cc = AUF_NETWORKS.get(prefix, None)
+    if cc is None:
+        cc = gi.country_code_by_addr(ip4)
+    if cc is None:
+        cc = '??'
     return REPLACEMENT_IP4 % {'cc': cc, 'ip4': ip4}
 
 pattern = re.compile(PATTERN_IP4, re.MULTILINE)