X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=secnet.git;a=blobdiff_plain;f=make-secnet-sites;h=966bb77528e409cd3991e2c5bd5306d4c1c264d1;hp=9e0072075a8c69ae3a7cbb865d0d46188b25c7e2;hb=fcad4b0b370b9fc232db98895fbfe22177436433;hpb=4a9b680b609b28274a8ae704819f3b59b4e3b4d7 diff --git a/make-secnet-sites b/make-secnet-sites index 9e00720..966bb77 100755 --- a/make-secnet-sites +++ b/make-secnet-sites @@ -267,7 +267,7 @@ class sitelevel(level): 'networks':None, 'peer':None, 'pubkey':(lambda n,v:"key %s;\n"%v), - 'address':None, + 'address':(lambda n,v:"address %s;\n"%v), 'mobile':sp, }) require_properties={ @@ -333,24 +333,23 @@ def set_property(obj,w): def pline(i,allow_include=False): "Process a configuration file line" global allow_defs, obstack, root - w=string.split(i) - if len(w)==0: return + w=string.split(i.rstrip('\n')) + if len(w)==0: return [i] keyword=w[0] current=obstack[len(obstack)-1] if keyword=='end-definitions': allow_defs=sitelevel.depth obstack=[root] - return + return [i] if keyword=='include': if not allow_include: complain("include not permitted here") - return + return [] if len(w) != 2: complain("include requires one argument") - return + return [] newfile=os.path.join(os.path.dirname(file),w[1]) - pfilepath(newfile,allow_include=allow_include) - return + return pfilepath(newfile,allow_include=allow_include) if levels.has_key(keyword): # We may go up any number of levels, but only down by one newdepth=levels[keyword].depth @@ -381,34 +380,34 @@ def pline(i,allow_include=False): current.children[w[1]]=nl current=nl obstack.append(current) - return + return [i] if current.allow_properties.has_key(keyword): set_property(current,w) - return + return [i] else: complain("Property %s not allowed at %s level"% (keyword,current.type)) - return + return [] complain("unknown keyword '%s'"%(keyword)) def pfilepath(pathname,allow_include=False): f=open(pathname) - lines=f.readlines() - pfile(pathname,lines,allow_include=allow_include) + outlines=pfile(pathname,f.readlines(),allow_include=allow_include) f.close() - return lines + return outlines def pfile(name,lines,allow_include=False): "Process a file" global file,line file=name line=0 + outlines=[] for i in lines: line=line+1 if (i[0]=='#'): continue - if (i[len(i)-1]=='\n'): i=i[:len(i)-1] # strip trailing LF - pline(i,allow_include=allow_include) + outlines += pline(i,allow_include=allow_include) + return outlines def outputsites(w): "Output include file for secnet configuration" @@ -481,7 +480,7 @@ else: if len(sys.argv)>3: print "Too many arguments" sys.exit(1) - pfilepath(sys.argv[1],allow_include=True) + pfilepath(sys.argv[1]) of=sys.stdout if len(sys.argv)>2: of=open(sys.argv[2],'w')