import sys
import os
import getopt
+import re
# The ipaddr library is installed as part of secnet
sys.path.append("/usr/local/share/secnet")
sys.path.append("/usr/share/secnet")
import ipaddr
-VERSION="0.1.16"
+VERSION="0.1.18"
# Classes describing possible datatypes in the configuration file
def __str__(self):
return '<%s>'%(self.addr)
+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]
+
class num:
"A decimal number"
def __init__(self,w):
'networks':(networks,"Claimed networks"),
'pubkey':(rsakey,"RSA public site key"),
'peer':(single_ipaddr,"Tunnel peer IP address"),
- 'address':(address,"External contact address and port")
+ 'address':(address,"External contact address and port"),
+ 'mobile':(boolean,"Site is mobile"),
}
def sp(name,value):
'setup-retries':sp,
'wait-time':sp,
'renegotiate-time':sp,
- 'restrict-nets':(lambda name,value:"# restrict-nets %s\n"%value)
+ 'restrict-nets':(lambda name,value:"# restrict-nets %s\n"%value),
}
class level:
'address':sp,
'networks':None,
'peer':None,
- 'pubkey':(lambda n,v:"key %s;\n"%v)
+ 'pubkey':(lambda n,v:"key %s;\n"%v),
+ 'mobile':sp,
})
require_properties={
'dh':"Diffie-Hellman group",
'networks':"Networks claimed by the site",
'hash':"hash function",
'peer':"Gateway address of the site",
- 'pubkey':"RSA public key of the site"
+ 'pubkey':"RSA public key of the site",
}
def __init__(self,w):
level.__init__(self,w)
complain("unknown keyword '%s'"%(keyword))
+def pfilepath(pathname):
+ f=open(pathname)
+ pfile(pathname,f.readlines())
+ f.close()
+
def pfile(name,lines):
"Process a file"
global file,line
if not ok:
print "caller not in group %s"%group
sys.exit(1)
- f=open(header)
- headerinput=f.readlines()
- f.close()
- pfile(header,headerinput)
+ pfilepath(header)
userinput=sys.stdin.readlines()
pfile("user input",userinput)
else:
if len(sys.argv)>3:
print "Too many arguments"
sys.exit(1)
- f=open(sys.argv[1])
- pfile(sys.argv[1],f.readlines())
- f.close()
+ pfilepath(sys.argv[1])
of=sys.stdout
if len(sys.argv)>2:
of=open(sys.argv[2],'w')