-sys.path.append("/usr/local/share/secnet")
-sys.path.append("/usr/share/secnet")
+sys.path.insert(0,"/usr/local/share/secnet")
+sys.path.insert(0,"/usr/share/secnet")
+class boolean:
+ "A boolean"
+ def __init__(self,w):
+ if re.match('[TtYy1]',w[1]):
+ self.b=True
+ elif re.match('[FfNn0]',w[1]):
+ self.b=False
+ else:
+ complain("invalid boolean value");
+ def __str__(self):
+ return ['False','True'][self.b]
+
'pubkey':(rsakey,"RSA public site key"),
'peer':(single_ipaddr,"Tunnel peer IP address"),
'address':(address,"External contact address and port"),
'pubkey':(rsakey,"RSA public site key"),
'peer':(single_ipaddr,"Tunnel peer IP address"),
'address':(address,"External contact address and port"),
})
require_properties={
'dh':"Diffie-Hellman group",
'contact':"Site admin contact address",
})
require_properties={
'dh':"Diffie-Hellman group",
'contact':"Site admin contact address",
'networks':"Networks claimed by the site",
'hash':"hash function",
'peer':"Gateway address of the site",
'networks':"Networks claimed by the site",
'hash':"hash function",
'peer':"Gateway address of the site",
root=level(['root','root']) # All vpns are children of this node
obstack=[root]
allow_defs=0 # Level above which new definitions are permitted
root=level(['root','root']) # All vpns are children of this node
obstack=[root]
allow_defs=0 # Level above which new definitions are permitted
"Process a configuration file line"
global allow_defs, obstack, root
"Process a configuration file line"
global allow_defs, obstack, root
keyword=w[0]
current=obstack[len(obstack)-1]
if keyword=='end-definitions':
allow_defs=sitelevel.depth
obstack=[root]
keyword=w[0]
current=obstack[len(obstack)-1]
if keyword=='end-definitions':
allow_defs=sitelevel.depth
obstack=[root]
+ return [i]
+ 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])
+ 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
if levels.has_key(keyword):
# We may go up any number of levels, but only down by one
newdepth=levels[keyword].depth
+def pfilepath(pathname,allow_include=False):
+ f=open(pathname)
+ outlines=pfile(pathname,f.readlines(),allow_include=allow_include)
+ f.close()
+ return outlines
+
+def pfile(name,lines,allow_include=False):
- w.write("all-sites %s;\n"%string.join(map(lambda x:"vpn/%s/all-sites"%
- x,root.children.keys()),","))
+ w.write(prefix+"all-sites %s;\n"%string.join(
+ map(lambda x:"%svpn/%s/all-sites"%(prefix,x),
+ root.children.keys()),","))
userinput=sys.stdin.readlines()
pfile("user input",userinput)
else:
userinput=sys.stdin.readlines()
pfile("user input",userinput)
else: