X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=secnet.git;a=blobdiff_plain;f=make-secnet-sites;h=9e0072075a8c69ae3a7cbb865d0d46188b25c7e2;hp=4c6f0f4f41914bd5aed5a70a1e685f373c3eb114;hb=4a9b680b609b28274a8ae704819f3b59b4e3b4d7;hpb=040040f336aa9d52c4288e5d2edd08a216dd8a24 diff --git a/make-secnet-sites b/make-secnet-sites index 4c6f0f4..9e00720 100755 --- a/make-secnet-sites +++ b/make-secnet-sites @@ -267,12 +267,12 @@ class sitelevel(level): 'networks':None, 'peer':None, 'pubkey':(lambda n,v:"key %s;\n"%v), + 'address':None, 'mobile':sp, }) require_properties={ 'dh':"Diffie-Hellman group", 'contact':"Site admin contact address", - 'address':"Site external access address", 'networks':"Networks claimed by the site", 'hash':"hash function", 'peer':"Gateway address of the site", @@ -320,6 +320,7 @@ def moan(msg): root=level(['root','root']) # All vpns are children of this node obstack=[root] allow_defs=0 # Level above which new definitions are permitted +prefix='' def set_property(obj,w): "Set a property on a configuration node" @@ -329,7 +330,7 @@ def set_property(obj,w): else: obj.properties[w[0]]=keywords[w[0]][0](w) -def pline(i): +def pline(i,allow_include=False): "Process a configuration file line" global allow_defs, obstack, root w=string.split(i) @@ -340,6 +341,16 @@ def pline(i): allow_defs=sitelevel.depth obstack=[root] return + if keyword=='include': + if not allow_include: + complain("include not permitted here") + return + if len(w) != 2: + complain("include requires one argument") + return + newfile=os.path.join(os.path.dirname(file),w[1]) + pfilepath(newfile,allow_include=allow_include) + return if levels.has_key(keyword): # We may go up any number of levels, but only down by one newdepth=levels[keyword].depth @@ -365,6 +376,8 @@ def pline(i): if nl.depth3: print "Too many arguments" sys.exit(1) - f=open(sys.argv[1]) - pfile(sys.argv[1],f.readlines()) - f.close() + pfilepath(sys.argv[1],allow_include=True) of=sys.stdout if len(sys.argv)>2: of=open(sys.argv[2],'w')