Index: nodes/make-network-graph.py
===================================================================
--- nodes/make-network-graph.py	(revision 8240)
+++ nodes/make-network-graph.py	(revision 8240)
@@ -0,0 +1,77 @@
+#!/usr/bin/env python
+# zoek de eerste vrije (== niet in een wleiden.conf gedefinieerde) interlink
+# range
+# lodewijk@wirelessleiden.nl
+import re
+import sys
+import glob
+import getrange
+import tempfile
+import subprocess
+
+OUTFILE = 'network.png'
+
+def make_graph():
+	substre = re.compile("^(\$[a-zA-Z][^ =]*) ?= ?'([^']*)';")
+	
+	
+	poel = {}
+	
+	#XXX: Make parsing global, merge with getrange.get_ranges if possible
+	for fname in glob.glob("*/wleiden.conf"):
+		substs = {}
+		lineNr = 0
+		for l in open(fname):
+			lineNr += 1
+			l = l[:-1]
+			match = substre.match(l)
+			if match != None:
+				substs[match.group(1)] = match.group(2)
+			if l.startswith("IP="):
+				right = l[3:]
+				if '/' not in right:
+					addr = right
+					mask = 32
+				else:
+					addr, mask = right.split('/')
+					if addr in substs:
+						addr = substs[addr]
+				try:
+					addr = getrange.parseaddr(addr)
+					mask = int(mask)
+					addr = addr & ~((1 << (32 - mask)) - 1)
+					cname = fname.split('/')[0]
+					if poel.has_key(addr): 
+						poel[addr] += [cname]
+					else: 
+						poel[addr] = [cname]
+				except ValueError, e:
+					print "[FOUT] in bestand '%s' regel '%i': %s" % (fname, lineNr, l)
+
+	f = tempfile.NamedTemporaryFile(bufsize=0)
+	sys.stderr.write("# Building temponary graph file\n")
+	print >> f, "Graph WirelessLeidenNetwork {"
+	print >> f ,"""
+graph [ fontsize = 36,
+        overlap = scalexy,
+        splines = true,
+      ]
+"""
+	for addr,leden in poel.iteritems():
+		leden = sorted(set(leden))
+		for index,lid in enumerate(leden[:-1]):
+			for buur in leden[index + 1:]:
+				print >> f,'  %s -- %s [label="%s"]' % (lid, buur, getrange.showaddr(addr))
+	print >> f, "}"
+	sys.stderr.write("# Plotting temponary graph file using graphviz\n")
+	retval = subprocess.call(["neato","-Tpng",f.name, "-o", OUTFILE])
+	if retval != 0:
+		sys.stderr.write("# FAILED [%i]\n" % retval)
+		subprocess.call(["cat",f.name])
+		exit(1)
+	sys.stderr.write("# COMPLETED find your output in %s\n" % OUTFILE)
+    
+
+if __name__ == "__main__":
+	make_graph()
+
