chiark / gitweb /
make-secnet-sites: set_property: Break out kw
[secnet.git] / make-secnet-sites
index 2fd182e29dcb3119cc625aba873a4bf071f0d60b..551149c32818a169bef8b14898cd18509b7eb3ba 100755 (executable)
@@ -182,6 +182,13 @@ class Tainted:
                                             % (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
@@ -205,6 +212,11 @@ class Tainted:
                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
@@ -558,10 +570,11 @@ 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]
+       kw=keywords[prop.raw_mark_ok()]
        if prop.raw() in obj.properties:
-               obj.properties[prop.raw_mark_ok()].add(obj,w)
+               obj.properties[prop.raw()].add(obj,w)
        else:
-               obj.properties[prop.raw()]=keywords[prop.raw_mark_ok()][0](w)
+               obj.properties[prop.raw()]=kw[0](w)
 
 
 def pline(il,allow_include=False):