Yurik has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/64268


Change subject: Scripts to match IPs against known CIDR blocks and choose the 
best.
......................................................................

Scripts to match IPs against known CIDR blocks and choose the best.

Change-Id: Ic861da738df1f4094cc279c0a88246d6914bffaa
---
M maintenance/cidr.py
M maintenance/test.py
2 files changed, 29 insertions(+), 1 deletion(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/ZeroRatedMobileAccess 
refs/changes/68/64268/1

diff --git a/maintenance/cidr.py b/maintenance/cidr.py
index 492dfb2..8d45d19 100644
--- a/maintenance/cidr.py
+++ b/maintenance/cidr.py
@@ -32,8 +32,12 @@
             print()
             printDiff(ips, opt[xcs], xcs + ':   ')
 
+def confToIps(confs):
+    return dict([(xcs, IPSet(ips['ips'])) for xcs, ips in confs.items()])
+    
+
 def printConflicts(confs, extra = None):
-    sets = dict([(xcs, IPSet(ips['ips'])) for xcs, ips in confs.items()])
+    sets = confToIps(confs)
     if extra is not None:
         sets['extra'] = IPSet(extra)
     for xcs, ips in sets.items():
@@ -57,3 +61,21 @@
 def printAcl(ips):
     for ip in cidrToVclStrs(ips):
         print(ip)
+
+def findIp(confs, ipaddr):
+    sets = dict([(xcs, [IPNetwork(ip) for ip in ips['ips']]) for xcs, ips in 
confs.items()])
+    ip = IPAddress(ipaddr)
+    found = 0
+    for i in range(10):
+        for xcs in sets:
+            for ipn in sets[xcs]:
+                n = IPNetwork(ipn)
+                if n.prefixlen <= i: continue
+                n.prefixlen -= i
+                if ip in n:
+                    print('%s found in %s / %s - %d' % (ipaddr, xcs, ipn, i))
+                    found += 1
+        if found > 0:
+            break
+    if found > 1:
+        print('*** %s found in %d ranges' % (ipaddr, found))
diff --git a/maintenance/test.py b/maintenance/test.py
index 7194f98..0d34883 100644
--- a/maintenance/test.py
+++ b/maintenance/test.py
@@ -91,4 +91,10 @@
     printOptimization(confs)
 
 
+def findIpsInConf(file, site = META):
+    confs = getAllConfigs(site)
+    with open(file,'r') as f:
+        for s in f:
+            findIp(confs, s.strip())
+
 # checkProdBanners()

-- 
To view, visit https://gerrit.wikimedia.org/r/64268
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic861da738df1f4094cc279c0a88246d6914bffaa
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/ZeroRatedMobileAccess
Gerrit-Branch: master
Gerrit-Owner: Yurik <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to