Show config and compare page improved
pull/42/head
Aidaho12 2018-08-14 11:59:21 +06:00
parent fc2b657c2e
commit af62ff0fc2
7 changed files with 161 additions and 130 deletions

View File

@ -231,53 +231,6 @@ def get_config(serv, cfg, **kwargs):
ssh += str(e)
return ssh
def show_config(cfg):
print('<div style="margin-left: 16%" class="configShow">')
try:
conf = open(cfg, "r")
except IOError:
print('<div class="alert alert-danger">Can\'t read import config file</div>')
i = 0
for line in conf:
i = i + 1
if not line.find("global"):
print('<span class="param">' + line + '</span><div>')
continue
if not line.find("defaults"):
print('</div><span class="param">' + line + '</span><div>')
continue
if not line.find("listen"):
print('</div><span class="param">' + line + '</span><div>')
continue
if not line.find("frontend"):
print('</div><span class="param">' + line + '</span><div>')
continue
if not line.find("backend"):
print('</div><span class="param">' + line + '</span><div>')
continue
if not line.find("cache"):
print('</div><span class="param">' + line + '</span><div>')
continue
if "acl" in line or "option" in line or "server" in line:
if "timeout" not in line and "default-server" not in line and "#use_backend" not in line:
print('<span class="paramInSec"><span class="numRow">')
print(i)
print('</span>' + line + '</span><br />')
continue
if "#" in line:
print('<span class="comment"><span class="numRow">')
print(i)
print(line + '</span></span><br />')
continue
if line.__len__() < 1:
print('</div>')
if line.__len__() > 1:
print('<span class="configLine"><span class="numRow">')
print(i)
print('</span>' + line + '</span><br />')
print('</div></div>')
conf.close
def diff_config(oldcfg, cfg):
import subprocess
log_path = get_config_var('main', 'log_path')
@ -317,7 +270,7 @@ def install_haproxy(serv, **kwargs):
" STATS_USER="+stats_user+" STATS_PASS="+stats_password ]
upload(serv, tmp_config_path, script)
ssh_command(serv, commands)
ssh_command(serv, commands, print_out="1")
if kwargs.get('syn_flood') == "1":
syn_flood_protect(serv)
@ -339,7 +292,7 @@ def syn_flood_protect(serv, **kwargs):
commands = [ "chmod +x "+tmp_config_path+script, tmp_config_path+script+ " "+enable ]
upload(serv, tmp_config_path, script)
ssh_command(serv, commands)
ssh_command(serv, commands, print_out="1")
os.system("rm -f %s" % script)
@ -428,37 +381,6 @@ def check_haproxy_config(serv):
else:
return False
ssh.close()
def compare(stdout):
i = 0
minus = 0
plus = 0
total_change = 0
print('</center><div class="out">')
print('<div class="diff">')
for line in stdout:
i = i + 1
if i is 1:
print('<div class="diffHead">' + line + '<br />')
elif i is 2:
print(line + '</div>')
elif line.find("-") == 0 and i is not 1:
print('<div class="lineDiffMinus">' + line + '</div>')
minus = minus + 1
elif line.find("+") == 0 and i is not 2:
print('<div class="lineDiffPlus">' + line + '</div>')
plus = plus + 1
elif line.find("@") == 0:
print('<div class="lineDog">' + line + '</div>')
else:
print('<div class="lineDiff">' + line + '</div>')
total_change = minus + plus
print('<div class="diffHead">Total change: %s, additions: %s & deletions: %s </div>' % (total_change, minus, plus))
print('</div></div>')
def show_log(stdout):
i = 0
@ -501,6 +423,8 @@ def ssh_command(serv, commands, **kwargs):
show_log(stdout)
elif kwargs.get("server_status") == "1":
server_status(stdout)
elif kwargs.get('print_out'):
print(stdout.read().decode(encoding='UTF-8'))
else:
return stdout.read().decode(encoding='UTF-8')

View File

@ -261,10 +261,35 @@ if form.getvalue('servaction') is not None:
funct.logging(serv, action)
if act == "showCompareConfigs":
ovw.show_compare_configs(serv)
import glob
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/ajax'))
template = env.get_template('/show_compare_configs.html')
left = form.getvalue('left')
right = form.getvalue('right')
output_from_parsed_template = template.render(serv = serv,
right = right,
left = left,
return_files = funct.get_files())
print(output_from_parsed_template)
if serv is not None and form.getvalue('right') is not None:
ovw.comapre_show()
import subprocess
from jinja2 import Environment, FileSystemLoader
left = form.getvalue('left')
right = form.getvalue('right')
hap_configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
cmd='diff -ub %s%s %s%s' % (hap_configs_dir, left, hap_configs_dir, right)
env = Environment(loader=FileSystemLoader('templates/ajax'),extensions=['jinja2.ext.loopcontrols'])
template = env.get_template('compare.html')
output, stderr = funct.subprocess_execute(cmd)
template = template.render(stdout=output)
print(template)
print(stderr)
if serv is not None and act == "configShow":
hap_configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
@ -275,27 +300,24 @@ if serv is not None and act == "configShow":
else:
cfg = hap_configs_dir + form.getvalue('configver')
print("<center><h3>Config from %s</h3>" % serv)
print('<p class="accordion-expand-holder">'
'<a class="accordion-expand-all ui-button ui-widget ui-corner-all" href="#">Expand all</a>'
'<a class="ui-button ui-widget ui-corner-all" title="Edit this run config" target="_blank" href="config.py?serv='+serv+'&open=open">Edit</a>'
'</p>')
print('</center>')
funct.show_config(cfg)
try:
conf = open(cfg, "r")
except IOError:
print('<div class="alert alert-danger">Can\'t read import config file</div>')
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/ajax'),extensions=['jinja2.ext.loopcontrols'])
template = env.get_template('config_show.html')
template = template.render(conf=conf,
view=form.getvalue('view'),
serv=serv,
configver=form.getvalue('configver'))
print(template)
if form.getvalue('configver') is None:
os.system("/bin/rm -f " + cfg)
else:
print('<br><center>')
print('<form action="configver.py#conf" method="get">')
print('<input type="hidden" value="%s" name="serv">' % serv)
print('<input type="hidden" value="%s" name="configver">' % form.getvalue('configver'))
print('<input type="hidden" value="1" name="config">')
if form.getvalue('view') is None:
print("<button type='submit' value='save' name='save' class='btn btn-default'>Just save</button>")
print("<button type='submit' value='' name='' class='btn btn-default'>Upload and restart</button>")
print('</form></center>')
if form.getvalue('master'):
master = form.getvalue('master')

View File

@ -163,31 +163,4 @@ def get_map(serv):
output, stderr = funct.subprocess_execute(cmd)
print(stderr)
print('<img src="/map%s.png" alt="map">' % date)
def show_compare_configs(serv):
import glob
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/ajax'))
template = env.get_template('/show_compare_configs.html')
left = form.getvalue('left')
right = form.getvalue('right')
output_from_parsed_template = template.render(serv = serv,
right = right,
left = left,
return_files = funct.get_files())
print(output_from_parsed_template)
def comapre_show():
import subprocess
left = form.getvalue('left')
right = form.getvalue('right')
hap_configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
cmd='diff -ub %s%s %s%s' % (hap_configs_dir, left, hap_configs_dir, right)
output, stderr = funct.subprocess_execute(cmd)
funct.compare(output)
print(stderr)
print('<img src="/map%s.png" alt="map">' % date)

View File

@ -1,17 +1,21 @@
#!/bin/bash
if [[ $1 == "enable" ]]; then
sudo bash -c cat <<EOF >> /etc/sysctl.conf
if grep -q "net.ipv4.tcp_syncookie = 1" /etc/sysctl.conf; then
echo "SYN flood protectd allready enabled"
else
sudo bash -c cat <<EOF >> /etc/sysctl.conf
# Protection SYN flood
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_max_syn_backlog = 1024
EOF
sudo sysctl -w net.ipv4.tcp_syncookies=1
sudo sysctl -w net.ipv4.conf.all.rp_filter=1
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=1024
sudo sysctl -w net.ipv4.tcp_synack_retries=3
fi
fi
if [[ $1 == "disable" ]]; then

View File

@ -0,0 +1,31 @@
</center>
<div class="out">
<div class="diff">
{% set plus = 0 %}
{% set minus = 0 %}
{% set total_change = 0 %}
{% for line in stdout %}
{% if loop.index0 == 0 %}
<div class="diffHead">{{ line }}<br />
{% elif loop.index0 == 1 %}
{{ line }}</div>
{% elif line.startswith('-') and loop.index0 > 1 %}
<div class="lineDiffMinus">{{ line }}</div>
{% set minus = minus + 1 %}
{% elif line.startswith('+') and loop.index0 > 2 %}
<div class="lineDiffPlus">{{ line }}</div>
{% set plus = plus + 1 %}
{% elif line.startswith('@') %}
<div class="lineDog">{{ line }}</div>
{% else %}
<div class="lineDiff">{{ line }}</div>
{% endif %}
{% set total_change = minus + plus %}
{% if loop.last %}
<div class="diffHead">Total change: {{ total_change }}, additions: {{ plus }} & deletions: {{ minus }} </div>
{% endif %}
{% endfor %}
</div>
</div>

View File

@ -0,0 +1,77 @@
<center>
<h3>Config from {{serv}}</h3>
<p class="accordion-expand-holder">
<a class="accordion-expand-all ui-button ui-widget ui-corner-all" href="#">Expand all</a>
{% if not view %}
<a class="ui-button ui-widget ui-corner-all" title="Edit this run config" target="_blank" href="config.py?serv={{serv}}&open=open">Edit</a>
{% endif %}
</p>
</center>
<div style="margin-left: 16%" class="configShow">
{% set i = 0 -%}
{% for line in conf %}
{% set i = i + loop.index0 %}
{% if line.startswith('global') %}
<span class="param"> {{ line }} </span><div>
{% continue %}
{% endif %}
{% if line.startswith('defaults') %}
<span class="param"> {{ line }} </span><div>
{% continue %}
{% endif %}
{% if line.startswith('listen') %}
<span class="param"> {{ line }} </span><div>
{% continue %}
{% endif %}
{% if line.startswith('frontend') %}
<span class="param"> {{ line }} </span><div>
{% continue %}
{% endif %}
{% if line.startswith('backend') %}
<span class="param"> {{ line }} </span><div>
{% continue %}
{% endif %}
{% if line.startswith('cache') %}
<span class="param"> {{ line }} </span><div>
{% continue %}
{% endif %}
{% if "acl" in line or "option" in line or "server" in line %}
{% if "timeout" not in line and "default-server" not in line and "#use_backend" not in line and "#" not in line%}
<span class="paramInSec">
<span class="numRow">
{{ i }}
</span>
{{ line }}
</span><br />
{% continue %}
{% endif %}
{% endif %}
{% if line|length == 1 %}
</div>
{% endif %}
{% if line|length > 1 %}
<span class="configLine">
<span class="numRow">{{ i }}</span>
{{ line }}
</span><br />
{% endif %}
{% endfor %}
</div>
</div>
</div>
{% if configver %}
<br>
<center>
<form action="configver.py#conf" method="get">
<input type="hidden" value="{{serv}}" name="serv">
<input type="hidden" value="{{configver}}" name="configver">
<input type="hidden" value="1" name="config">
{% if not view %}
<button type='submit' value='save' name='save' class='btn btn-default'>Just save</button>
<button type='submit' value='' name='' class='btn btn-default'>Upload and restart</button>
{% endif %}
</form>
</center>
{% endif %}

View File

@ -40,7 +40,7 @@ echo ""
echo "################################"
if hash apt-get 2>/dev/null; then
apt-get install git net-tools lshw dos2unix apache2 gcc netcat python3-pip gcc-c++ -y
apt-get install git net-tools lshw dos2unix apache2 gcc netcat python3-pip g++ -y
HTTPD_CONFIG="/etc/apache2/apache2.conf"
HAPROXY_WI_VHOST_CONF="/etc/apache2/sites-enabled/haproxy-wi.conf"
HTTPD_NAME="apache2"