import yaml;

@app.route("/firewalld/<role>")
@login_required
def firewalld(role):
    env = "prod"
    fname = "/srv/salt/" + env + "/pillars/roles/firewalld/" + role + ".sls"
    if (os.path.exists(fname)):
        firewalld = import_yaml(fname)
        print(firewalld)
    else:
        firewalld = "{'firewalld':{}}"
    return render_template('firewalld_edit.html', firewalld=firewalld,role=role, is_mnt=is_role_maintainer(role))

@app.route("/firewalld_save/<role>",methods=['POST'])
@login_required
def firewalld_save(role):
    if is_role_maintainer(role):
        env = "prod"
        data=request.get_json()
        print(data)
        y = yaml.safe_dump(data,default_flow_style=False, indent=2)
        # fix weird quirk - when not using default_flow_style, "-" lines aren't indented properly
        y = y.replace("-","  -")
        print(y)
        fname = "/srv/salt/" + env + "/pillars/roles/firewalld/" + role + ".sls"
        f = open(fname,"w")
        f.write(y)
    return redirect("/firewalld/" + role,302)

#remove everything prior to the last "/" and then everything after the first "." in the name to ensure name isn't malicious
def cleanse_name(name):
    name = re.sub('^.*/','',name)#remove everything up to and including final /
    name = re.sub('^\.*','',name)#remove any .s at start of name that remain
    print(name)
    name = re.sub('\.*$','',name)#remove everything after and including first .
    print(name)
    return name

def import_yaml(fname):
    y = {}
    if os.path.exists(fname):
        f = open(fname,"r")
        lines = f.read()
        f.close()
        y = yaml.load(lines)
    return y