X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=scripts%2Fjcopy.py;h=b48c5fd33373e482dd35fffb42b9d1d9d7798d51;hb=refs%2Fchanges%2F13%2F1913%2F2;hp=172cac303711ccd1377cc6a913599aeca575c2be;hpb=883b47164080b5d1e03a2c3b9ccde675957b3b00;p=yaml_builds.git diff --git a/scripts/jcopy.py b/scripts/jcopy.py index 172cac3..b48c5fd 100755 --- a/scripts/jcopy.py +++ b/scripts/jcopy.py @@ -25,6 +25,35 @@ import os.path import jinja2 import sys import yaml +import crypt +import netaddr +from base64 import b64encode + +def cidr_netmask(value): + if '/' in str(value): + v = netaddr.IPNetwork(value) + result = v.netmask + else: + result = "ERROR" + return result + +def cidr_subnet(value): + if '/' in str(value): + v = netaddr.IPNetwork(value) + result = v.network + else: + result = "ERROR" + return result + +def crypt_sha512(value): + if not '$6$' in str(value): + if sys.hexversion < 0x3000000: + result = crypt.crypt(value, "$6$"+b64encode(os.urandom(16))) + else: + result = crypt.crypt(value, crypt.mksalt(crypt.METHOD_SHA512)) + else: + result = value + return result def usage(msg=None): if not msg is None: @@ -52,10 +81,16 @@ with open(yaml_input) as f: siteyaml = yaml.safe_load(f) if os.path.isfile(j2in_name): - j2_env = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(j2in_name)), trim_blocks=True, lstrip_blocks=True, undefined=jinja2.make_logging_undefined()) + j2_env = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(j2in_name)), trim_blocks=True, lstrip_blocks=True, keep_trailing_newline=True, undefined=jinja2.make_logging_undefined()) + j2_env.filters['cidr_netmask'] = cidr_netmask + j2_env.filters['cidr_subnet'] = cidr_subnet + j2_env.filters['crypt_sha512'] = crypt_sha512 expand_template(j2_env.get_template(name=os.path.basename(j2in_name)),yaml_out,len(j2in_name)) else: - j2_env = jinja2.Environment(loader=jinja2.FileSystemLoader(j2in_name), trim_blocks=True, lstrip_blocks=True, undefined=jinja2.make_logging_undefined()) + j2_env = jinja2.Environment(loader=jinja2.FileSystemLoader(j2in_name), trim_blocks=True, lstrip_blocks=True, keep_trailing_newline=True, undefined=jinja2.make_logging_undefined()) + j2_env.filters['cidr_netmask'] = cidr_netmask + j2_env.filters['cidr_subnet'] = cidr_subnet + j2_env.filters['crypt_sha512'] = crypt_sha512 templates=j2_env.list_templates(extensions=('j2')) fill=len(max(templates,key=len))+len(j2in_name) for f in templates: @@ -66,4 +101,3 @@ sys.exit(0) # sudo apt-get install python-jinja2 python-yaml # sudo apt-get install python3-jinja2 python3-yaml -