48 lines
1.6 KiB
Python
Executable file
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
|
|
|