chiark
/
gitweb
/
~ianmdlvl
/
secnet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make-secnet-sites: set_property: Break out propname
[secnet.git]
/
make-secnet-sites
diff --git
a/make-secnet-sites
b/make-secnet-sites
index ac3efe64d63b27b35c7a6ec55b1550c1854c4680..3d7d75597ec475ade7493bc61030381a4d837973 100755
(executable)
--- a/
make-secnet-sites
+++ b/
make-secnet-sites
@@
-149,8
+149,8
@@
class Tainted:
bad_name=re.compile(r'^[^a-zA-Z]|[^-_0-9a-zA-Z]')
# secnet accepts _ at start of names, but we reserve that
bad_name_counter=0
bad_name=re.compile(r'^[^a-zA-Z]|[^-_0-9a-zA-Z]')
# secnet accepts _ at start of names, but we reserve that
bad_name_counter=0
- def name(self):
- ok=self._re_ok(Tainted.bad_name,
'name'
)
+ def name(self
,what='name'
):
+ ok=self._re_ok(Tainted.bad_name,
what
)
return self._rtn(ok,
'_line%d_%s' % (self._line, id(self)))
return self._rtn(ok,
'_line%d_%s' % (self._line, id(self)))
@@
-182,6
+182,13
@@
class Tainted:
% (minn,maxx))
return self._rtnval(ok,v,minn)
% (minn,maxx))
return self._rtnval(ok,v,minn)
+ def hexid(self,byteslen,what):
+ ok=self._re_ok(Tainted.bad_hex,what,byteslen*2)
+ if ok:
+ if len(self._s) < byteslen*2:
+ ok=self._bad(what,'too short')
+ return self._rtn(ok,ifbad='00'*byteslen)
+
bad_host=re.compile(r'[^-\][_.:0-9a-zA-Z]')
# We permit _ so we can refer to special non-host domains
# which have A and AAAA RRs. This is a crude check and we may
bad_host=re.compile(r'[^-\][_.:0-9a-zA-Z]')
# We permit _ so we can refer to special non-host domains
# which have A and AAAA RRs. This is a crude check and we may
@@
-205,12
+212,18
@@
class Tainted:
ok=self._re_ok(Tainted.bad_groupname,'group name',64)
return self._rtn(ok)
ok=self._re_ok(Tainted.bad_groupname,'group name',64)
return self._rtn(ok)
+ bad_base91=re.compile(r'[^!-~]|[\'\"\\]')
+ def base91(self,what='base91'):
+ ok=self._re_ok(Tainted.bad_base91,what,4096)
+ return self._rtn(ok)
+
def parse_args():
global service
global inputfile
global header
global groupfiledir
global sitesfile
def parse_args():
global service
global inputfile
global header
global groupfiledir
global sitesfile
+ global outputfile
global group
global user
global of
global group
global user
global of
@@
-258,8
+271,6
@@
def parse_args():
print("Too many arguments")
sys.exit(1)
(inputfile, outputfile) = (av.arg + [None]*2)[0:2]
print("Too many arguments")
sys.exit(1)
(inputfile, outputfile) = (av.arg + [None]*2)[0:2]
- if outputfile is None: of=sys.stdout
- else: of=open(outputfile,'w')
parse_args()
parse_args()
@@
-543,6
+554,7
@@
def moan(msg):
"Complain about something in general"
global complaints
print(msg);
"Complain about something in general"
global complaints
print(msg);
+ if complaints is None: sys.exit(1)
complaints=complaints+1
class UntaintedRoot():
complaints=complaints+1
class UntaintedRoot():
@@
-558,10
+570,12
@@
allow_defs=0 # Level above which new definitions are permitted
def set_property(obj,w):
"Set a property on a configuration node"
prop=w[0]
def set_property(obj,w):
"Set a property on a configuration node"
prop=w[0]
- if prop.raw() in obj.properties:
- obj.properties[prop.raw_mark_ok()].add(obj,w)
+ propname=prop.raw_mark_ok()
+ kw=keywords[propname]
+ if propname in obj.properties:
+ obj.properties[propname].add(obj,w)
else:
else:
- obj.properties[prop
.raw()]=keywords[prop.raw_mark_ok()]
[0](w)
+ obj.properties[prop
name]=kw
[0](w)
def pline(il,allow_include=False):
def pline(il,allow_include=False):
@@
-775,4
+789,11
@@
if service:
f.close()
os.rename(sitesfile+"-tmp",sitesfile)
else:
f.close()
os.rename(sitesfile+"-tmp",sitesfile)
else:
+ if outputfile is None:
+ of=sys.stdout
+ else:
+ tmp_outputfile=outputfile+'~tmp~'
+ of=open(tmp_outputfile,'w')
outputsites(of)
outputsites(of)
+ if outputfile is not None:
+ os.rename(tmp_outputfile,outputfile)