salt/states/roles/maintain/saltpad/modules/firewalld.py
2017-08-07 13:25:01 -05:00

48 lines
1.6 KiB
Python
Executable file

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