diff --git a/app/funct.py b/app/funct.py
index 7f1a58d0..703713b1 100644
--- a/app/funct.py
+++ b/app/funct.py
@@ -66,6 +66,7 @@ def get_user_group(**kwargs):
return user_group
+
def logging(serv, action, **kwargs):
import sql
import http.cookies
@@ -203,7 +204,7 @@ def page_for_admin(**kwargs):
def return_ssh_keys_path(serv, **kwargs):
import sql
- fullpath = get_config_var('main', 'fullpath')
+ full_path = get_config_var('main', 'fullpath')
ssh_enable = ''
ssh_user_name = ''
ssh_user_password = ''
@@ -213,13 +214,13 @@ def return_ssh_keys_path(serv, **kwargs):
ssh_enable = sshs[2]
ssh_user_name = sshs[3]
ssh_user_password = sshs[4]
- ssh_key_name = fullpath+'/keys/%s.pem' % sshs[1]
+ ssh_key_name = full_path+'/keys/%s.pem' % sshs[1]
else:
for sshs in sql.select_ssh(serv=serv):
ssh_enable = sshs[3]
ssh_user_name = sshs[4]
ssh_user_password = sshs[5]
- ssh_key_name = fullpath+'/keys/%s.pem' % sshs[2]
+ ssh_key_name = full_path+'/keys/%s.pem' % sshs[2]
return ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name
@@ -241,9 +242,9 @@ def ssh_connect(serv, **kwargs):
try:
if ssh_enable == 1:
k = paramiko.RSAKey.from_private_key_file(ssh_key_name)
- ssh.connect(hostname = serv, port = ssh_port, username = ssh_user_name, pkey = k, timeout=11)
+ ssh.connect(hostname=serv, port=ssh_port, username=ssh_user_name, pkey=k, timeout=11)
else:
- ssh.connect(hostname = serv, port = ssh_port, username = ssh_user_name, password = ssh_user_password, timeout=11)
+ ssh.connect(hostname=serv, port=ssh_port, username=ssh_user_name, password=ssh_user_password, timeout=11)
return ssh
except paramiko.AuthenticationException:
return 'error: Authentication failed, please verify your credentials'
@@ -303,7 +304,7 @@ def diff_config(oldcfg, cfg):
user_group = get_user_group()
diff = ""
date = get_data('date_in_log')
- cmd="/bin/diff -ub %s %s" % (oldcfg, cfg)
+ cmd = "/bin/diff -ub %s %s" % (oldcfg, cfg)
try:
user_uuid = cookie.get('uuid')
@@ -325,7 +326,6 @@ def diff_config(oldcfg, cfg):
def get_sections(config, **kwargs):
- record = False
return_config = list()
with open(config, 'r') as f:
for line in f:
@@ -389,9 +389,9 @@ def get_section_from_config(config, section):
return_config += line
if end_line == "":
- f = open (config,"r" )
- lineList = f.readlines()
- end_line = len(lineList)
+ f = open(config, "r")
+ line_list = f.readlines()
+ end_line = len(line_list)
return start_line, end_line, return_config
@@ -423,7 +423,6 @@ def rewrite_section(start_line, end_line, config, section):
def get_backends_from_config(serv, backends='', **kwargs):
configs_dir = get_config_var('configs', 'haproxy_save_configs_dir')
format = 'cfg'
- record = False
try:
cfg = configs_dir+get_files(dir=configs_dir, format=format)[0]
@@ -450,23 +449,23 @@ def get_backends_from_config(serv, backends='', **kwargs):
def get_all_stick_table():
import sql
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- cmd='echo "show table"|nc %s %s |awk \'{print $3}\' | tr -d \'\n\' | tr -d \'[:space:]\'' % (serv, haproxy_sock_port)
+ hap_sock_p = sql.get_setting('hap_sock_p')
+ cmd = 'echo "show table"|nc %s %s |awk \'{print $3}\' | tr -d \'\n\' | tr -d \'[:space:]\'' % (serv, hap_sock_p)
output, stderr = subprocess_execute(cmd)
return output[0]
def get_stick_table(table):
import sql
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- cmd='echo "show table %s"|nc %s %s |awk -F"#" \'{print $2}\' |head -1 | tr -d \'\n\'' % (table, serv, haproxy_sock_port)
+ hap_sock_p = sql.get_setting('hap_sock_p')
+ cmd = 'echo "show table %s"|nc %s %s |awk -F"#" \'{print $2}\' |head -1 | tr -d \'\n\'' % (table, serv, hap_sock_p)
output, stderr = subprocess_execute(cmd)
tables_head = []
for i in output[0].split(','):
i = i.split(':')[1]
tables_head.append(i)
- cmd='echo "show table %s"|nc %s %s |grep -v "#"' % (table, serv, haproxy_sock_port)
+ cmd = 'echo "show table %s"|nc %s %s |grep -v "#"' % (table, serv, hap_sock_p)
output, stderr = subprocess_execute(cmd)
return tables_head, output
@@ -475,7 +474,7 @@ def get_stick_table(table):
def install_haproxy(serv, **kwargs):
import sql
script = "install_haproxy.sh"
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ hap_sock_p = sql.get_setting('hap_sock_p')
stats_port = sql.get_setting('stats_port')
server_state_file = sql.get_setting('server_state_file')
stats_user = sql.get_setting('stats_user')
@@ -503,11 +502,11 @@ def install_haproxy(serv, **kwargs):
syn_flood_protect = '1' if kwargs.get('syn_flood') == "1" else ''
- commands = [ "chmod +x "+script +" && ./"+script +" PROXY=" + proxy_serv+
- " SOCK_PORT="+haproxy_sock_port+" STAT_PORT="+stats_port+" STAT_FILE="+server_state_file+
- " SSH_PORT="+ssh_port+
- " STATS_USER="+stats_user+" STATS_PASS="+stats_password+" HAPVER="+hapver +" SYN_FLOOD="+syn_flood_protect+" HOST="+serv+
- " USER="+ssh_user_name+" PASS="+ssh_user_password+" KEY="+ssh_key_name ]
+ commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
+ " SOCK_PORT=" + hap_sock_p + " STAT_PORT=" + stats_port + " STAT_FILE="+server_state_file +
+ " SSH_PORT=" + ssh_port + " STATS_USER=" + stats_user +
+ " STATS_PASS=" + stats_password + " HAPVER=" + hapver + " SYN_FLOOD=" + syn_flood_protect +
+ " HOST=" + serv + " USER=" + ssh_user_name + " PASS=" + ssh_user_password + " KEY=" + ssh_key_name]
output, error = subprocess_execute(commands[0])
@@ -547,8 +546,8 @@ def waf_install(serv, **kwargs):
else:
proxy_serv = ''
- commands = [ "sudo chmod +x "+tmp_config_path+script+" && " +tmp_config_path+script +" PROXY=" + proxy_serv+
- " HAPROXY_PATH="+haproxy_dir +" VERSION="+ver ]
+ commands = ["sudo chmod +x " + tmp_config_path+script + " && " + tmp_config_path+script + " PROXY=" + proxy_serv +
+ " HAPROXY_PATH=" + haproxy_dir + " VERSION=" + ver]
error = str(upload(serv, tmp_config_path, script))
if error:
@@ -589,10 +588,10 @@ def install_nginx(serv):
syn_flood_protect = '1' if form.getvalue('syn_flood') == "1" else ''
- commands = [ "chmod +x "+script +" && ./"+script +" PROXY=" + proxy_serv+" STATS_USER="+stats_user+" STATS_PASS="+stats_password+
- " SSH_PORT="+ssh_port+
- " CONFIG_PATH="+config_path+" STAT_PORT="+stats_port+" STAT_PAGE="+stats_page+" SYN_FLOOD="+syn_flood_protect+" HOST="+serv+
- " USER="+ssh_user_name+" PASS="+ssh_user_password+" KEY="+ssh_key_name ]
+ commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " STATS_USER=" + stats_user +
+ " STATS_PASS=" + stats_password + " SSH_PORT="+ ssh_port + " CONFIG_PATH=" + config_path +
+ " STAT_PORT=" + stats_port +" STAT_PAGE=" + stats_page+" SYN_FLOOD=" + syn_flood_protect +
+ " HOST="+ serv + " USER=" + ssh_user_name + " PASS=" + ssh_user_password + " KEY=" + ssh_key_name]
output, error = subprocess_execute(commands[0])
@@ -628,9 +627,9 @@ def update_haproxy_wi(service):
def check_haproxy_version(serv):
import sql
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ hap_sock_p = sql.get_setting('hap_sock_p')
ver = ""
- cmd="echo 'show info' |nc %s %s |grep Version |awk '{print $2}'" % (serv, haproxy_sock_port)
+ cmd = "echo 'show info' |nc %s %s |grep Version |awk '{print $2}'" % (serv, hap_sock_p)
output, stderr = subprocess_execute(cmd)
for line in output:
ver = line
@@ -697,16 +696,16 @@ def upload_and_restart(serv, cfg, **kwargs):
if kwargs.get("keepalived") == 1:
if kwargs.get("just_save") == "save":
- commands = [ "sudo mv -f " + tmp_file + " /etc/keepalived/keepalived.conf" ]
+ commands = ["sudo mv -f " + tmp_file + " /etc/keepalived/keepalived.conf"]
else:
- commands = [ "sudo mv -f " + tmp_file + " /etc/keepalived/keepalived.conf && sudo systemctl restart keepalived" ]
+ commands = ["sudo mv -f " + tmp_file + " /etc/keepalived/keepalived.conf && sudo systemctl restart keepalived"]
elif kwargs.get("nginx"):
if kwargs.get("just_save") == "save":
- commands = [ "sudo mv -f " + tmp_file + " " + config_path + " && sudo nginx -t -q"]
+ commands = ["sudo mv -f " + tmp_file + " " + config_path + " && sudo nginx -t -q"]
elif kwargs.get("just_save") == "reload":
- commands = [ "sudo mv -f " + tmp_file + " " + config_path + " && sudo nginx -t -q && sudo systemctl reload nginx" ]
+ commands = ["sudo mv -f " + tmp_file + " " + config_path + " && sudo nginx -t -q && sudo systemctl reload nginx"]
else:
- commands = [ "sudo mv -f " + tmp_file + " " + config_path + " && sudo nginx -t -q && sudo systemctl restart nginx" ]
+ commands = ["sudo mv -f " + tmp_file + " " + config_path + " && sudo nginx -t -q && sudo systemctl restart nginx"]
if sql.get_setting('firewall_enable') == "1":
commands[0] += open_port_firewalld(cfg, serv=serv, service='nginx')
else:
@@ -718,13 +717,13 @@ def upload_and_restart(serv, cfg, **kwargs):
haproxy_service_name = "haproxy"
if kwargs.get("just_save") == "test":
- commands = [ "sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo rm -f " + tmp_file ]
+ commands = ["sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo rm -f " + tmp_file]
elif kwargs.get("just_save") == "save":
- commands = [ "sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo mv -f " + tmp_file + " " + config_path ]
+ commands = ["sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo mv -f " + tmp_file + " " + config_path]
elif kwargs.get("just_save") == "reload":
- commands = [ "sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo mv -f " + tmp_file + " " + config_path + " && sudo systemctl reload "+haproxy_service_name+"" ]
+ commands = ["sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo mv -f " + tmp_file + " " + config_path + " && sudo systemctl reload "+haproxy_service_name+""]
else:
- commands = [ "sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo mv -f " + tmp_file + " " + config_path + " && sudo systemctl restart "+haproxy_service_name+"" ]
+ commands = ["sudo "+haproxy_service_name+" -q -c -f " + tmp_file + " && sudo mv -f " + tmp_file + " " + config_path + " && sudo systemctl restart "+haproxy_service_name+""]
if sql.get_setting('firewall_enable') == "1":
commands[0] += open_port_firewalld(cfg, serv=serv)
error += str(upload(serv, tmp_file, cfg, dir='fullpath'))
@@ -741,9 +740,9 @@ def upload_and_restart(serv, cfg, **kwargs):
def master_slave_upload_and_restart(serv, cfg, just_save, **kwargs):
import sql
- MASTERS = sql.is_master(serv)
+ masters = sql.is_master(serv)
error = ""
- for master in MASTERS:
+ for master in masters:
if master[0] != None:
error += upload_and_restart(master[0], cfg, just_save=just_save, nginx=kwargs.get('nginx'))
@@ -793,16 +792,16 @@ def open_port_firewalld(cfg, serv, **kwargs):
pass
firewalld_commands += 'sudo firewall-cmd --reload -q'
- logging(serv, ' Next ports have been opened: '+ports+ ' has opened ')
+ logging(serv, ' Next ports have been opened: ' + ports + ' has opened ')
return firewalld_commands
def check_haproxy_config(serv):
import sql
- commands = [ "haproxy -q -c -f %s" % sql.get_setting('haproxy_config_path') ]
+ commands = ["haproxy -q -c -f %s" % sql.get_setting('haproxy_config_path')]
ssh = ssh_connect(serv)
for command in commands:
- stdin , stdout, stderr = ssh.exec_command(command, get_pty=True)
+ stdin, stdout, stderr = ssh.exec_command(command, get_pty=True)
if not stderr.read():
return True
else:
@@ -822,7 +821,7 @@ def show_log(stdout, **kwargs):
if kwargs.get("html") != 0:
i = i + 1
if kwargs.get('grep'):
- line = line.replace(grep, ''+grep+'');
+ line = line.replace(grep, ''+grep+'')
line_class = "line3" if i % 2 == 0 else "line"
out += '
' + line + '
'
else:
@@ -838,12 +837,12 @@ def show_haproxy_log(serv, rows=10, waf='0', grep=None, hour='00', minut='00', h
date1 = hour1+':'+minut1
if grep is not None:
- grep_act = '|egrep "%s"' % grep
+ grep_act = '|egrep "%s"' % grep
else:
grep_act = ''
if exgrep is not None:
- exgrep_act = '|egrep -v "%s"' % exgrep
+ exgrep_act = '|egrep -v "%s"' % exgrep
else:
exgrep_act = ''
@@ -852,18 +851,18 @@ def show_haproxy_log(serv, rows=10, waf='0', grep=None, hour='00', minut='00', h
if syslog_server_enable is None or syslog_server_enable == "0":
if service == 'nginx':
local_path_logs = sql.get_setting('nginx_path_error_logs')
- commands = [ "sudo cat %s| awk '$2>\"%s:00\" && $2<\"%s:00\"' |tail -%s %s %s" % (local_path_logs, date, date1, rows, grep_act, exgrep_act) ]
+ commands = ["sudo cat %s| awk '$2>\"%s:00\" && $2<\"%s:00\"' |tail -%s %s %s" % (local_path_logs, date, date1, rows, grep_act, exgrep_act)]
else:
local_path_logs = sql.get_setting('local_path_logs')
- commands = [ "sudo cat %s| awk '$3>\"%s:00\" && $3<\"%s:00\"' |tail -%s %s %s" % (local_path_logs, date, date1, rows, grep_act, exgrep_act) ]
+ commands = ["sudo cat %s| awk '$3>\"%s:00\" && $3<\"%s:00\"' |tail -%s %s %s" % (local_path_logs, date, date1, rows, grep_act, exgrep_act)]
syslog_server = serv
else:
- commands = [ "sudo cat /var/log/%s/syslog.log | sed '/ %s:00/,/ %s:00/! d' |tail -%s %s %s %s" % (serv, date, date1, rows, grep_act, grep, exgrep_act) ]
+ commands = ["sudo cat /var/log/%s/syslog.log | sed '/ %s:00/,/ %s:00/! d' |tail -%s %s %s %s" % (serv, date, date1, rows, grep_act, grep, exgrep_act)]
syslog_server = sql.get_setting('syslog_server')
if waf == "1":
local_path_logs = '/var/log/modsec_audit.log'
- commands = [ "sudo cat %s |tail -%s %s %s" % (local_path_logs, rows, grep_act, exgrep_act) ]
+ commands = ["sudo cat %s |tail -%s %s %s" % (local_path_logs, rows, grep_act, exgrep_act)]
if kwargs.get('html') == 0:
a = ssh_command(syslog_server, commands)
@@ -874,11 +873,11 @@ def show_haproxy_log(serv, rows=10, waf='0', grep=None, hour='00', minut='00', h
apache_log_path = sql.get_setting('apache_log_path')
if serv == 'haproxy-wi.access.log':
- cmd="cat %s| awk -F\"/|:\" '$3>\"%s:00\" && $3<\"%s:00\"' |tail -%s %s %s" % (apache_log_path+"/"+serv, date, date1, rows, grep_act, exgrep_act)
+ cmd = "cat %s| awk -F\"/|:\" '$3>\"%s:00\" && $3<\"%s:00\"' |tail -%s %s %s" % (apache_log_path+"/"+serv, date, date1, rows, grep_act, exgrep_act)
elif serv == 'haproxy-wi.error.log':
- cmd="cat %s| awk '$4>\"%s:00\" && $4<\"%s:00\"' |tail -%s %s %s" % (apache_log_path+"/"+serv, date, date1, rows, grep_act, exgrep_act)
+ cmd = "cat %s| awk '$4>\"%s:00\" && $4<\"%s:00\"' |tail -%s %s %s" % (apache_log_path+"/"+serv, date, date1, rows, grep_act, exgrep_act)
elif serv == 'fail2ban.log':
- cmd="cat %s| awk -F\"/|:\" '$3>\"%s:00\" && $3<\"%s:00\"' |tail -%s %s %s" % ("/var/log/"+serv, date, date1, rows, grep_act, exgrep_act)
+ cmd = "cat %s| awk -F\"/|:\" '$3>\"%s:00\" && $3<\"%s:00\"' |tail -%s %s %s" % ("/var/log/"+serv, date, date1, rows, grep_act, exgrep_act)
output, stderr = subprocess_execute(cmd)
@@ -903,9 +902,9 @@ def show_haproxy_log(serv, rows=10, waf='0', grep=None, hour='00', minut='00', h
sys.exit()
if serv == 'backup.log':
- cmd="cat %s| awk '$2>\"%s:00\" && $2<\"%s:00\"' %s %s %s |tail -%s" % (log_path + serv, date, date1, user_grep, grep_act, exgrep_act, rows)
+ cmd = "cat %s| awk '$2>\"%s:00\" && $2<\"%s:00\"' %s %s %s |tail -%s" % (log_path + serv, date, date1, user_grep, grep_act, exgrep_act, rows)
else:
- cmd="cat %s| awk '$3>\"%s:00\" && $3<\"%s:00\"' %s %s %s |tail -%s" % (log_path + serv, date, date1, user_grep, grep_act, exgrep_act, rows)
+ cmd = "cat %s| awk '$3>\"%s:00\" && $3<\"%s:00\"' %s %s %s |tail -%s" % (log_path + serv, date, date1, user_grep, grep_act, exgrep_act, rows)
output, stderr = subprocess_execute(cmd)
@@ -958,7 +957,7 @@ def server_status(stdout):
def ssh_command(serv, commands, **kwargs):
ssh = ssh_connect(serv)
-
+
for command in commands:
try:
stdin, stdout, stderr = ssh.exec_command(command, get_pty=True)
@@ -1007,8 +1006,8 @@ def subprocess_execute(cmd):
def show_backends(serv, **kwargs):
import json
import sql
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- cmd='echo "show backend" |nc %s %s' % (serv, haproxy_sock_port)
+ hap_sock_p = sql.get_setting('hap_sock_p')
+ cmd = 'echo "show backend" |nc %s %s' % (serv, hap_sock_p)
output, stderr = subprocess_execute(cmd)
if stderr:
logging('localhost', ' '+stderr, haproxywi=1)
@@ -1017,7 +1016,7 @@ def show_backends(serv, **kwargs):
else:
ret = ""
for line in output:
- if "#" in line or "stats" in line or "MASTER" in line:
+ if "#" in line or "stats" in line or "MASTER" in line:
continue
if len(line) > 1:
back = json.dumps(line).split("\"")
@@ -1077,7 +1076,7 @@ def check_new_version(**kwargs):
try:
if proxy is not None and proxy != '' and proxy != 'None':
- proxyDict = { "https" : proxy, "http" : proxy }
+ proxyDict = {"https": proxy, "http": proxy}
response = requests.get('https://haproxy-wi.org/update.py?last_ver'+last_ver+'=1', timeout=1, proxies=proxyDict)
requests.get('https://haproxy-wi.org/update.py?ver_send='+current_ver, timeout=1, proxies=proxyDict)
else:
@@ -1148,7 +1147,7 @@ def get_users_params(**kwargs):
cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
user_id = cookie.get('uuid')
user = sql.get_user_name_by_uuid(user_id.value)
- role = sql.get_user_role_by_uuid(user_id.value)
+ role = sql.get_user_role_by_uuid(user_id.value)
token = sql.get_token(user_id.value)
if kwargs.get('virt'):
servers = sql.get_dick_permit(virt=1)
@@ -1176,7 +1175,6 @@ def check_user_group(**kwargs):
logging('localhost', ' has tried to actions in not his group ', haproxywi=1, login=1)
print('Atata!')
sys.exit()
- return False
def check_is_server_in_group(serv):
@@ -1190,10 +1188,9 @@ def check_is_server_in_group(serv):
logging('localhost', ' has tried to actions in not his group server ', haproxywi=1, login=1)
print('Atata!')
sys.exit()
- return False
def check_service(serv, service_name):
- commands = [ "systemctl status "+service_name+" |grep Active |awk '{print $1}'" ]
+ commands = ["systemctl status "+service_name+" |grep Active |awk '{print $1}'"]
return ssh_command(serv, commands)
diff --git a/app/hapservers.py b/app/hapservers.py
index 411e527e..4aa977ac 100644
--- a/app/hapservers.py
+++ b/app/hapservers.py
@@ -1,93 +1,111 @@
#!/usr/bin/env python3
-import funct, sql
+
+import funct
+import sql
from jinja2 import Environment, FileSystemLoader
+
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
template = env.get_template('hapservers.html')
-
+
print('Content-type: text/html\n')
funct.check_login()
try:
- user, user_id, role, token, servers = funct.get_users_params()
- users = sql.select_users()
- groups = sql.select_groups()
+ user, user_id, role, token, servers = funct.get_users_params()
+ users = sql.select_users()
+ groups = sql.select_groups()
+ services = []
except:
- pass
-
+ pass
+
form = funct.form
serv = form.getvalue('serv')
service = form.getvalue('service')
autorefresh = 0
if service == 'nginx':
- title = "Nginx servers overview"
- keep_alive = ''
- stderr = ''
- servers = sql.get_dick_permit(virt=1, nginx=1)
- service = 'nginx'
- if serv:
- if funct.check_is_server_in_group(serv):
- servers = sql.select_servers(server=serv)
- autorefresh = 1
+ title = "Nginx servers overview"
+ keep_alive = ''
+ stderr = ''
+ servers = sql.get_dick_permit(virt=1, nginx=1)
+ service = 'nginx'
+ if serv:
+ if funct.check_is_server_in_group(serv):
+ servers = sql.select_servers(server=serv)
+ autorefresh = 1
else:
- title = "HAProxy servers overview"
- cmd = "ps ax |grep -e 'keep_alive.py' |grep -v grep |wc -l"
- keep_alive, stderr = funct.subprocess_execute(cmd)
- service = 'haproxy'
- if serv:
- if funct.check_is_server_in_group(serv):
- servers = sql.select_servers(server=serv)
- autorefresh = 1
- else:
- servers = sql.get_dick_permit(virt=1, haproxy=1)
-
+ title = "HAProxy servers overview"
+ cmd = "ps ax |grep -e 'keep_alive.py' |grep -v grep |wc -l"
+ keep_alive, stderr = funct.subprocess_execute(cmd)
+ service = 'haproxy'
+ if serv:
+ if funct.check_is_server_in_group(serv):
+ servers = sql.select_servers(server=serv)
+ autorefresh = 1
+ else:
+ servers = sql.get_dick_permit(virt=1, haproxy=1)
+
+ services_name = {'checker_haproxy': 'Master backends checker service',
+ 'keep_alive': 'Auto start service',
+ 'metrics_haproxy': 'Master metrics service'}
+ for s, v in services_name.items():
+ if s != 'keep_alive':
+ service_name = s.split('_')[0]
+ else:
+ service_name = s
+ cmd = "rpm --query haproxy-wi-" + service_name + "-* |awk -F\"" + service_name +"\" '{print $2}' |awk -F\".noa\" '{print $1}' |sed 's/-//1' |sed 's/-/./'"
+ service_ver, stderr = funct.subprocess_execute(cmd)
+
+ services.append([s, service_ver[0]])
+
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
servers_with_status1 = []
out1 = ''
for s in servers:
- servers_with_status = list()
- servers_with_status.append(s[0])
- servers_with_status.append(s[1])
- servers_with_status.append(s[2])
- servers_with_status.append(s[11])
- if service == 'nginx':
- cmd = [ "/usr/sbin/nginx -v && systemctl status nginx |grep -e 'Active' |awk '{print $2, $9$10$11$12$13}' && ps ax |grep nginx:|grep -v grep |wc -l" ]
- out = funct.ssh_command(s[2], cmd)
- h = ()
- out1 = []
- for k in out.split():
- out1.append(k)
- h = (out1, )
- servers_with_status.append(h)
- servers_with_status.append(h)
- else:
- cmd = 'echo "show info" |nc %s %s -w 1 |grep -e "Ver\|Uptime:\|Process_num"' % (s[2], haproxy_sock_port)
- out = funct.subprocess_execute(cmd)
- for k in out:
- if "Ncat:" not in k:
- out1 = out
- else:
- out1 = False
- servers_with_status.append(out1)
+ servers_with_status = list()
+ servers_with_status.append(s[0])
+ servers_with_status.append(s[1])
+ servers_with_status.append(s[2])
+ servers_with_status.append(s[11])
+ if service == 'nginx':
+ cmd = [
+ "/usr/sbin/nginx -v && systemctl status nginx |grep -e 'Active' |awk '{print $2, $9$10$11$12$13}' && ps ax |grep nginx:|grep -v grep |wc -l"]
+ out = funct.ssh_command(s[2], cmd)
+ h = ()
+ out1 = []
+ for k in out.split():
+ out1.append(k)
+ h = (out1,)
+ servers_with_status.append(h)
+ servers_with_status.append(h)
+ else:
+ cmd = 'echo "show info" |nc %s %s -w 1 |grep -e "Ver\|Uptime:\|Process_num"' % (s[2], haproxy_sock_port)
+ out = funct.subprocess_execute(cmd)
+ for k in out:
+ if "Ncat:" not in k:
+ out1 = out
+ else:
+ out1 = False
+ servers_with_status.append(out1)
- servers_with_status.append(s[12])
- servers_with_status.append(sql.is_master(s[2]))
- servers_with_status.append(sql.select_servers(server=s[2]))
-
- servers_with_status1.append(servers_with_status)
-
+ servers_with_status.append(s[12])
+ servers_with_status.append(sql.is_master(s[2]))
+ servers_with_status.append(sql.select_servers(server=s[2]))
-template = template.render(h2 = 1,
- autorefresh = autorefresh,
- title = title,
- role = role,
- user = user,
- users = users,
- groups = groups,
- servers = servers_with_status1,
- versions = funct.versions(),
- keep_alive = ''.join(keep_alive),
- serv = serv,
- service = service,
- token = token)
-print(template)
+ servers_with_status1.append(servers_with_status)
+
+template = template.render(h2=1,
+ autorefresh=autorefresh,
+ title=title,
+ role=role,
+ user=user,
+ users=users,
+ groups=groups,
+ servers=servers_with_status1,
+ versions=funct.versions(),
+ keep_alive=''.join(keep_alive),
+ serv=serv,
+ service=service,
+ services=services,
+ token=token)
+print(template)
diff --git a/app/metrics.py b/app/metrics.py
index f2b9198b..81d74ecd 100644
--- a/app/metrics.py
+++ b/app/metrics.py
@@ -11,15 +11,23 @@ funct.check_login()
try:
user, user_id, role, token, servers = funct.get_users_params()
+ cmd = "rpm --query haproxy-wi-metrics-* |awk -F\"metrics_haproxy\" '{print $2}' |awk -F\".noa\" '{print $1}' |sed 's/-//1' |sed 's/-/./'"
+ service_ver, stderr = funct.subprocess_execute(cmd)
+
+ if service_ver[0] == '* is not installed':
+ servers = ''
+ else:
+ servers = sql.select_servers_metrics(user_id.value)
except:
pass
-template = template.render(h2 = 1, title = "Metrics",
- autorefresh = 1,
- role = role,
- user = user,
- servers = sql.select_servers_metrics(user_id.value),
- versions = funct.versions(),
- token = token)
-print(template)
\ No newline at end of file
+template = template.render(h2=1, title="Metrics",
+ autorefresh=1,
+ role=role,
+ user=user,
+ servers=servers,
+ versions=funct.versions(),
+ services=service_ver[0],
+ token=token)
+print(template)
diff --git a/app/options.py b/app/options.py
index 0b98b4da..ed37499b 100644
--- a/app/options.py
+++ b/app/options.py
@@ -1,5 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
+
import os
import sys
import funct
@@ -9,2176 +10,2143 @@ form = funct.form
serv = form.getvalue("serv")
act = form.getvalue("act")
-
-if form.getvalue('new_metrics') or form.getvalue('new_waf_metrics') or form.getvalue('metrics_hapwi_ram') or form.getvalue('metrics_hapwi_cpu'):
- print('Content-type: application/json\n')
+if (form.getvalue('new_metrics') or
+ form.getvalue('new_waf_metrics') or
+ form.getvalue('metrics_hapwi_ram') or
+ form.getvalue('metrics_hapwi_cpu')):
+ print('Content-type: application/json\n')
else:
- print('Content-type: text/html\n')
-
+ print('Content-type: text/html\n')
if act == "checkrestart":
- servers = sql.get_dick_permit(ip=serv)
- for server in servers:
- if server != "":
- print("ok")
- sys.exit()
- sys.exit()
-
+ servers = sql.get_dick_permit(ip=serv)
+ for server in servers:
+ if server != "":
+ print("ok")
+ sys.exit()
+ sys.exit()
if form.getvalue('alert_consumer') is None:
- if not sql.check_token_exists(form.getvalue("token")):
- print('error: Your token has been expired')
- sys.exit()
-
+ if not sql.check_token_exists(form.getvalue("token")):
+ print('error: Your token has been expired')
+ sys.exit()
if form.getvalue('getcerts') is not None and serv is not None:
- cert_path = sql.get_setting('cert_path')
- commands = ["ls -1t "+cert_path+" |grep -E 'pem|crt|key'"]
- try:
- funct.ssh_command(serv, commands, ip="1")
- except Exception as e:
- print('error: Cannot connect to the server: ' + str(e))
-
+ cert_path = sql.get_setting('cert_path')
+ commands = ["ls -1t " + cert_path + " |grep -E 'pem|crt|key'"]
+ try:
+ funct.ssh_command(serv, commands, ip="1")
+ except Exception as e:
+ print('error: Cannot connect to the server: ' + str(e))
if form.getvalue('checkSshConnect') is not None and serv is not None:
- print(funct.ssh_command(serv, ["ls -1t"]))
-
+ print(funct.ssh_command(serv, ["ls -1t"]))
if form.getvalue('getcert') is not None and serv is not None:
- id = form.getvalue('getcert')
- cert_path = sql.get_setting('cert_path')
- commands = ["cat "+cert_path+"/"+id]
- try:
- funct.ssh_command(serv, commands, ip="1")
- except:
- print('error: Can not connect to the server')
-
+ id = form.getvalue('getcert')
+ cert_path = sql.get_setting('cert_path')
+ commands = ["cat " + cert_path + "/" + id]
+ try:
+ funct.ssh_command(serv, commands, ip="1")
+ except:
+ print('error: Can not connect to the server')
if serv and form.getvalue('ssl_cert'):
- cert_local_dir = os.path.dirname(os.getcwd())+"/"+sql.get_setting('ssl_local_path')
- cert_path = sql.get_setting('cert_path')
+ cert_local_dir = os.path.dirname(os.getcwd()) + "/" + sql.get_setting('ssl_local_path')
+ cert_path = sql.get_setting('cert_path')
- if not os.path.exists(cert_local_dir):
- os.makedirs(cert_local_dir)
+ if not os.path.exists(cert_local_dir):
+ os.makedirs(cert_local_dir)
- if form.getvalue('ssl_name') is None:
- print('error: Please enter desired name')
- else:
- name = form.getvalue('ssl_name')
+ if form.getvalue('ssl_name') is None:
+ print('error: Please enter desired name')
+ else:
+ name = form.getvalue('ssl_name')
- try:
- with open(name, "w") as ssl_cert:
- ssl_cert.write(form.getvalue('ssl_cert'))
- except IOError as e :
- print('error: Can\'t save ssl keys file. Check ssh keys path in config '+e.args[0])
+ try:
+ with open(name, "w") as ssl_cert:
+ ssl_cert.write(form.getvalue('ssl_cert'))
+ except IOError as e:
+ print('error: Can\'t save ssl keys file. Check ssh keys path in config ' + e.args[0])
- MASTERS = sql.is_master(serv)
- for master in MASTERS:
- if master[0] != None:
- funct.upload(master[0], cert_path, name)
- try:
- error = funct.upload(serv, cert_path, name)
- if error == '':
- print('success: SSL file has been uploaded to %s into: %s%s' % (serv, cert_path, '/'+name))
- except Exception as e:
- funct.logging('localhost', e.args[0], haproxywi=1)
- try:
- os.system("mv %s %s" % (name, cert_local_dir))
- except OSError as e:
- funct.logging('localhost', e.args[0], haproxywi=1)
-
- funct.logging(serv, "add.py#ssl uploaded a new SSL cert %s" % name, haproxywi=1, login=1)
+ MASTERS = sql.is_master(serv)
+ for master in MASTERS:
+ if master[0] != None:
+ funct.upload(master[0], cert_path, name)
+ try:
+ error = funct.upload(serv, cert_path, name)
+ if error == '':
+ print('success: SSL file has been uploaded to %s into: %s%s' % (serv, cert_path, '/' + name))
+ except Exception as e:
+ funct.logging('localhost', e.args[0], haproxywi=1)
+ try:
+ os.system("mv %s %s" % (name, cert_local_dir))
+ except OSError as e:
+ funct.logging('localhost', e.args[0], haproxywi=1)
+ funct.logging(serv, "add.py#ssl uploaded a new SSL cert %s" % name, haproxywi=1, login=1)
if form.getvalue('backend') is not None:
- funct.show_backends(serv)
-
+ funct.show_backends(serv)
if form.getvalue('ip_select') is not None:
- funct.show_backends(serv)
-
+ funct.show_backends(serv)
if form.getvalue('ipbackend') is not None and form.getvalue('backend_server') is None:
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- backend = form.getvalue('ipbackend')
- cmd='echo "show servers state"|nc %s %s |grep "%s" |awk \'{print $4}\'' % (serv, haproxy_sock_port, backend)
- output, stderr = funct.subprocess_execute(cmd)
- for i in output:
- if i == ' ':
- continue
- i = i.strip()
- print(i+'
')
-
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ backend = form.getvalue('ipbackend')
+ cmd = 'echo "show servers state"|nc %s %s |grep "%s" |awk \'{print $4}\'' % (serv, haproxy_sock_port, backend)
+ output, stderr = funct.subprocess_execute(cmd)
+ for i in output:
+ if i == ' ':
+ continue
+ i = i.strip()
+ print(i + '
')
if form.getvalue('ipbackend') is not None and form.getvalue('backend_server') is not None:
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- backend = form.getvalue('ipbackend')
- backend_server = form.getvalue('backend_server')
- cmd='echo "show servers state"|nc %s %s |grep "%s" |grep "%s" |awk \'{print $5":"$19}\' |head -1' % (serv, haproxy_sock_port, backend, backend_server)
- output, stderr = funct.subprocess_execute(cmd)
- print(output[0])
-
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ backend = form.getvalue('ipbackend')
+ backend_server = form.getvalue('backend_server')
+ cmd = 'echo "show servers state"|nc %s %s |grep "%s" |grep "%s" |awk \'{print $5":"$19}\' |head -1' % (
+ serv, haproxy_sock_port, backend, backend_server)
+ output, stderr = funct.subprocess_execute(cmd)
+ print(output[0])
if form.getvalue('backend_ip') is not None:
- backend_backend = form.getvalue('backend_backend')
- backend_server = form.getvalue('backend_server')
- backend_ip = form.getvalue('backend_ip')
- backend_port = form.getvalue('backend_port')
- if form.getvalue('backend_ip') is None:
- print('error: Backend IP must be IP and not 0')
- sys.exit()
+ backend_backend = form.getvalue('backend_backend')
+ backend_server = form.getvalue('backend_server')
+ backend_ip = form.getvalue('backend_ip')
+ backend_port = form.getvalue('backend_port')
+ if form.getvalue('backend_ip') is None:
+ print('error: Backend IP must be IP and not 0')
+ sys.exit()
- if form.getvalue('backend_port') is None:
- print('error: Backend port must be integer and not 0')
- sys.exit()
+ if form.getvalue('backend_port') is None:
+ print('error: Backend port must be integer and not 0')
+ sys.exit()
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- MASTERS = sql.is_master(serv)
- for master in MASTERS:
- if master[0] is not None:
- cmd='echo "set server %s/%s addr %s port %s check-port %s" |nc %s %s' % (backend_backend, backend_server, backend_ip, backend_port, backend_port, master[0], haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
- print(output[0])
+ MASTERS = sql.is_master(serv)
+ for master in MASTERS:
+ if master[0] is not None:
+ cmd = 'echo "set server %s/%s addr %s port %s check-port %s" |nc %s %s' % (
+ backend_backend, backend_server, backend_ip, backend_port, backend_port, master[0], haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
+ print(output[0])
- cmd='echo "set server %s/%s addr %s port %s check-port %s" |nc %s %s' % (backend_backend, backend_server, backend_ip, backend_port, backend_port, serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
-
- if stderr != '':
- print('error: '+stderr[0])
- else:
- print(output[0])
- configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
- cfg = configs_dir + serv + "-" + funct.get_data('config') + ".cfg"
-
- error = funct.get_config(serv, cfg)
- cmd = 'string=`grep %s %s -n -A25 |grep "server %s" |head -1|awk -F"-" \'{print $1}\'` && sed -Ei "$( echo $string)s/((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5]):[0-9]+/%s:%s/g" %s' % (backend_backend, cfg, backend_server, backend_ip, backend_port, cfg)
- output, stderr = funct.subprocess_execute(cmd)
- stderr = funct.master_slave_upload_and_restart(serv, cfg, just_save='save')
+ cmd = 'echo "set server %s/%s addr %s port %s check-port %s" |nc %s %s' % (
+ backend_backend, backend_server, backend_ip, backend_port, backend_port, serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
+ if stderr != '':
+ print('error: ' + stderr[0])
+ else:
+ print(output[0])
+ configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
+ cfg = configs_dir + serv + "-" + funct.get_data('config') + ".cfg"
+ error = funct.get_config(serv, cfg)
+ cmd = 'string=`grep %s %s -n -A25 |grep "server %s" |head -1|awk -F"-" \'{print $1}\'` && sed -Ei "$( echo $string)s/((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5]):[0-9]+/%s:%s/g" %s' % (
+ backend_backend, cfg, backend_server, backend_ip, backend_port, cfg)
+ output, stderr = funct.subprocess_execute(cmd)
+ stderr = funct.master_slave_upload_and_restart(serv, cfg, just_save='save')
if form.getvalue('maxconn_select') is not None:
- serv = form.getvalue('maxconn_select')
- funct.get_backends_from_config(serv, backends='frontend')
-
+ serv = form.getvalue('maxconn_select')
+ funct.get_backends_from_config(serv, backends='frontend')
if form.getvalue('maxconn_frontend') is not None:
- frontend = form.getvalue('maxconn_frontend')
- maxconn = form.getvalue('maxconn_int')
- if form.getvalue('maxconn_int') is None:
- print('error: Maxconn must be integer and not 0')
- sys.exit()
+ frontend = form.getvalue('maxconn_frontend')
+ maxconn = form.getvalue('maxconn_int')
+ if form.getvalue('maxconn_int') is None:
+ print('error: Maxconn must be integer and not 0')
+ sys.exit()
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- MASTERS = sql.is_master(serv)
- for master in MASTERS:
- if master[0] != None:
- if frontend == 'global':
- cmd='echo "set maxconn %s %s" |nc %s %s' % (frontend, maxconn, master[0], haproxy_sock_port)
- else:
- cmd='echo "set maxconn frontend %s %s" |nc %s %s' % (frontend, maxconn, master[0], haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
+ MASTERS = sql.is_master(serv)
+ for master in MASTERS:
+ if master[0] != None:
+ if frontend == 'global':
+ cmd = 'echo "set maxconn %s %s" |nc %s %s' % (frontend, maxconn, master[0], haproxy_sock_port)
+ else:
+ cmd = 'echo "set maxconn frontend %s %s" |nc %s %s' % (frontend, maxconn, master[0], haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
- if frontend == 'global':
- cmd='echo "set maxconn %s %s" |nc %s %s' % (frontend, maxconn, serv, haproxy_sock_port)
- else:
- cmd='echo "set maxconn frontend %s %s" |nc %s %s' % (frontend, maxconn, serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
+ if frontend == 'global':
+ cmd = 'echo "set maxconn %s %s" |nc %s %s' % (frontend, maxconn, serv, haproxy_sock_port)
+ else:
+ cmd = 'echo "set maxconn frontend %s %s" |nc %s %s' % (frontend, maxconn, serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
- if stderr != '':
- print(stderr[0])
- elif output[0] == '':
- configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
- cfg = configs_dir + serv + "-" + funct.get_data('config') + ".cfg"
-
- error = funct.get_config(serv, cfg)
- cmd = 'string=`grep %s %s -n -A5 |grep maxcon -n |awk -F":" \'{print $2}\'|awk -F"-" \'{print $1}\'` && sed -Ei "$( echo $string)s/[0-9]+/%s/g" %s' % (frontend, cfg, maxconn, cfg)
- output, stderr = funct.subprocess_execute(cmd)
- stderr = funct.master_slave_upload_and_restart(serv, cfg, just_save='save')
- print('success: Maxconn for %s has been set to %s ' % (frontend, maxconn))
- else:
- print('error: '+output[0])
+ if stderr != '':
+ print(stderr[0])
+ elif output[0] == '':
+ configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
+ cfg = configs_dir + serv + "-" + funct.get_data('config') + ".cfg"
+ error = funct.get_config(serv, cfg)
+ cmd = 'string=`grep %s %s -n -A5 |grep maxcon -n |awk -F":" \'{print $2}\'|awk -F"-" \'{print $1}\'` && sed -Ei "$( echo $string)s/[0-9]+/%s/g" %s' % (
+ frontend, cfg, maxconn, cfg)
+ output, stderr = funct.subprocess_execute(cmd)
+ stderr = funct.master_slave_upload_and_restart(serv, cfg, just_save='save')
+ print('success: Maxconn for %s has been set to %s ' % (frontend, maxconn))
+ else:
+ print('error: ' + output[0])
if form.getvalue('table_serv_select') is not None:
- print(funct.get_all_stick_table())
-
+ print(funct.get_all_stick_table())
if form.getvalue('table_select') is not None:
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'], trim_blocks=True, lstrip_blocks=True)
- table = form.getvalue('table_select')
+ from jinja2 import Environment, FileSystemLoader
- if table == 'All':
- template = env.get_template('/stick_tables.html')
- tables = funct.get_all_stick_table()
- table = []
- for t in tables.split(','):
- if t != '':
- id = []
- tables_head = []
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,
+ extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'], trim_blocks=True, lstrip_blocks=True)
+ table = form.getvalue('table_select')
- tables_head1, table1 = funct.get_stick_table(t)
- id.append(tables_head1)
- id.append(table1)
- table.append(id)
+ if table == 'All':
+ template = env.get_template('/stick_tables.html')
+ tables = funct.get_all_stick_table()
+ table = []
+ for t in tables.split(','):
+ if t != '':
+ id = []
+ tables_head = []
+ tables_head1, table1 = funct.get_stick_table(t)
+ id.append(tables_head1)
+ id.append(table1)
+ table.append(id)
- template = template.render(table=table)
- else:
- template = env.get_template('/stick_table.html')
- tables_head, table = funct.get_stick_table(table)
- template = template.render(tables_head=tables_head, table=table)
-
- print(template)
+ template = template.render(table=table)
+ else:
+ template = env.get_template('/stick_table.html')
+ tables_head, table = funct.get_stick_table(table)
+ template = template.render(tables_head=tables_head, table=table)
+ print(template)
if form.getvalue('ip_for_delete') is not None:
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- ip = form.getvalue('ip_for_delete')
- table = form.getvalue('table_for_delete')
-
- cmd='echo "clear table %s key %s" |nc %s %s' % (table, ip, serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
- if stderr[0] != '':
- print('error: ' + stderr[0])
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ ip = form.getvalue('ip_for_delete')
+ table = form.getvalue('table_for_delete')
+ cmd = 'echo "clear table %s key %s" |nc %s %s' % (table, ip, serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
+ if stderr[0] != '':
+ print('error: ' + stderr[0])
if form.getvalue('table_for_clear') is not None:
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- table = form.getvalue('table_for_clear')
-
- cmd='echo "clear table %s " |nc %s %s' % (table, serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
- if stderr[0] != '':
- print('error: ' + stderr[0])
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ table = form.getvalue('table_for_clear')
+ cmd = 'echo "clear table %s " |nc %s %s' % (table, serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
+ if stderr[0] != '':
+ print('error: ' + stderr[0])
if form.getvalue('list_serv_select') is not None:
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- cmd='echo "show acl"|nc %s %s |grep "loaded from" |awk \'{print $1,$2}\'' % (serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
- print(output)
-
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ cmd = 'echo "show acl"|nc %s %s |grep "loaded from" |awk \'{print $1,$2}\'' % (serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
+ print(output)
if form.getvalue('list_select_id') is not None:
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/'), autoescape=True, extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'], trim_blocks=True, lstrip_blocks=True)
- template = env.get_template('ajax/list.html')
- list_id = form.getvalue('list_select_id')
- list_name = form.getvalue('list_select_name')
+ from jinja2 import Environment, FileSystemLoader
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- cmd='echo "show acl #%s"|nc %s %s' % (list_id, serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
+ env = Environment(loader=FileSystemLoader('templates/'), autoescape=True,
+ extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'], trim_blocks=True, lstrip_blocks=True)
+ template = env.get_template('ajax/list.html')
+ list_id = form.getvalue('list_select_id')
+ list_name = form.getvalue('list_select_name')
- template = template.render(list=output, list_id=list_id, list_name=list_name)
- print(template)
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ cmd = 'echo "show acl #%s"|nc %s %s' % (list_id, serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
+ template = template.render(list=output, list_id=list_id, list_name=list_name)
+ print(template)
if form.getvalue('list_id_for_delete') is not None:
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- lists_path = sql.get_setting('lists_path')
- fullpath = funct.get_config_var('main', 'fullpath')
- ip_id = form.getvalue('list_ip_id_for_delete')
- ip = form.getvalue('list_ip_for_delete')
- list_id = form.getvalue('list_id_for_delete')
- list_name = form.getvalue('list_name')
- user_group = funct.get_user_group(id=1)
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ lists_path = sql.get_setting('lists_path')
+ fullpath = funct.get_config_var('main', 'fullpath')
+ ip_id = form.getvalue('list_ip_id_for_delete')
+ ip = form.getvalue('list_ip_for_delete')
+ list_id = form.getvalue('list_id_for_delete')
+ list_name = form.getvalue('list_name')
+ user_group = funct.get_user_group(id=1)
- cmd = "sed -i 's!%s$!!' %s/%s/%s/%s" % (ip, fullpath, lists_path, user_group, list_name)
- cmd1 = "sed -i '/^$/d' %s/%s/%s/%s" % (fullpath, lists_path, user_group, list_name)
- output, stderr = funct.subprocess_execute(cmd)
- output1, stderr1 = funct.subprocess_execute(cmd1)
- if output:
- print('error: ' + str(output))
- if stderr:
- print('error: ' + str(stderr))
- if output1:
- print('error: ' + str(output1))
- if stderr1:
- print('error: ' + str(stderr1))
-
-
- cmd='echo "del acl #%s #%s" |nc %s %s' % (list_id, ip_id, serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
- if output[0] != '':
- print('error: ' + output[0])
- if stderr[0] != '':
- print('error: ' + stderr[0])
+ cmd = "sed -i 's!%s$!!' %s/%s/%s/%s" % (ip, fullpath, lists_path, user_group, list_name)
+ cmd1 = "sed -i '/^$/d' %s/%s/%s/%s" % (fullpath, lists_path, user_group, list_name)
+ output, stderr = funct.subprocess_execute(cmd)
+ output1, stderr1 = funct.subprocess_execute(cmd1)
+ if output:
+ print('error: ' + str(output))
+ if stderr:
+ print('error: ' + str(stderr))
+ if output1:
+ print('error: ' + str(output1))
+ if stderr1:
+ print('error: ' + str(stderr1))
+ cmd = 'echo "del acl #%s #%s" |nc %s %s' % (list_id, ip_id, serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
+ if output[0] != '':
+ print('error: ' + output[0])
+ if stderr[0] != '':
+ print('error: ' + stderr[0])
if form.getvalue('list_ip_for_add') is not None:
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- lists_path = sql.get_setting('lists_path')
- fullpath = funct.get_config_var('main', 'fullpath')
- ip = form.getvalue('list_ip_for_add')
- list_id = form.getvalue('list_id_for_add')
- list_name = form.getvalue('list_name')
- user_group = funct.get_user_group(id=1)
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ lists_path = sql.get_setting('lists_path')
+ fullpath = funct.get_config_var('main', 'fullpath')
+ ip = form.getvalue('list_ip_for_add')
+ list_id = form.getvalue('list_id_for_add')
+ list_name = form.getvalue('list_name')
+ user_group = funct.get_user_group(id=1)
- cmd = 'echo "%s" >> %s/%s/%s/%s' % (ip, fullpath, lists_path, user_group, list_name)
- output, stderr = funct.subprocess_execute(cmd)
- if output:
- print('error: ' + str(output))
- if stderr:
- print('error: ' + str(stderr))
-
- cmd = 'echo "add acl #%s %s" |nc %s %s' % (list_id, ip, serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
- if output[0]:
- print('error: ' + output[0])
- if stderr:
- print('error: ' + stderr[0])
+ cmd = 'echo "%s" >> %s/%s/%s/%s' % (ip, fullpath, lists_path, user_group, list_name)
+ output, stderr = funct.subprocess_execute(cmd)
+ if output:
+ print('error: ' + str(output))
+ if stderr:
+ print('error: ' + str(stderr))
+ cmd = 'echo "add acl #%s %s" |nc %s %s' % (list_id, ip, serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
+ if output[0]:
+ print('error: ' + output[0])
+ if stderr:
+ print('error: ' + stderr[0])
if form.getvalue('sessions_select') is not None:
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'], trim_blocks=True, lstrip_blocks=True)
- serv = form.getvalue('sessions_select')
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ from jinja2 import Environment, FileSystemLoader
- cmd = 'echo "show sess" |nc %s %s' % (serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,
+ extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'], trim_blocks=True, lstrip_blocks=True)
+ serv = form.getvalue('sessions_select')
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- template = env.get_template('/sessions_table.html')
- template = template.render(sessions=output)
+ cmd = 'echo "show sess" |nc %s %s' % (serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
- print(template)
+ template = env.get_template('/sessions_table.html')
+ template = template.render(sessions=output)
+ print(template)
if form.getvalue('sessions_select_show') is not None:
- serv = form.getvalue('sessions_select_show')
- sess_id = form.getvalue('sessions_select_id')
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ serv = form.getvalue('sessions_select_show')
+ sess_id = form.getvalue('sessions_select_id')
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- cmd = 'echo "show sess %s" |nc %s %s' % (sess_id, serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
+ cmd = 'echo "show sess %s" |nc %s %s' % (sess_id, serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
- output, stderr = funct.subprocess_execute(cmd)
-
- if stderr:
- print('error: ' + stderr[0])
- else:
- for o in output:
- print(o+'
')
+ output, stderr = funct.subprocess_execute(cmd)
+ if stderr:
+ print('error: ' + stderr[0])
+ else:
+ for o in output:
+ print(o + '
')
if form.getvalue('session_delete_id') is not None:
- haproxy_sock_port = sql.get_setting('haproxy_sock_port')
- sess_id = form.getvalue('session_delete_id')
-
- cmd='echo "shutdown session %s" |nc %s %s' % (sess_id, serv, haproxy_sock_port)
- output, stderr = funct.subprocess_execute(cmd)
- if output[0] != '':
- print('error: ' + output[0])
- if stderr[0] != '':
- print('error: ' + stderr[0])
+ haproxy_sock_port = sql.get_setting('haproxy_sock_port')
+ sess_id = form.getvalue('session_delete_id')
+ cmd = 'echo "shutdown session %s" |nc %s %s' % (sess_id, serv, haproxy_sock_port)
+ output, stderr = funct.subprocess_execute(cmd)
+ if output[0] != '':
+ print('error: ' + output[0])
+ if stderr[0] != '':
+ print('error: ' + stderr[0])
if form.getvalue("change_pos") is not None:
- pos = form.getvalue('change_pos')
- sql.update_server_pos(pos, serv)
-
+ pos = form.getvalue('change_pos')
+ sql.update_server_pos(pos, serv)
if form.getvalue('ip') is not None and serv is not None:
- commands = [ "sudo ip a |grep inet |egrep -v '::1' |awk '{ print $2 }' |awk -F'/' '{ print $1 }'" ]
- funct.ssh_command(serv, commands, ip="1")
-
+ commands = ["sudo ip a |grep inet |egrep -v '::1' |awk '{ print $2 }' |awk -F'/' '{ print $1 }'"]
+ funct.ssh_command(serv, commands, ip="1")
if form.getvalue('showif'):
- commands = ["sudo ip link|grep 'UP' |grep -v 'lo'| awk '{print $2}' |awk -F':' '{print $1}'"]
- funct.ssh_command(serv, commands, ip="1")
-
+ commands = ["sudo ip link|grep 'UP' |grep -v 'lo'| awk '{print $2}' |awk -F':' '{print $1}'"]
+ funct.ssh_command(serv, commands, ip="1")
if form.getvalue('action_hap') is not None and serv is not None:
- action = form.getvalue('action_hap')
+ action = form.getvalue('action_hap')
- if funct.check_haproxy_config(serv):
- haproxy_enterprise = sql.get_setting('haproxy_enterprise')
- if haproxy_enterprise == '1':
- haproxy_service_name = "hapee-2.0-lb"
- else:
- haproxy_service_name = "haproxy"
-
- commands = ["sudo systemctl %s %s" % (action, haproxy_service_name)]
- funct.ssh_command(serv, commands)
- funct.logging(serv, 'HAProxy was '+action+'ed', haproxywi=1, login=1)
- print("success: HAProxy was %s" % action)
- else:
- print("error: Bad config, check please")
+ if funct.check_haproxy_config(serv):
+ haproxy_enterprise = sql.get_setting('haproxy_enterprise')
+ if haproxy_enterprise == '1':
+ haproxy_service_name = "hapee-2.0-lb"
+ else:
+ haproxy_service_name = "haproxy"
+ commands = ["sudo systemctl %s %s" % (action, haproxy_service_name)]
+ funct.ssh_command(serv, commands)
+ funct.logging(serv, 'HAProxy was ' + action + 'ed', haproxywi=1, login=1)
+ print("success: HAProxy was %s" % action)
+ else:
+ print("error: Bad config, check please")
if form.getvalue('action_nginx') is not None and serv is not None:
- action = form.getvalue('action_nginx')
-
- if funct.check_haproxy_config(serv):
- commands = [ "sudo systemctl %s nginx" % action ]
- funct.ssh_command(serv, commands)
- funct.logging(serv, 'Nginx was '+action+'ed', haproxywi=1, login=1)
- print("success: Nginx was %s" % action)
- else:
- print("error: Bad config, check please")
+ action = form.getvalue('action_nginx')
+ if funct.check_haproxy_config(serv):
+ commands = ["sudo systemctl %s nginx" % action]
+ funct.ssh_command(serv, commands)
+ funct.logging(serv, 'Nginx was ' + action + 'ed', haproxywi=1, login=1)
+ print("success: Nginx was %s" % action)
+ else:
+ print("error: Bad config, check please")
if form.getvalue('action_waf') is not None and serv is not None:
- serv = form.getvalue('serv')
- action = form.getvalue('action_waf')
- funct.logging(serv, 'WAF service was '+action+'ed', haproxywi=1, login=1)
- commands = [ "sudo systemctl %s waf" % action ]
- funct.ssh_command(serv, commands)
-
+ serv = form.getvalue('serv')
+ action = form.getvalue('action_waf')
+ funct.logging(serv, 'WAF service was ' + action + 'ed', haproxywi=1, login=1)
+ commands = ["sudo systemctl %s waf" % action]
+ funct.ssh_command(serv, commands)
if form.getvalue('action_service') is not None:
- action = form.getvalue('action_service')
- if action == 'stop':
- cmd="sudo systemctl disable %s --now" % serv
- elif action == "start":
- cmd="sudo systemctl enable %s --now" % serv
- elif action == "restart":
- cmd="sudo systemctl restart %s --now" % serv
- output, stderr = funct.subprocess_execute(cmd)
- funct.logging('localhost', ' The service '+serv+ 'was '+action+'ed', haproxywi=1, login=1)
-
+ action = form.getvalue('action_service')
+ if action == 'stop':
+ cmd = "sudo systemctl disable %s --now" % serv
+ elif action == "start":
+ cmd = "sudo systemctl enable %s --now" % serv
+ elif action == "restart":
+ cmd = "sudo systemctl restart %s --now" % serv
+ output, stderr = funct.subprocess_execute(cmd)
+ funct.logging('localhost', ' The service ' + serv + 'was ' + action + 'ed', haproxywi=1, login=1)
if act == "overviewHapserverBackends":
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
- template = env.get_template('haproxyservers_backends.html')
- service = form.getvalue('service')
- if service == 'haproxy':
- configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
- format = 'cfg'
- elif service == 'nginx':
- configs_dir = funct.get_config_var('configs', 'nginx_save_configs_dir')
- format = 'conf'
- try:
- sections = funct.get_sections(configs_dir+funct.get_files(dir=configs_dir, format=format)[0], service=service)
- except Exception as e:
- funct.logging('localhost', str(e), haproxywi=1)
- try:
- cfg = configs_dir + serv + "-" + funct.get_data('config') + '.'+format
- except:
- funct.logging('localhost', ' Cannot generate cfg path', haproxywi=1)
- try:
- if service == 'nginx':
- error = funct.get_config(serv, cfg, nginx=1)
- else:
- error = funct.get_config(serv, cfg)
- except:
- funct.logging('localhost', ' Cannot download config', haproxywi=1)
- try:
- sections = funct.get_sections(cfg, service=service)
- except:
- funct.logging('localhost', ' Cannot get sections from config file', haproxywi=1)
- sections = 'Cannot get backends'
+ from jinja2 import Environment, FileSystemLoader
- template = template.render(backends=sections, serv=serv, service=service)
- print(template)
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
+ template = env.get_template('haproxyservers_backends.html')
+ service = form.getvalue('service')
+ if service == 'haproxy':
+ configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
+ format = 'cfg'
+ elif service == 'nginx':
+ configs_dir = funct.get_config_var('configs', 'nginx_save_configs_dir')
+ format = 'conf'
+ try:
+ sections = funct.get_sections(configs_dir + funct.get_files(dir=configs_dir, format=format)[0], service=service)
+ except Exception as e:
+ funct.logging('localhost', str(e), haproxywi=1)
+ try:
+ cfg = configs_dir + serv + "-" + funct.get_data('config') + '.' + format
+ except:
+ funct.logging('localhost', ' Cannot generate cfg path', haproxywi=1)
+ try:
+ if service == 'nginx':
+ error = funct.get_config(serv, cfg, nginx=1)
+ else:
+ error = funct.get_config(serv, cfg)
+ except:
+ funct.logging('localhost', ' Cannot download config', haproxywi=1)
+ try:
+ sections = funct.get_sections(cfg, service=service)
+ except:
+ funct.logging('localhost', ' Cannot get sections from config file', haproxywi=1)
+ sections = 'Cannot get backends'
+ template = template.render(backends=sections, serv=serv, service=service)
+ print(template)
if act == "overviewHapservers":
- if form.getvalue('service') == 'nginx':
- config_path = sql.get_setting('nginx_config_path')
- else:
- config_path = sql.get_setting('haproxy_config_path')
- commands = [ "ls -l %s |awk '{ print $6\" \"$7\" \"$8}'" % config_path ]
- try:
- print(funct.ssh_command(serv, commands))
- except:
- print('error: Cannot get last date')
-
+ if form.getvalue('service') == 'nginx':
+ config_path = sql.get_setting('nginx_config_path')
+ else:
+ config_path = sql.get_setting('haproxy_config_path')
+ commands = ["ls -l %s |awk '{ print $6\" \"$7\" \"$8}'" % config_path]
+ try:
+ print(funct.ssh_command(serv, commands))
+ except:
+ print('error: Cannot get last date')
if act == "overview":
- import asyncio
- async def async_get_overview(serv1, serv2):
- server_status = ()
- commands2 = [ "ps ax |grep waf/bin/modsecurity |grep -v grep |wc -l" ]
- cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Process_num"' % (serv2, sql.get_setting('haproxy_sock_port'))
- keepalived = sql.select_keealived(serv2)
- if keepalived == 1:
- command = [ "ps ax |grep keepalived|grep -v grep|wc -l" ]
- keepalived_process = funct.ssh_command(serv2, command)
- else:
- keepalived_process = ''
- nginx = sql.select_nginx(serv2)
- if nginx == 1:
- command = [ "ps ax |grep nginx:|grep -v grep|wc -l" ]
- nginx_process = funct.ssh_command(serv2, command)
- else:
- nginx_process = ''
- server_status = (serv1,
- serv2,
- funct.server_status(funct.subprocess_execute(cmd)),
- sql.select_servers(server=serv2, keep_alive=1),
- funct.ssh_command(serv2, commands2),
- sql.select_waf_servers(serv2),
- keepalived,
- keepalived_process,
- nginx,
- nginx_process)
- return server_status
+ import asyncio
- async def get_runner_overview():
- import http.cookies
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
-
- servers = []
- template = env.get_template('overview.html')
- cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
- user_id = cookie.get('uuid')
- futures = [async_get_overview(server[1], server[2]) for server in sql.select_servers(server=serv)]
- for i, future in enumerate(asyncio.as_completed(futures)):
- result = await future
- servers.append(result)
- servers_sorted = sorted(servers, key=funct.get_key)
- template = template.render(service_status=servers_sorted, role=sql.get_user_role_by_uuid(user_id.value))
- print(template)
+ async def async_get_overview(serv1, serv2):
+ server_status = ()
+ commands2 = ["ps ax |grep waf/bin/modsecurity |grep -v grep |wc -l"]
+ cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Process_num"' % (serv2, sql.get_setting('haproxy_sock_port'))
+ keepalived = sql.select_keealived(serv2)
+ if keepalived == 1:
+ command = ["ps ax |grep keepalived|grep -v grep|wc -l"]
+ keepalived_process = funct.ssh_command(serv2, command)
+ else:
+ keepalived_process = ''
+ nginx = sql.select_nginx(serv2)
+ if nginx == 1:
+ command = ["ps ax |grep nginx:|grep -v grep|wc -l"]
+ nginx_process = funct.ssh_command(serv2, command)
+ else:
+ nginx_process = ''
+ server_status = (serv1,
+ serv2,
+ funct.server_status(funct.subprocess_execute(cmd)),
+ sql.select_servers(server=serv2, keep_alive=1),
+ funct.ssh_command(serv2, commands2),
+ sql.select_waf_servers(serv2),
+ keepalived,
+ keepalived_process,
+ nginx,
+ nginx_process)
+ return server_status
- ioloop = asyncio.get_event_loop()
- ioloop.run_until_complete(get_runner_overview())
- ioloop.close()
+ async def get_runner_overview():
+ import http.cookies
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,
+ extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
+ servers = []
+ template = env.get_template('overview.html')
+ cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
+ user_id = cookie.get('uuid')
+ futures = [async_get_overview(server[1], server[2]) for server in sql.select_servers(server=serv)]
+ for i, future in enumerate(asyncio.as_completed(futures)):
+ result = await future
+ servers.append(result)
+ servers_sorted = sorted(servers, key=funct.get_key)
+ template = template.render(service_status=servers_sorted, role=sql.get_user_role_by_uuid(user_id.value))
+ print(template)
+
+
+ ioloop = asyncio.get_event_loop()
+ ioloop.run_until_complete(get_runner_overview())
+ ioloop.close()
if act == "overviewwaf":
- import asyncio
- async def async_get_overviewWaf(serv1, serv2):
- haproxy_dir = sql.get_setting('haproxy_dir')
- server_status = ()
- commands = [ "ps ax |grep waf/bin/modsecurity |grep -v grep |wc -l" ]
- commands1 = [ "cat %s/waf/modsecurity.conf |grep SecRuleEngine |grep -v '#' |awk '{print $2}'" % haproxy_dir ]
-
- server_status = (serv1,serv2,
- funct.ssh_command(serv2, commands),
- funct.ssh_command(serv2, commands1).strip(),
- sql.select_waf_metrics_enable_server(serv2))
- return server_status
+ import asyncio
- async def get_runner_overviewWaf():
- import http.cookies
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
- template = env.get_template('overivewWaf.html')
+ async def async_get_overviewWaf(serv1, serv2):
+ haproxy_dir = sql.get_setting('haproxy_dir')
+ server_status = ()
+ commands = ["ps ax |grep waf/bin/modsecurity |grep -v grep |wc -l"]
+ commands1 = ["cat %s/waf/modsecurity.conf |grep SecRuleEngine |grep -v '#' |awk '{print $2}'" % haproxy_dir]
- servers = []
- cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
- user_id = cookie.get('uuid')
- futures = [async_get_overviewWaf(server[1], server[2]) for server in sql.select_servers(server=serv)]
- for i, future in enumerate(asyncio.as_completed(futures)):
- result = await future
- servers.append(result)
- servers_sorted = sorted(servers, key=funct.get_key)
- template = template.render(service_status=servers_sorted, role=sql.get_user_role_by_uuid(user_id.value))
- print(template)
+ server_status = (serv1, serv2,
+ funct.ssh_command(serv2, commands),
+ funct.ssh_command(serv2, commands1).strip(),
+ sql.select_waf_metrics_enable_server(serv2))
+ return server_status
- ioloop = asyncio.get_event_loop()
- ioloop.run_until_complete(get_runner_overviewWaf())
- ioloop.close()
+ async def get_runner_overviewWaf():
+ import http.cookies
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True,
+ extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
+ template = env.get_template('overivewWaf.html')
+
+ servers = []
+ cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
+ user_id = cookie.get('uuid')
+ futures = [async_get_overviewWaf(server[1], server[2]) for server in sql.select_servers(server=serv)]
+ for i, future in enumerate(asyncio.as_completed(futures)):
+ result = await future
+ servers.append(result)
+ servers_sorted = sorted(servers, key=funct.get_key)
+ template = template.render(service_status=servers_sorted, role=sql.get_user_role_by_uuid(user_id.value))
+ print(template)
+
+
+ ioloop = asyncio.get_event_loop()
+ ioloop.run_until_complete(get_runner_overviewWaf())
+ ioloop.close()
if act == "overviewServers":
- import asyncio
- async def async_get_overviewServers(serv1, serv2, service):
- server_status = ()
+ import asyncio
- if service == 'haproxy':
- cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Ver\|CurrConns\|Maxco\|MB\|Uptime:"' % (serv2, sql.get_setting('haproxy_sock_port'))
- out = funct.subprocess_execute(cmd)
- out1 = ""
- for k in out:
- if "Ncat:" not in k:
- for r in k:
- out1 += r
- out1 += "
"
- else:
- out1 = "Can\'t connect to HAproxy"
- else:
- out1 = ''
+ async def async_get_overviewServers(serv1, serv2, service):
+ server_status = ()
- server_status = (serv1,serv2, out1)
- return server_status
+ if service == 'haproxy':
+ cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Ver\|CurrConns\|Maxco\|MB\|Uptime:"' % (
+ serv2, sql.get_setting('haproxy_sock_port'))
+ out = funct.subprocess_execute(cmd)
+ out1 = ""
- async def get_runner_overviewServers(**kwargs):
- import http.cookies
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'),extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
- template = env.get_template('overviewServers.html')
+ for k in out:
+ if "Ncat:" not in k:
+ for r in k:
+ out1 += r
+ out1 += "
"
+ else:
+ out1 = "Can\'t connect to HAproxy"
+ else:
+ out1 = ''
- servers = []
- cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
- user_id = cookie.get('uuid')
- role = sql.get_user_role_by_uuid(user_id.value)
- futures = [async_get_overviewServers(kwargs.get('server1'), kwargs.get('server2'), kwargs.get('service'))]
+ server_status = (serv1, serv2, out1)
+ return server_status
- for i, future in enumerate(asyncio.as_completed(futures)):
- result = await future
- servers.append(result)
- servers_sorted = sorted(servers, key=funct.get_key)
- template = template.render(service_status=servers_sorted, role=role, id=kwargs.get('id'), service_page=service)
- print(template)
- id = form.getvalue('id')
- name = form.getvalue('name')
- service = form.getvalue('service')
- ioloop = asyncio.get_event_loop()
- ioloop.run_until_complete(get_runner_overviewServers(server1=name, server2=serv, id=id, service=service))
- ioloop.close()
+ async def get_runner_overviewServers(**kwargs):
+ import http.cookies
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader('templates/ajax'),
+ extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'])
+ template = env.get_template('overviewServers.html')
+ servers = []
+ cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
+ user_id = cookie.get('uuid')
+ role = sql.get_user_role_by_uuid(user_id.value)
+ futures = [async_get_overviewServers(kwargs.get('server1'), kwargs.get('server2'), kwargs.get('service'))]
+
+ for i, future in enumerate(asyncio.as_completed(futures)):
+ result = await future
+ servers.append(result)
+ servers_sorted = sorted(servers, key=funct.get_key)
+ template = template.render(service_status=servers_sorted, role=role, id=kwargs.get('id'), service_page=service)
+ print(template)
+
+
+ id = form.getvalue('id')
+ name = form.getvalue('name')
+ service = form.getvalue('service')
+ ioloop = asyncio.get_event_loop()
+ ioloop.run_until_complete(get_runner_overviewServers(server1=name, server2=serv, id=id, service=service))
+ ioloop.close()
if form.getvalue('action'):
- import requests
+ import requests
- haproxy_user = sql.get_setting('stats_user')
- haproxy_pass = sql.get_setting('stats_password')
- stats_port = sql.get_setting('stats_port')
- stats_page = sql.get_setting('stats_page')
+ haproxy_user = sql.get_setting('stats_user')
+ haproxy_pass = sql.get_setting('stats_password')
+ stats_port = sql.get_setting('stats_port')
+ stats_page = sql.get_setting('stats_page')
- postdata = {
- 'action' : form.getvalue('action'),
- 's' : form.getvalue('s'),
- 'b' : form.getvalue('b')
- }
+ postdata = {
+ 'action': form.getvalue('action'),
+ 's': form.getvalue('s'),
+ 'b': form.getvalue('b')
+ }
- headers = {
- 'User-Agent' : 'Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0',
- 'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Language' : 'en-US,en;q=0.5',
- 'Accept-Encoding' : 'gzip, deflate'
- }
-
- q = requests.post('http://'+serv+':'+stats_port+'/'+stats_page, headers=headers, data=postdata, auth=(haproxy_user, haproxy_pass))
+ headers = {
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0',
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
+ 'Accept-Language': 'en-US,en;q=0.5',
+ 'Accept-Encoding': 'gzip, deflate'
+ }
+ q = requests.post('http://' + serv + ':' + stats_port + '/' + stats_page,
+ headers=headers,
+ data=postdata,
+ auth=(haproxy_user, haproxy_pass))
if serv is not None and act == "stats":
- import requests
+ import requests
- if form.getvalue('service') == 'nginx':
- haproxy_user = sql.get_setting('nginx_stats_user')
- haproxy_pass = sql.get_setting('nginx_stats_password')
- stats_port = sql.get_setting('nginx_stats_port')
- stats_page = sql.get_setting('nginx_stats_page')
- else:
- haproxy_user = sql.get_setting('stats_user')
- haproxy_pass = sql.get_setting('stats_password')
- stats_port = sql.get_setting('stats_port')
- stats_page = sql.get_setting('stats_page')
- try:
- response = requests.get('http://%s:%s/%s' % (serv, stats_port, stats_page), auth=(haproxy_user, haproxy_pass))
- except requests.exceptions.ConnectTimeout:
- print('error: Oops. Connection timeout occured!')
- except requests.exceptions.ReadTimeout:
- print('error: Oops. Read timeout occured')
- except requests.exceptions.HTTPError as errh:
- print ("error: Http Error:",errh)
- except requests.exceptions.ConnectionError as errc:
- print ('error: Error Connecting: %s' % errc)
- except requests.exceptions.Timeout as errt:
- print ("error: Timeout Error:",errt)
- except requests.exceptions.RequestException as err:
- print ("error: OOps: Something Else",err)
+ if form.getvalue('service') == 'nginx':
+ haproxy_user = sql.get_setting('nginx_stats_user')
+ haproxy_pass = sql.get_setting('nginx_stats_password')
+ stats_port = sql.get_setting('nginx_stats_port')
+ stats_page = sql.get_setting('nginx_stats_page')
+ else:
+ haproxy_user = sql.get_setting('stats_user')
+ haproxy_pass = sql.get_setting('stats_password')
+ stats_port = sql.get_setting('stats_port')
+ stats_page = sql.get_setting('stats_page')
+ try:
+ response = requests.get('http://%s:%s/%s' % (serv, stats_port, stats_page), auth=(haproxy_user, haproxy_pass))
+ except requests.exceptions.ConnectTimeout:
+ print('error: Oops. Connection timeout occured!')
+ except requests.exceptions.ReadTimeout:
+ print('error: Oops. Read timeout occured')
+ except requests.exceptions.HTTPError as errh:
+ print("error: Http Error:", errh)
+ except requests.exceptions.ConnectionError as errc:
+ print('error: Error Connecting: %s' % errc)
+ except requests.exceptions.Timeout as errt:
+ print("error: Timeout Error:", errt)
+ except requests.exceptions.RequestException as err:
+ print("error: OOps: Something Else", err)
- data = response.content
- if form.getvalue('service') == 'nginx':
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
- template = env.get_template('ajax/nginx_stats.html')
+ data = response.content
+ if form.getvalue('service') == 'nginx':
+ from jinja2 import Environment, FileSystemLoader
- servers_with_status = list()
- h = ()
- out1 = []
- for k in data.decode('utf-8').split():
- out1.append(k)
- h = (out1, )
- servers_with_status.append(h)
+ env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
+ template = env.get_template('ajax/nginx_stats.html')
- template = template.render(out=servers_with_status)
- print(template)
- else:
- print(data.decode('utf-8'))
+ servers_with_status = list()
+ h = ()
+ out1 = []
+ for k in data.decode('utf-8').split():
+ out1.append(k)
+ h = (out1,)
+ servers_with_status.append(h)
+ template = template.render(out=servers_with_status)
+ print(template)
+ else:
+ print(data.decode('utf-8'))
if serv is not None and form.getvalue('rows') is not None:
- rows = form.getvalue('rows')
- waf = form.getvalue('waf')
- grep = form.getvalue('grep')
- hour = form.getvalue('hour')
- minut = form.getvalue('minut')
- hour1 = form.getvalue('hour1')
- minut1 = form.getvalue('minut1')
- service = form.getvalue('service')
- out = funct.show_haproxy_log(serv, rows=rows, waf=waf, grep=grep, hour=hour, minut=minut, hour1=hour1, minut1=minut1, service=service)
- print(out)
-
+ rows = form.getvalue('rows')
+ waf = form.getvalue('waf')
+ grep = form.getvalue('grep')
+ hour = form.getvalue('hour')
+ minut = form.getvalue('minut')
+ hour1 = form.getvalue('hour1')
+ minut1 = form.getvalue('minut1')
+ service = form.getvalue('service')
+ out = funct.show_haproxy_log(serv, rows=rows, waf=waf, grep=grep, hour=hour, minut=minut, hour1=hour1,
+ minut1=minut1, service=service)
+ print(out)
if serv is not None and form.getvalue('rows1') is not None:
- rows = form.getvalue('rows1')
- grep = form.getvalue('grep')
- hour = form.getvalue('hour')
- minut = form.getvalue('minut')
- hour1 = form.getvalue('hour1')
- minut1 = form.getvalue('minut1')
- out = funct.show_haproxy_log(serv, rows=rows, waf='0', grep=grep, hour=hour, minut=minut, hour1=hour1, minut1=minut1, service='apache')
- print(out)
-
+ rows = form.getvalue('rows1')
+ grep = form.getvalue('grep')
+ hour = form.getvalue('hour')
+ minut = form.getvalue('minut')
+ hour1 = form.getvalue('hour1')
+ minut1 = form.getvalue('minut1')
+ out = funct.show_haproxy_log(serv, rows=rows, waf='0', grep=grep, hour=hour, minut=minut, hour1=hour1,
+ minut1=minut1, service='apache')
+ print(out)
if form.getvalue('viewlogs') is not None:
- viewlog = form.getvalue('viewlogs')
- rows = form.getvalue('rows')
- grep = form.getvalue('grep')
- hour = form.getvalue('hour')
- minut = form.getvalue('minut')
- hour1 = form.getvalue('hour1')
- minut1 = form.getvalue('minut1')
- if funct.check_user_group():
- out = funct.show_haproxy_log(serv=viewlog, rows=rows, waf='0', grep=grep, hour=hour, minut=minut, hour1=hour1, minut1=minut1, service='internal')
- print(out)
-
+ viewlog = form.getvalue('viewlogs')
+ rows = form.getvalue('rows')
+ grep = form.getvalue('grep')
+ hour = form.getvalue('hour')
+ minut = form.getvalue('minut')
+ hour1 = form.getvalue('hour1')
+ minut1 = form.getvalue('minut1')
+ if funct.check_user_group():
+ out = funct.show_haproxy_log(serv=viewlog, rows=rows, waf='0', grep=grep, hour=hour, minut=minut, hour1=hour1,
+ minut1=minut1, service='internal')
+ print(out)
if serv is not None and act == "showMap":
- import networkx as nx
- import matplotlib
- matplotlib.use('Agg')
- import matplotlib.pyplot as plt
+ import networkx as nx
+ import matplotlib
- stats_port= sql.get_setting('stats_port')
- haproxy_config_path = sql.get_setting('haproxy_config_path')
- hap_configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
- date = funct.get_data('config')
- cfg = hap_configs_dir + serv + "-" + date + ".cfg"
+ matplotlib.use('Agg')
+ import matplotlib.pyplot as plt
- print('')
- print("Map from %s
" % serv)
+ stats_port = sql.get_setting('stats_port')
+ haproxy_config_path = sql.get_setting('haproxy_config_path')
+ hap_configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
+ date = funct.get_data('config')
+ cfg = hap_configs_dir + serv + "-" + date + ".cfg"
- G = nx.DiGraph()
+ print('')
+ print("Map from %s
" % serv)
- error = funct.get_config(serv, cfg)
- if error:
- print(error)
- try:
- conf = open(cfg, "r")
- except IOError:
- print('error: Can\'t read import config file')
+ G = nx.DiGraph()
- node = ""
- line_new2 = [1,""]
- i,k = 800, 800
- j, m = 0, 0
- for line in conf:
- if line.startswith('listen') or line.startswith('frontend'):
- if "stats" not in line:
- node = line
- i = i - 750
- if line.find("backend") == 0:
- node = line
- i = i - 700
- G.add_node(node,pos=(k,i),label_pos=(k,i+100))
+ error = funct.get_config(serv, cfg)
+ if error:
+ print(error)
+ try:
+ conf = open(cfg, "r")
+ except IOError:
+ print('error: Can\'t read import config file')
- if "bind" in line or (line.startswith('listen') and ":" in line) or (line.startswith('frontend') and ":" in line):
- try:
- bind = line.split(":")
- if stats_port not in bind[1]:
- bind[1] = bind[1].strip(' ')
- bind = bind[1].split("crt")
- node = node.strip(' \t\n\r')
- node = node + ":" + bind[0]
- G.add_node(node,pos=(k,i),label_pos=(k,i+100))
- except:
- pass
+ node = ""
+ line_new2 = [1, ""]
+ i, k = 800, 800
+ j, m = 0, 0
+ for line in conf:
+ if line.startswith('listen') or line.startswith('frontend'):
+ if "stats" not in line:
+ node = line
+ i = i - 750
+ if line.find("backend") == 0:
+ node = line
+ i = i - 700
+ G.add_node(node, pos=(k, i), label_pos=(k, i + 100))
- if "server " in line or "use_backend" in line or "default_backend" in line and "stats" not in line and "#" not in line:
- if "timeout" not in line and "default-server" not in line and "#" not in line and "stats" not in line:
- i = i - 1050
- j = j + 1
- if "check" in line:
- line_new = line.split("check")
- else:
- line_new = line.split("if ")
- if "server" in line:
- line_new1 = line_new[0].split("server")
- line_new[0] = line_new1[1]
- line_new2 = line_new[0].split(":")
- line_new[0] = line_new2[0]
+ if "bind" in line or (line.startswith('listen') and ":" in line) or (
+ line.startswith('frontend') and ":" in line):
+ try:
+ bind = line.split(":")
+ if stats_port not in bind[1]:
+ bind[1] = bind[1].strip(' ')
+ bind = bind[1].split("crt")
+ node = node.strip(' \t\n\r')
+ node = node + ":" + bind[0]
+ G.add_node(node, pos=(k, i), label_pos=(k, i + 100))
+ except:
+ pass
- line_new[0] = line_new[0].strip(' \t\n\r')
- line_new2[1] = line_new2[1].strip(' \t\n\r')
+ if "server " in line or "use_backend" in line or "default_backend" in line and "stats" not in line and "#" not in line:
+ if "timeout" not in line and "default-server" not in line and "#" not in line and "stats" not in line:
+ i = i - 1050
+ j = j + 1
+ if "check" in line:
+ line_new = line.split("check")
+ else:
+ line_new = line.split("if ")
+ if "server" in line:
+ line_new1 = line_new[0].split("server")
+ line_new[0] = line_new1[1]
+ line_new2 = line_new[0].split(":")
+ line_new[0] = line_new2[0]
- if j % 2 == 0:
- G.add_node(line_new[0],pos=(k+230,i-335),label_pos=(k+225,i-180))
- else:
- G.add_node(line_new[0],pos=(k-230,i-0),label_pos=(k-225,i+180))
+ line_new[0] = line_new[0].strip(' \t\n\r')
+ line_new2[1] = line_new2[1].strip(' \t\n\r')
- if line_new2[1] != "":
- G.add_edge(node, line_new[0], port=line_new2[1])
- else:
- G.add_edge(node,line_new[0])
+ if j % 2 == 0:
+ G.add_node(line_new[0], pos=(k + 230, i - 335), label_pos=(k + 225, i - 180))
+ else:
+ G.add_node(line_new[0], pos=(k - 230, i - 0), label_pos=(k - 225, i + 180))
- os.system("/bin/rm -f " + cfg)
+ if line_new2[1] != "":
+ G.add_edge(node, line_new[0], port=line_new2[1])
+ else:
+ G.add_edge(node, line_new[0])
- pos=nx.get_node_attributes(G,'pos')
- pos_label=nx.get_node_attributes(G,'label_pos')
- edge_labels = nx.get_edge_attributes(G,'port')
+ os.system("/bin/rm -f " + cfg)
- try:
- plt.figure(10,figsize=(10,15))
- nx.draw(G, pos, with_labels=False, font_weight='bold', width=3, alpha=0.1,linewidths=5)
- nx.draw_networkx_nodes(G,pos, node_color="skyblue", node_size=100, alpha=0.8, node_shape="p")
- nx.draw_networkx_labels(G,pos=pos_label, alpha=1, font_color="green", font_size=10)
- nx.draw_networkx_edges(G,pos, width=0.5,alpha=0.5, edge_color="#5D9CEB",arrows=False)
- nx.draw_networkx_edge_labels(G, pos,label_pos=0.5,font_color="blue", labels=edge_labels, font_size=8)
+ pos = nx.get_node_attributes(G, 'pos')
+ pos_label = nx.get_node_attributes(G, 'label_pos')
+ edge_labels = nx.get_edge_attributes(G, 'port')
- plt.savefig("map.png")
- plt.show()
- except Exception as e:
- print(str(e))
+ try:
+ plt.figure(10, figsize=(10, 15))
+ nx.draw(G, pos, with_labels=False, font_weight='bold', width=3, alpha=0.1, linewidths=5)
+ nx.draw_networkx_nodes(G, pos, node_color="skyblue", node_size=100, alpha=0.8, node_shape="p")
+ nx.draw_networkx_labels(G, pos=pos_label, alpha=1, font_color="green", font_size=10)
+ nx.draw_networkx_edges(G, pos, width=0.5, alpha=0.5, edge_color="#5D9CEB", arrows=False)
+ nx.draw_networkx_edge_labels(G, pos, label_pos=0.5, font_color="blue", labels=edge_labels, font_size=8)
- cmd = "rm -f "+os.path.dirname(os.getcwd())+"/map*.png && mv map.png "+os.path.dirname(os.getcwd())+"/map"+date+".png"
- output, stderr = funct.subprocess_execute(cmd)
- print(stderr)
+ plt.savefig("map.png")
+ plt.show()
+ except Exception as e:
+ print(str(e))
- print('
' % date)
+ cmd = "rm -f " + os.path.dirname(os.getcwd()) + "/map*.png && mv map.png " + os.path.dirname(
+ os.getcwd()) + "/map" + date + ".png"
+ output, stderr = funct.subprocess_execute(cmd)
+ print(stderr)
+ print('
' % date)
if form.getvalue('servaction') is not None:
- server_state_file = sql.get_setting('server_state_file')
- haproxy_sock = sql.get_setting('haproxy_sock')
- enable = form.getvalue('servaction')
- backend = form.getvalue('servbackend')
- cmd='echo "%s %s" |sudo socat stdio %s' % (enable, backend, haproxy_sock)
+ server_state_file = sql.get_setting('server_state_file')
+ haproxy_sock = sql.get_setting('haproxy_sock')
+ enable = form.getvalue('servaction')
+ backend = form.getvalue('servbackend')
+ cmd = 'echo "%s %s" |sudo socat stdio %s' % (enable, backend, haproxy_sock)
- if form.getvalue('save') == "on":
- save_command = 'echo "show servers state" | sudo socat %s stdio > %s' % (haproxy_sock, server_state_file)
- command = [ cmd + ';' + save_command ]
- else:
- command = [ cmd ]
+ if form.getvalue('save') == "on":
+ save_command = 'echo "show servers state" | sudo socat %s stdio > %s' % (haproxy_sock, server_state_file)
+ command = [cmd + ';' + save_command]
+ else:
+ command = [cmd]
- if enable != "show":
- print('
' % (enable, backend, serv, serv))
-
- print(funct.ssh_command(serv, command, show_log="1"))
- action = 'runtimeapi.py ' + enable + ' ' + backend
- funct.logging(serv, action)
+ if enable != "show":
+ print(
+ '
' % (
+ enable, backend, serv, serv))
+ print(funct.ssh_command(serv, command, show_log="1"))
+ action = 'runtimeapi.py ' + enable + ' ' + backend
+ funct.logging(serv, action)
if act == "showCompareConfigs":
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
- template = env.get_template('ajax/show_compare_configs.html')
- left = form.getvalue('left')
- right = form.getvalue('right')
+ from jinja2 import Environment, FileSystemLoader
- if form.getvalue('service') == 'nginx':
- return_files=funct.get_files(funct.get_config_var('configs', 'nginx_save_configs_dir'), 'conf')
- else:
- return_files=funct.get_files()
+ env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
+ template = env.get_template('ajax/show_compare_configs.html')
+ left = form.getvalue('left')
+ right = form.getvalue('right')
- template = template.render(serv=serv, right=right, left=left, return_files=return_files)
- print(template)
+ if form.getvalue('service') == 'nginx':
+ return_files = funct.get_files(funct.get_config_var('configs', 'nginx_save_configs_dir'), 'conf')
+ else:
+ return_files = funct.get_files()
+ template = template.render(serv=serv, right=right, left=left, return_files=return_files)
+ print(template)
if serv is not None and form.getvalue('right') is not None:
- from jinja2 import Environment, FileSystemLoader
- left = form.getvalue('left')
- right = form.getvalue('right')
- if form.getvalue('service') == 'nginx':
- configs_dir = funct.get_config_var('configs', 'nginx_save_configs_dir')
- else:
- configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
- cmd='diff -ub %s%s %s%s' % (configs_dir, left, configs_dir, right)
- env = Environment(loader=FileSystemLoader('templates/'), autoescape=True, extensions=["jinja2.ext.loopcontrols", "jinja2.ext.do"])
- template = env.get_template('ajax/compare.html')
+ from jinja2 import Environment, FileSystemLoader
- output, stderr = funct.subprocess_execute(cmd)
- template = template.render(stdout=output)
+ left = form.getvalue('left')
+ right = form.getvalue('right')
+ if form.getvalue('service') == 'nginx':
+ configs_dir = funct.get_config_var('configs', 'nginx_save_configs_dir')
+ else:
+ configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
+ cmd = 'diff -ub %s%s %s%s' % (configs_dir, left, configs_dir, right)
+ env = Environment(loader=FileSystemLoader('templates/'), autoescape=True,
+ extensions=["jinja2.ext.loopcontrols", "jinja2.ext.do"])
+ template = env.get_template('ajax/compare.html')
- print(template)
- print(stderr)
+ output, stderr = funct.subprocess_execute(cmd)
+ template = template.render(stdout=output)
+ print(template)
+ print(stderr)
if serv is not None and act == "configShow":
- if form.getvalue('service') == 'keepalived':
- configs_dir = funct.get_config_var('configs', 'kp_save_configs_dir')
- cfg = '.conf'
- elif form.getvalue('service') == 'nginx':
- configs_dir = funct.get_config_var('configs', 'nginx_save_configs_dir')
- cfg = '.conf'
- else:
- configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
- cfg = '.cfg'
+ if form.getvalue('service') == 'keepalived':
+ configs_dir = funct.get_config_var('configs', 'kp_save_configs_dir')
+ cfg = '.conf'
+ elif form.getvalue('service') == 'nginx':
+ configs_dir = funct.get_config_var('configs', 'nginx_save_configs_dir')
+ cfg = '.conf'
+ else:
+ configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
+ cfg = '.cfg'
- if form.getvalue('configver') is None:
- cfg = configs_dir + serv + "-" + funct.get_data('config') + cfg
- if form.getvalue('service') == 'nginx':
- funct.get_config(serv, cfg, nginx=1)
- else:
- funct.get_config(serv, cfg)
- else:
- cfg = configs_dir + form.getvalue('configver')
- try:
- conf = open(cfg, "r")
- except IOError:
- print('Can\'t read config file
')
+ if form.getvalue('configver') is None:
+ cfg = configs_dir + serv + "-" + funct.get_data('config') + cfg
+ if form.getvalue('service') == 'nginx':
+ funct.get_config(serv, cfg, nginx=1)
+ else:
+ funct.get_config(serv, cfg)
+ else:
+ cfg = configs_dir + form.getvalue('configver')
+ try:
+ conf = open(cfg, "r")
+ except IOError:
+ print('Can\'t read config file
')
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True, trim_blocks=True, lstrip_blocks=True, extensions=["jinja2.ext.loopcontrols", "jinja2.ext.do"])
- template = env.get_template('config_show.html')
+ from jinja2 import Environment, FileSystemLoader
- template = template.render(conf=conf,
- serv=serv,
- configver=form.getvalue('configver'),
- role=funct.is_admin(level=3),
- service=form.getvalue('service'))
- print(template)
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True, trim_blocks=True, lstrip_blocks=True,
+ extensions=["jinja2.ext.loopcontrols", "jinja2.ext.do"])
+ template = env.get_template('config_show.html')
- if form.getvalue('configver') is None:
- os.system("/bin/rm -f " + cfg)
+ template = template.render(conf=conf,
+ serv=serv,
+ configver=form.getvalue('configver'),
+ role=funct.is_admin(level=3),
+ service=form.getvalue('service'))
+ print(template)
+ if form.getvalue('configver') is None:
+ os.system("/bin/rm -f " + cfg)
if form.getvalue('master'):
- master = form.getvalue('master')
- slave = form.getvalue('slave')
- ETH = form.getvalue('interface')
- IP = form.getvalue('vrrpip')
- syn_flood = form.getvalue('syn_flood')
- script = "install_keepalived.sh"
- fullpath = funct.get_config_var('main', 'fullpath')
- proxy = sql.get_setting('proxy')
- ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(master)
+ master = form.getvalue('master')
+ slave = form.getvalue('slave')
+ ETH = form.getvalue('interface')
+ IP = form.getvalue('vrrpip')
+ syn_flood = form.getvalue('syn_flood')
+ script = "install_keepalived.sh"
+ fullpath = funct.get_config_var('main', 'fullpath')
+ proxy = sql.get_setting('proxy')
+ ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(master)
- if ssh_enable == 0:
- ssh_key_name = ''
+ if ssh_enable == 0:
+ ssh_key_name = ''
- servers = sql.select_servers(server=master)
- for server in servers:
- ssh_port = str(server[10])
+ servers = sql.select_servers(server=master)
+ for server in servers:
+ ssh_port = str(server[10])
- if proxy is not None and proxy != '' and proxy != 'None':
- proxy_serv = proxy
- else:
- proxy_serv = ''
+ if proxy is not None and proxy != '' and proxy != 'None':
+ proxy_serv = proxy
+ else:
+ proxy_serv = ''
- os.system("cp scripts/%s ." % script)
+ os.system("cp scripts/%s ." % script)
- if form.getvalue('hap') == "1":
- funct.install_haproxy(master)
- funct.install_haproxy(slave)
+ if form.getvalue('hap') == "1":
+ funct.install_haproxy(master)
+ funct.install_haproxy(slave)
- if form.getvalue('nginx') == "1":
- funct.install_nginx(master)
- funct.install_nginx(slave)
+ if form.getvalue('nginx') == "1":
+ funct.install_nginx(master)
+ funct.install_nginx(slave)
- commands = [ "chmod +x "+script +" && ./"+script +" PROXY=" + proxy_serv+" SSH_PORT="+ssh_port+
- " ETH="+ETH+" IP="+str(IP)+" MASTER=MASTER"+" SYN_FLOOD="+syn_flood+" HOST="+str(master)+
- " USER="+str(ssh_user_name)+" PASS="+str(ssh_user_password)+" KEY="+str(ssh_key_name) ]
+ commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " SSH_PORT=" + ssh_port +
+ " ETH=" + ETH + " IP=" + str(IP) + " MASTER=MASTER" + " SYN_FLOOD=" + syn_flood + " HOST=" + str(
+ master) +
+ " USER=" + str(ssh_user_name) + " PASS=" + str(ssh_user_password) + " KEY=" + str(ssh_key_name)]
- output, error = funct.subprocess_execute(commands[0])
+ output, error = funct.subprocess_execute(commands[0])
- if error:
- funct.logging('localhost', error, haproxywi=1)
- print('error: '+error)
- else:
- for l in output:
- if "msg" in l or "FAILED" in l:
- try:
- l = l.split(':')[1]
- l = l.split('"')[1]
- print(l+"
")
- break
- except:
- print(output)
- break
- else:
- print('success: Master Keepalived was installed
')
+ if error:
+ funct.logging('localhost', error, haproxywi=1)
+ print('error: ' + error)
+ else:
+ for l in output:
+ if "msg" in l or "FAILED" in l:
+ try:
+ l = l.split(':')[1]
+ l = l.split('"')[1]
+ print(l + "
")
+ break
+ except:
+ print(output)
+ break
+ else:
+ print('success: Master Keepalived was installed
')
- ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(slave)
+ ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(slave)
- if ssh_enable == 0:
- ssh_key_name = ''
+ if ssh_enable == 0:
+ ssh_key_name = ''
- servers = sql.select_servers(server=slave)
- for server in servers:
- ssh_port = str(server[10])
+ servers = sql.select_servers(server=slave)
+ for server in servers:
+ ssh_port = str(server[10])
- commands = [ "chmod +x "+script +" && ./"+script +" PROXY=" +proxy_serv+" SSH_PORT="+ssh_port+
- " ETH="+ETH+" IP="+IP+" MASTER=BACKUP"+" HOST="+str(slave)+
- " USER="+str(ssh_user_name)+" PASS="+str(ssh_user_password)+" KEY="+str(ssh_key_name) ]
+ commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv + " SSH_PORT=" + ssh_port +
+ " ETH=" + ETH + " IP=" + IP + " MASTER=BACKUP" + " HOST=" + str(slave) +
+ " USER=" + str(ssh_user_name) + " PASS=" + str(ssh_user_password) + " KEY=" + str(ssh_key_name)]
- output, error = funct.subprocess_execute(commands[0])
+ output, error = funct.subprocess_execute(commands[0])
- if error:
- funct.logging('localhost', error, haproxywi=1)
- print('error: '+error)
- else:
- for l in output:
- if "msg" in l or "FAILED" in l:
- try:
- l = l.split(':')[1]
- l = l.split('"')[1]
- print(l+"
")
- break
- except:
- print(output)
- break
- else:
- print('success: Slave Keepalived was installed
')
-
- os.system("rm -f %s" % script)
- sql.update_server_master(master, slave)
- sql.update_keepalived(master)
- sql.update_keepalived(slave)
+ if error:
+ funct.logging('localhost', error, haproxywi=1)
+ print('error: ' + error)
+ else:
+ for l in output:
+ if "msg" in l or "FAILED" in l:
+ try:
+ l = l.split(':')[1]
+ l = l.split('"')[1]
+ print(l + "
")
+ break
+ except:
+ print(output)
+ break
+ else:
+ print('success: Slave Keepalived was installed
')
+ os.system("rm -f %s" % script)
+ sql.update_server_master(master, slave)
+ sql.update_keepalived(master)
+ sql.update_keepalived(slave)
if form.getvalue('masteradd'):
- master = form.getvalue('masteradd')
- slave = form.getvalue('slaveadd')
- ETH = form.getvalue('interfaceadd')
- IP = form.getvalue('vrrpipadd')
- kp = form.getvalue('kp')
- script = "install_keepalived.sh"
- proxy = sql.get_setting('proxy')
- ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(master)
+ master = form.getvalue('masteradd')
+ slave = form.getvalue('slaveadd')
+ ETH = form.getvalue('interfaceadd')
+ IP = form.getvalue('vrrpipadd')
+ kp = form.getvalue('kp')
+ script = "install_keepalived.sh"
+ proxy = sql.get_setting('proxy')
+ ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(master)
- if ssh_enable == 0:
- ssh_key_name = ''
+ if ssh_enable == 0:
+ ssh_key_name = ''
- if proxy is not None and proxy != '' and proxy != 'None':
- proxy_serv = proxy
- else:
- proxy_serv = ''
+ if proxy is not None and proxy != '' and proxy != 'None':
+ proxy_serv = proxy
+ else:
+ proxy_serv = ''
- os.system("cp scripts/%s ." % script)
+ os.system("cp scripts/%s ." % script)
- servers = sql.select_servers(server=master)
- for server in servers:
- ssh_port = str(server[10])
+ servers = sql.select_servers(server=master)
+ for server in servers:
+ ssh_port = str(server[10])
- commands = [ "chmod +x "+script +" && ./"+script +" PROXY=" + proxy_serv+
- " SSH_PORT="+ssh_port+
- " ETH="+ETH+" IP="+str(IP)+" MASTER=MASTER"+" RESTART="+kp+" ADD_VRRP=1 HOST="+str(master)+
- " USER="+str(ssh_user_name)+" PASS="+str(ssh_user_password)+" KEY="+str(ssh_key_name) ]
+ commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
+ " SSH_PORT=" + ssh_port + " ETH=" + ETH +
+ " IP=" + str(IP) + " MASTER=MASTER" + " RESTART=" + kp + " ADD_VRRP=1 HOST=" + str(master) +
+ " USER=" + str(ssh_user_name) + " PASS=" + str(ssh_user_password) + " KEY=" + str(ssh_key_name)]
- output, error = funct.subprocess_execute(commands[0])
+ output, error = funct.subprocess_execute(commands[0])
- if error:
- funct.logging('localhost', error, haproxywi=1)
- print('error: '+error)
- else:
- for l in output:
- if "msg" in l or "FAILED" in l:
- try:
- l = l.split(':')[1]
- l = l.split('"')[1]
- print(l+"
")
- break
- except:
- print(output)
- break
- else:
- print('success: Master VRRP address was added
')
+ if error:
+ funct.logging('localhost', error, haproxywi=1)
+ print('error: ' + error)
+ else:
+ for l in output:
+ if "msg" in l or "FAILED" in l:
+ try:
+ l = l.split(':')[1]
+ l = l.split('"')[1]
+ print(l + "
")
+ break
+ except:
+ print(output)
+ break
+ else:
+ print('success: Master VRRP address was added
')
+ ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(slave)
- ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(slave)
+ if ssh_enable == 0:
+ ssh_key_name = ''
- if ssh_enable == 0:
- ssh_key_name = ''
+ servers = sql.select_servers(server=slave)
+ for server in servers:
+ ssh_port = str(server[10])
- servers = sql.select_servers(server=slave)
- for server in servers:
- ssh_port = str(server[10])
+ commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
+ " SSH_PORT=" + ssh_port + " ETH=" + ETH +
+ " IP=" + str(IP) + " MASTER=BACKUP" + " RESTART=" + kp + " ADD_VRRP=1 HOST=" + str(slave) +
+ " USER=" + str(ssh_user_name) + " PASS=" + str(ssh_user_password) + " KEY=" + str(ssh_key_name)]
- commands = ["chmod +x "+script +" && ./"+script +" PROXY=" + proxy_serv+
- " SSH_PORT="+ssh_port+
- " ETH="+ETH+" IP="+str(IP)+" MASTER=BACKUP"+" RESTART="+kp+" ADD_VRRP=1 HOST="+str(slave)+
- " USER="+str(ssh_user_name)+" PASS="+str(ssh_user_password)+" KEY="+str(ssh_key_name)]
+ output, error = funct.subprocess_execute(commands[0])
- output, error = funct.subprocess_execute(commands[0])
-
- if error:
- funct.logging('localhost', error, haproxywi=1)
- print('error: '+error)
- else:
- for l in output:
- if "msg" in l or "FAILED" in l:
- try:
- l = l.split(':')[1]
- l = l.split('"')[1]
- print(l+"
")
- break
- except:
- print(output)
- break
- else:
- print('success: Slave VRRP address was added
')
-
- os.system("rm -f %s" % script)
+ if error:
+ funct.logging('localhost', error, haproxywi=1)
+ print('error: ' + error)
+ else:
+ for l in output:
+ if "msg" in l or "FAILED" in l:
+ try:
+ l = l.split(':')[1]
+ l = l.split('"')[1]
+ print(l + "
")
+ break
+ except:
+ print(output)
+ break
+ else:
+ print('success: Slave VRRP address was added
')
+ os.system("rm -f %s" % script)
if form.getvalue('install_grafana'):
- script = "install_grafana.sh"
- proxy = sql.get_setting('proxy')
+ script = "install_grafana.sh"
+ proxy = sql.get_setting('proxy')
- os.system("cp scripts/%s ." % script)
+ os.system("cp scripts/%s ." % script)
- if proxy is not None and proxy != '' and proxy != 'None':
- proxy_serv = proxy
- else:
- proxy_serv = ''
+ if proxy is not None and proxy != '' and proxy != 'None':
+ proxy_serv = proxy
+ else:
+ proxy_serv = ''
- commands = [ "chmod +x "+script +" && ./"+script +" PROXY=" + proxy_serv ]
+ commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv]
- output, error = funct.subprocess_execute(commands[0])
+ output, error = funct.subprocess_execute(commands[0])
- if error:
- funct.logging('localhost', error, haproxywi=1)
- import socket
- print('success: Grafana and Prometheus servers were installed. You can find Grafana on http://'+socket.gethostname()+':3000
')
- else:
- for l in output:
- if "FAILED" in l:
- try:
- l = l.split(':')[1]
- l = l.split('"')[1]
- print(l+"
")
- break
- except:
- print(output)
- break
- else:
- import socket
- print('success: Grafana and Prometheus servers were installed. You can find Grafana on http://'+socket.gethostname()+':3000
')
+ if error:
+ funct.logging('localhost', error, haproxywi=1)
+ import socket
- os.system("rm -f %s" % script)
+ print(
+ 'success: Grafana and Prometheus servers were installed. You can find Grafana on http://' + socket.gethostname() + ':3000
')
+ else:
+ for l in output:
+ if "FAILED" in l:
+ try:
+ l = l.split(':')[1]
+ l = l.split('"')[1]
+ print(l + "
")
+ break
+ except:
+ print(output)
+ break
+ else:
+ import socket
+ print(
+ 'success: Grafana and Prometheus servers were installed. You can find Grafana on http://' + socket.gethostname() + ':3000
')
+
+ os.system("rm -f %s" % script)
if form.getvalue('haproxy_exp_install'):
- serv = form.getvalue('haproxy_exp_install')
- script = "install_haproxy_exporter.sh"
- stats_port = sql.get_setting('stats_port')
- server_state_file = sql.get_setting('server_state_file')
- stats_user = sql.get_setting('stats_user')
- stats_password = sql.get_setting('stats_password')
- stat_page = sql.get_setting('stats_page')
- proxy = sql.get_setting('proxy')
- ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(serv)
+ serv = form.getvalue('haproxy_exp_install')
+ script = "install_haproxy_exporter.sh"
+ stats_port = sql.get_setting('stats_port')
+ server_state_file = sql.get_setting('server_state_file')
+ stats_user = sql.get_setting('stats_user')
+ stats_password = sql.get_setting('stats_password')
+ stat_page = sql.get_setting('stats_page')
+ proxy = sql.get_setting('proxy')
+ ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(serv)
- if ssh_enable == 0:
- ssh_key_name = ''
+ if ssh_enable == 0:
+ ssh_key_name = ''
- servers = sql.select_servers(server=serv)
- for server in servers:
- ssh_port = str(server[10])
+ servers = sql.select_servers(server=serv)
+ for server in servers:
+ ssh_port = str(server[10])
- os.system("cp scripts/%s ." % script)
+ os.system("cp scripts/%s ." % script)
- if proxy is not None and proxy != '' and proxy != 'None':
- proxy_serv = proxy
- else:
- proxy_serv = ''
+ if proxy is not None and proxy != '' and proxy != 'None':
+ proxy_serv = proxy
+ else:
+ proxy_serv = ''
- commands = ["chmod +x "+script +" && ./"+script +" PROXY=" + proxy_serv+
- " STAT_PORT="+stats_port+" STAT_FILE="+server_state_file+
- " SSH_PORT="+ssh_port+" STAT_PAGE="+stat_page+
- " STATS_USER="+stats_user+" STATS_PASS="+stats_password+" HOST="+serv+
- " USER="+ssh_user_name+" PASS="+ssh_user_password+" KEY="+ssh_key_name]
+ commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
+ " STAT_PORT=" + stats_port + " STAT_FILE=" + server_state_file +
+ " SSH_PORT=" + ssh_port + " STAT_PAGE=" + stat_page +
+ " STATS_USER=" + stats_user + " STATS_PASS=" + stats_password + " HOST=" + serv +
+ " USER=" + ssh_user_name + " PASS=" + ssh_user_password + " KEY=" + ssh_key_name]
- output, error = funct.subprocess_execute(commands[0])
+ output, error = funct.subprocess_execute(commands[0])
- if error:
- funct.logging('localhost', error, haproxywi=1)
- print('error: '+error)
- else:
- for l in output:
- if "msg" in l or "FAILED" in l:
- try:
- l = l.split(':')[1]
- l = l.split('"')[1]
- print(l+"
")
- break
- except:
- print(output)
- break
- else:
- print('success: HAProxy exporter was installed
')
-
- os.system("rm -f %s" % script)
+ if error:
+ funct.logging('localhost', error, haproxywi=1)
+ print('error: ' + error)
+ else:
+ for l in output:
+ if "msg" in l or "FAILED" in l:
+ try:
+ l = l.split(':')[1]
+ l = l.split('"')[1]
+ print(l + "
")
+ break
+ except:
+ print(output)
+ break
+ else:
+ print('success: HAProxy exporter was installed
')
+ os.system("rm -f %s" % script)
if form.getvalue('nginx_exp_install'):
- serv = form.getvalue('nginx_exp_install')
- script = "install_nginx_exporter.sh"
- stats_user = sql.get_setting('nginx_stats_user')
- stats_password = sql.get_setting('nginx_stats_password')
- stats_port = sql.get_setting('nginx_stats_port')
- stats_page = sql.get_setting('nginx_stats_page')
- proxy = sql.get_setting('proxy')
- ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(serv)
+ serv = form.getvalue('nginx_exp_install')
+ script = "install_nginx_exporter.sh"
+ stats_user = sql.get_setting('nginx_stats_user')
+ stats_password = sql.get_setting('nginx_stats_password')
+ stats_port = sql.get_setting('nginx_stats_port')
+ stats_page = sql.get_setting('nginx_stats_page')
+ proxy = sql.get_setting('proxy')
+ ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(serv)
- if ssh_enable == 0:
- ssh_key_name = ''
+ if ssh_enable == 0:
+ ssh_key_name = ''
- servers = sql.select_servers(server=serv)
- for server in servers:
- ssh_port = str(server[10])
+ servers = sql.select_servers(server=serv)
+ for server in servers:
+ ssh_port = str(server[10])
- os.system("cp scripts/%s ." % script)
+ os.system("cp scripts/%s ." % script)
- if proxy is not None and proxy != '' and proxy != 'None':
- proxy_serv = proxy
- else:
- proxy_serv = ''
+ if proxy is not None and proxy != '' and proxy != 'None':
+ proxy_serv = proxy
+ else:
+ proxy_serv = ''
- commands = [ "chmod +x "+script +" && ./"+script +" PROXY=" + proxy_serv+
- " STAT_PORT="+stats_port+" SSH_PORT="+ssh_port+" STAT_PAGE="+stats_page+
- " STATS_USER="+stats_user+" STATS_PASS="+stats_password+" HOST="+serv+
- " USER="+ssh_user_name+" PASS="+ssh_user_password+" KEY="+ssh_key_name ]
+ commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
+ " STAT_PORT=" + stats_port + " SSH_PORT=" + ssh_port + " STAT_PAGE=" + stats_page +
+ " STATS_USER=" + stats_user + " STATS_PASS=" + stats_password + " HOST=" + serv +
+ " USER=" + ssh_user_name + " PASS=" + ssh_user_password + " KEY=" + ssh_key_name]
- output, error = funct.subprocess_execute(commands[0])
+ output, error = funct.subprocess_execute(commands[0])
- if error:
- funct.logging('localhost', error, haproxywi=1)
- print('error: '+error)
- else:
- for l in output:
- if "msg" in l or "FAILED" in l:
- try:
- l = l.split(':')[1]
- l = l.split('"')[1]
- print(l+"
")
- break
- except:
- print(output)
- break
- else:
- print('success: Nginx exporter was installed
')
-
- os.system("rm -f %s" % script)
+ if error:
+ funct.logging('localhost', error, haproxywi=1)
+ print('error: ' + error)
+ else:
+ for l in output:
+ if "msg" in l or "FAILED" in l:
+ try:
+ l = l.split(':')[1]
+ l = l.split('"')[1]
+ print(l + "
")
+ break
+ except:
+ print(output)
+ break
+ else:
+ print('success: Nginx exporter was installed
')
+ os.system("rm -f %s" % script)
if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupupdate'):
- serv = form.getvalue('server')
- rpath = form.getvalue('rpath')
- time = form.getvalue('time')
- type = form.getvalue('type')
- rserver = form.getvalue('rserver')
- cred = form.getvalue('cred')
- deljob = form.getvalue('deljob')
- update = form.getvalue('backupupdate')
- description = form.getvalue('description')
- script = "backup.sh"
- ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path('localhost', id=int(cred))
+ serv = form.getvalue('server')
+ rpath = form.getvalue('rpath')
+ time = form.getvalue('time')
+ type = form.getvalue('type')
+ rserver = form.getvalue('rserver')
+ cred = form.getvalue('cred')
+ deljob = form.getvalue('deljob')
+ update = form.getvalue('backupupdate')
+ description = form.getvalue('description')
+ script = "backup.sh"
+ ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path('localhost', id=int(cred))
- if deljob:
- time = ''
- rpath = ''
- type = ''
- elif update:
- deljob = ''
- else:
- deljob = ''
- if sql.check_exists_backup(serv):
- print('warning: Backup job for %s already exists' % serv)
- sys.exit()
+ if deljob:
+ time = ''
+ rpath = ''
+ type = ''
+ elif update:
+ deljob = ''
+ else:
+ deljob = ''
+ if sql.check_exists_backup(serv):
+ print('warning: Backup job for %s already exists' % serv)
+ sys.exit()
- servers = sql.select_servers(server=serv)
- for server in servers:
- ssh_port = str(server[10])
+ servers = sql.select_servers(server=serv)
+ for server in servers:
+ ssh_port = str(server[10])
- os.system("cp scripts/%s ." % script)
+ os.system("cp scripts/%s ." % script)
- commands = ["chmod +x "+script +" && ./"+script +" HOST="+rserver+" SERVER="+serv+" TYPE="+type+
- " SSH_PORT="+ssh_port+
- " TIME="+time+" RPATH="+rpath+" DELJOB="+deljob+" USER="+str(ssh_user_name)+" KEY="+str(ssh_key_name)]
+ commands = ["chmod +x " + script + " && ./" + script + " HOST=" + rserver + " SERVER=" + serv + " TYPE=" + type +
+ " SSH_PORT=" + ssh_port + " TIME=" + time +
+ " RPATH=" + rpath + " DELJOB=" + deljob + " USER=" + str(ssh_user_name) + " KEY=" + str(ssh_key_name)]
- output, error = funct.subprocess_execute(commands[0])
+ output, error = funct.subprocess_execute(commands[0])
- if error:
- funct.logging('backup', error, haproxywi=1)
- print('error: '+error)
- else:
- for l in output:
- if "msg" in l or "FAILED" in l:
- try:
- l = l.split(':')[1]
- l = l.split('"')[1]
- print('error: '+l+"
")
- break
- except:
- print('error: ' + output)
- break
- else:
- if not deljob and not update:
- if sql.insert_backup_job(serv, rserver, rpath, type, time, cred, description):
- #import http.cookies
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
- template = env.get_template('new_backup.html')
- template = template.render(backups=sql.select_backups(server=serv, rserver=rserver), sshs=sql.select_ssh())
- print(template)
- print('success: Backup job has created')
- funct.logging('backup ', ' has created a new backup job for server '+serv , haproxywi=1, login=1)
- else:
- print('error: Cannot add job into DB')
- elif deljob:
- sql.delete_backups(deljob)
- print('Ok')
- funct.logging('backup ', ' has deleted a backup job for server '+serv, haproxywi=1, login=1)
- elif update:
- sql.update_backup(serv, rserver, rpath, type, time, cred, description, update)
- print('Ok')
- funct.logging('backup ', ' has updated a backup job for server '+serv, haproxywi=1, login=1)
+ if error:
+ funct.logging('backup', error, haproxywi=1)
+ print('error: ' + error)
+ else:
+ for l in output:
+ if "msg" in l or "FAILED" in l:
+ try:
+ l = l.split(':')[1]
+ l = l.split('"')[1]
+ print('error: ' + l + "
")
+ break
+ except:
+ print('error: ' + output)
+ break
+ else:
+ if not deljob and not update:
+ if sql.insert_backup_job(serv, rserver, rpath, type, time, cred, description):
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
+ template = env.get_template('new_backup.html')
+ template = template.render(backups=sql.select_backups(server=serv, rserver=rserver),
+ sshs=sql.select_ssh())
+ print(template)
+ print('success: Backup job has created')
+ funct.logging('backup ', ' has created a new backup job for server ' + serv, haproxywi=1, login=1)
+ else:
+ print('error: Cannot add job into DB')
+ elif deljob:
+ sql.delete_backups(deljob)
+ print('Ok')
+ funct.logging('backup ', ' has deleted a backup job for server ' + serv, haproxywi=1, login=1)
+ elif update:
+ sql.update_backup(serv, rserver, rpath, type, time, cred, description, update)
+ print('Ok')
+ funct.logging('backup ', ' has updated a backup job for server ' + serv, haproxywi=1, login=1)
if form.getvalue('install_nginx'):
- funct.install_nginx(form.getvalue('install_nginx'))
-
+ funct.install_nginx(form.getvalue('install_nginx'))
if form.getvalue('haproxyaddserv'):
- funct.install_haproxy(form.getvalue('haproxyaddserv'), syn_flood=form.getvalue('syn_flood'), hapver=form.getvalue('hapver'))
-
+ funct.install_haproxy(form.getvalue('haproxyaddserv'), syn_flood=form.getvalue('syn_flood'),
+ hapver=form.getvalue('hapver'))
if form.getvalue('installwaf'):
- funct.waf_install(form.getvalue('installwaf'))
-
+ funct.waf_install(form.getvalue('installwaf'))
if form.getvalue('update_haproxy_wi'):
- service = form.getvalue('service')
- services = ['checker_haproxy', 'haproxy-wi', 'keep_alive', 'smon', 'metrics_haproxy']
- if service not in services:
- print('error: '+service+' is not part of HAProxy-WI')
- sys.exit()
- funct.update_haproxy_wi(service)
-
+ service = form.getvalue('service')
+ services = ['checker_haproxy', 'haproxy-wi', 'keep_alive', 'smon', 'metrics_haproxy']
+ if service not in services:
+ print('error: ' + service + ' is not part of HAProxy-WI')
+ sys.exit()
+ funct.update_haproxy_wi(service)
if form.getvalue('metrics_waf'):
- sql.update_waf_metrics_enable(form.getvalue('metrics_waf'), form.getvalue('enable'))
-
+ sql.update_waf_metrics_enable(form.getvalue('metrics_waf'), form.getvalue('enable'))
if form.getvalue('table_metrics'):
- import http.cookies
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
- template = env.get_template('table_metrics.html')
+ import http.cookies
+ from jinja2 import Environment, FileSystemLoader
- cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
- user_id = cookie.get('uuid')
- table_stat = sql.select_table_metrics(user_id.value)
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
+ template = env.get_template('table_metrics.html')
- template = template.render(table_stat=sql.select_table_metrics(user_id.value))
- print(template)
+ cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
+ user_id = cookie.get('uuid')
+ table_stat = sql.select_table_metrics(user_id.value)
+ template = template.render(table_stat=sql.select_table_metrics(user_id.value))
+ print(template)
if form.getvalue('metrics_hapwi_ram'):
- ip = form.getvalue('ip')
- metrics = {}
- metrics['chartData'] = {}
- rams = ''
+ ip = form.getvalue('ip')
+ metrics = {'chartData': {}}
+ rams = ''
- if ip == '1':
- cmd = "free -m |grep Mem |awk '{print $3,$4,$5,$6,$7}'"
- metric, error = funct.subprocess_execute(cmd)
- else:
- commands = ["free -m |grep Mem |awk '{print $3,$4,$5,$6,$7}'"]
- metric, error = funct.subprocess_execute(commands[0])
+ if ip == '1':
+ cmd = "free -m |grep Mem |awk '{print $3,$4,$5,$6,$7}'"
+ metric, error = funct.subprocess_execute(cmd)
+ else:
+ commands = ["free -m |grep Mem |awk '{print $3,$4,$5,$6,$7}'"]
+ metric, error = funct.subprocess_execute(commands[0])
- for i in metric:
- rams = i
+ for i in metric:
+ rams = i
- metrics['chartData']['rams'] = rams
+ metrics['chartData']['rams'] = rams
- import json
- print(json.dumps(metrics))
+ import json
+ print(json.dumps(metrics))
if form.getvalue('metrics_hapwi_cpu'):
- ip = form.getvalue('ip')
- metrics = {}
- metrics['chartData'] = {}
- cpus = ''
+ ip = form.getvalue('ip')
+ metrics = {'chartData': {}}
+ cpus = ''
- if ip == '1':
- cmd = "top -b -n 1 |grep Cpu |awk -F':' '{print $2}'|awk -F' ' 'BEGIN{ORS=\" \";} { for (i=1;i<=NF;i+=2) print $i}'"
- metric, error = funct.subprocess_execute(cmd)
- else:
- commands = ["top -b -n 1 |grep Cpu |awk -F':' '{print $2}'|awk -F' ' 'BEGIN{ORS=\" \";} { for (i=1;i<=NF;i+=2) print $i}'"]
- metric, error = funct.subprocess_execute(commands[0])
+ if ip == '1':
+ cmd = "top -b -n 1 |grep Cpu |awk -F':' '{print $2}'|awk -F' ' 'BEGIN{ORS=\" \";} { for (i=1;i<=NF;i+=2) print $i}'"
+ metric, error = funct.subprocess_execute(cmd)
+ else:
+ commands = [
+ "top -b -n 1 |grep Cpu |awk -F':' '{print $2}'|awk -F' ' 'BEGIN{ORS=\" \";} { for (i=1;i<=NF;i+=2) print $i}'"]
+ metric, error = funct.subprocess_execute(commands[0])
- for i in metric:
- cpus = i
+ for i in metric:
+ cpus = i
- metrics['chartData']['cpus'] = cpus
+ metrics['chartData']['cpus'] = cpus
- import json
- print(json.dumps(metrics))
+ import json
+ print(json.dumps(metrics))
if form.getvalue('new_metrics'):
- serv = form.getvalue('server')
- metric = sql.select_metrics(serv)
- metrics = {}
- metrics['chartData'] = {}
- metrics['chartData']['labels'] = {}
- labels = ''
- curr_con = ''
- curr_ssl_con = ''
- sess_rate = ''
+ serv = form.getvalue('server')
+ metric = sql.select_metrics(serv)
+ metrics = {'chartData': {}}
+ metrics['chartData']['labels'] = {}
+ labels = ''
+ curr_con = ''
+ curr_ssl_con = ''
+ sess_rate = ''
- for i in metric:
- label = str(i[5])
- label = label.split(' ')[1]
- labels += label+','
- curr_con += str(i[1])+','
- curr_ssl_con += str(i[2])+','
- sess_rate += str(i[3])+','
- server = str(i[0])
+ for i in metric:
+ label = str(i[5])
+ label = label.split(' ')[1]
+ labels += label + ','
+ curr_con += str(i[1]) + ','
+ curr_ssl_con += str(i[2]) + ','
+ sess_rate += str(i[3]) + ','
+ server = str(i[0])
- metrics['chartData']['labels'] = labels
- metrics['chartData']['curr_con'] = curr_con
- metrics['chartData']['curr_ssl_con'] = curr_ssl_con
- metrics['chartData']['sess_rate'] = sess_rate
- metrics['chartData']['server'] = server
+ metrics['chartData']['labels'] = labels
+ metrics['chartData']['curr_con'] = curr_con
+ metrics['chartData']['curr_ssl_con'] = curr_ssl_con
+ metrics['chartData']['sess_rate'] = sess_rate
+ metrics['chartData']['server'] = server
- import json
- print(json.dumps(metrics))
+ import json
+ print(json.dumps(metrics))
if form.getvalue('new_waf_metrics'):
- serv = form.getvalue('server')
- metric = sql.select_waf_metrics(serv)
- metrics = {}
- metrics['chartData'] = {}
- metrics['chartData']['labels'] = {}
- labels = ''
- curr_con = ''
+ serv = form.getvalue('server')
+ metric = sql.select_waf_metrics(serv)
+ metrics = {'chartData': {}}
+ metrics['chartData']['labels'] = {}
+ labels = ''
+ curr_con = ''
- for i in metric:
- label = str(i[2])
- label = label.split(' ')[1]
- labels += label+','
- curr_con += str(i[1])+','
+ for i in metric:
+ label = str(i[2])
+ label = label.split(' ')[1]
+ labels += label + ','
+ curr_con += str(i[1]) + ','
- metrics['chartData']['labels'] = labels
- metrics['chartData']['curr_con'] = curr_con
- metrics['chartData']['server'] = serv
+ metrics['chartData']['labels'] = labels
+ metrics['chartData']['curr_con'] = curr_con
+ metrics['chartData']['server'] = serv
- import json
- print(json.dumps(metrics))
+ import json
+ print(json.dumps(metrics))
if form.getvalue('get_hap_v'):
- output = funct.check_haproxy_version(serv)
- print(output)
-
+ output = funct.check_haproxy_version(serv)
+ print(output)
if form.getvalue('get_nginx_v'):
- cmd = ['/usr/sbin/nginx -v']
- print(funct.ssh_command(serv, cmd))
-
+ cmd = ['/usr/sbin/nginx -v']
+ print(funct.ssh_command(serv, cmd))
if form.getvalue('get_exporter_v'):
- print(funct.check_service(serv, form.getvalue('get_exporter_v')))
-
+ print(funct.check_service(serv, form.getvalue('get_exporter_v')))
if form.getvalue('bwlists'):
- list = os.path.dirname(os.getcwd())+"/"+sql.get_setting('lists_path')+"/"+form.getvalue('group')+"/"+form.getvalue('color')+"/"+form.getvalue('bwlists')
- try:
- file = open(list, "r")
- file_read = file.read()
- file.close
- print(file_read)
- except IOError:
- print('error: Cat\'n read '+form.getvalue('color')+' list , ')
-
+ list = os.path.dirname(os.getcwd()) + "/" + sql.get_setting('lists_path') + "/" + form.getvalue(
+ 'group') + "/" + form.getvalue('color') + "/" + form.getvalue('bwlists')
+ try:
+ file = open(list, "r")
+ file_read = file.read()
+ file.close
+ print(file_read)
+ except IOError:
+ print('error: Cat\'n read ' + form.getvalue('color') + ' list , ')
if form.getvalue('bwlists_create'):
- color = form.getvalue('color')
- list_name = form.getvalue('bwlists_create').split('.')[0]
- list_name += '.lst'
- list = os.path.dirname(os.getcwd())+"/"+sql.get_setting('lists_path')+"/"+form.getvalue('group')+"/"+color+"/"+list_name
- try:
- open(list, 'a').close()
- print(color)
- try:
- funct.logging(server[1], 'has created '+color+' list '+list_name, haproxywi=1, login=1)
- except:
- pass
- except IOError as e:
- print('error: Cat\'n create new '+color+' list. %s , ' % e)
-
+ color = form.getvalue('color')
+ list_name = form.getvalue('bwlists_create').split('.')[0]
+ list_name += '.lst'
+ list = os.path.dirname(os.getcwd()) + "/" + sql.get_setting('lists_path') + "/" + form.getvalue(
+ 'group') + "/" + color + "/" + list_name
+ try:
+ open(list, 'a').close()
+ print(color)
+ try:
+ funct.logging(server[1], 'has created ' + color + ' list ' + list_name, haproxywi=1, login=1)
+ except:
+ pass
+ except IOError as e:
+ print('error: Cat\'n create new ' + color + ' list. %s , ' % e)
if form.getvalue('bwlists_save'):
- color = form.getvalue('color')
- bwlists_save = form.getvalue('bwlists_save')
- list = os.path.dirname(os.getcwd())+"/"+sql.get_setting('lists_path')+"/"+form.getvalue('group')+"/"+color+"/"+bwlists_save
- try:
- with open(list, "w") as file:
- file.write(form.getvalue('bwlists_content'))
- except IOError as e:
- print('error: Cat\'n save '+color+' list. %s , ' % e)
+ color = form.getvalue('color')
+ bwlists_save = form.getvalue('bwlists_save')
+ list = os.path.dirname(os.getcwd()) + "/" + sql.get_setting('lists_path') + "/" + form.getvalue(
+ 'group') + "/" + color + "/" + bwlists_save
+ try:
+ with open(list, "w") as file:
+ file.write(form.getvalue('bwlists_content'))
+ except IOError as e:
+ print('error: Cat\'n save ' + color + ' list. %s , ' % e)
- path = sql.get_setting('haproxy_dir')+"/"+color
- servers = []
+ path = sql.get_setting('haproxy_dir') + "/" + color
+ servers = []
- if serv != 'all':
- servers.append(serv)
+ if serv != 'all':
+ servers.append(serv)
- MASTERS = sql.is_master(serv)
- for master in MASTERS:
- if master[0] != None:
- servers.append(master[0])
- else:
- server = sql.get_dick_permit()
- for s in server:
- servers.append(s[2])
+ MASTERS = sql.is_master(serv)
+ for master in MASTERS:
+ if master[0] != None:
+ servers.append(master[0])
+ else:
+ server = sql.get_dick_permit()
+ for s in server:
+ servers.append(s[2])
- for serv in servers:
- funct.ssh_command(serv, ["sudo mkdir "+path])
- funct.ssh_command(serv, ["sudo chown $(whoami) "+path])
- error = funct.upload(serv, path+"/"+bwlists_save, list, dir='fullpath')
- if error:
- print('error: Upload fail: %s , ' % error)
- else:
- print('success: Edited '+color+' list was uploaded to '+serv+' , ')
- try:
- funct.logging(serv, 'has edited '+color+' list '+bwlists_save, haproxywi=1, login=1)
- except:
- pass
+ for serv in servers:
+ funct.ssh_command(serv, ["sudo mkdir " + path])
+ funct.ssh_command(serv, ["sudo chown $(whoami) " + path])
+ error = funct.upload(serv, path + "/" + bwlists_save, list, dir='fullpath')
+ if error:
+ print('error: Upload fail: %s , ' % error)
+ else:
+ print('success: Edited ' + color + ' list was uploaded to ' + serv + ' , ')
+ try:
+ funct.logging(serv, 'has edited ' + color + ' list ' + bwlists_save, haproxywi=1, login=1)
+ except:
+ pass
- haproxy_enterprise = sql.get_setting('haproxy_enterprise')
- if haproxy_enterprise == '1':
- haproxy_service_name = "hapee-2.0-lb"
- else:
- haproxy_service_name = "haproxy"
-
- if form.getvalue('bwlists_restart') == 'restart':
- funct.ssh_command(serv, ["sudo systemctl restart "+haproxy_service_name])
- elif form.getvalue('bwlists_restart') == 'reload':
- funct.ssh_command(serv, ["sudo systemctl reload "+haproxy_service_name])
+ haproxy_enterprise = sql.get_setting('haproxy_enterprise')
+ if haproxy_enterprise == '1':
+ haproxy_service_name = "hapee-2.0-lb"
+ else:
+ haproxy_service_name = "haproxy"
+ if form.getvalue('bwlists_restart') == 'restart':
+ funct.ssh_command(serv, ["sudo systemctl restart " + haproxy_service_name])
+ elif form.getvalue('bwlists_restart') == 'reload':
+ funct.ssh_command(serv, ["sudo systemctl reload " + haproxy_service_name])
if form.getvalue('get_lists'):
- list = os.path.dirname(os.getcwd())+"/"+sql.get_setting('lists_path')+"/"+form.getvalue('group')+"/"+form.getvalue('color')
- lists = funct.get_files(dir=list, format="lst")
- for list in lists:
- print(list)
-
+ list = os.path.dirname(os.getcwd()) + "/" + sql.get_setting('lists_path') + "/" + form.getvalue(
+ 'group') + "/" + form.getvalue('color')
+ lists = funct.get_files(dir=list, format="lst")
+ for list in lists:
+ print(list)
if form.getvalue('get_ldap_email'):
- username = form.getvalue('get_ldap_email')
- import ldap
+ username = form.getvalue('get_ldap_email')
+ import ldap
- server = sql.get_setting('ldap_server')
- port = sql.get_setting('ldap_port')
- user = sql.get_setting('ldap_user')
- password = sql.get_setting('ldap_password')
- ldap_base = sql.get_setting('ldap_base')
- domain = sql.get_setting('ldap_domain')
- ldap_search_field = sql.get_setting('ldap_search_field')
- ldap_class_search = sql.get_setting('ldap_class_search')
- ldap_user_attribute = sql.get_setting('ldap_user_attribute')
+ server = sql.get_setting('ldap_server')
+ port = sql.get_setting('ldap_port')
+ user = sql.get_setting('ldap_user')
+ password = sql.get_setting('ldap_password')
+ ldap_base = sql.get_setting('ldap_base')
+ domain = sql.get_setting('ldap_domain')
+ ldap_search_field = sql.get_setting('ldap_search_field')
+ ldap_class_search = sql.get_setting('ldap_class_search')
+ ldap_user_attribute = sql.get_setting('ldap_user_attribute')
- l = ldap.initialize(server+':'+port)
- try:
- l.protocol_version = ldap.VERSION3
- l.set_option(ldap.OPT_REFERRALS, 0)
+ l = ldap.initialize(server + ':' + port)
+ try:
+ l.protocol_version = ldap.VERSION3
+ l.set_option(ldap.OPT_REFERRALS, 0)
- bind = l.simple_bind_s(user, password)
+ bind = l.simple_bind_s(user, password)
- criteria = "(&(objectClass="+ldap_class_search+")("+ldap_user_attribute+"="+username+"))"
- attributes = [ldap_search_field]
- result = l.search_s(ldap_base, ldap.SCOPE_SUBTREE, criteria, attributes)
-
- results = [entry for dn, entry in result if isinstance(entry, dict)]
- try:
- print('["'+results[0][ldap_search_field][0].decode("utf-8")+'","'+domain+'"]')
- except:
- print('error: user not found')
- finally:
- l.unbind()
+ criteria = "(&(objectClass=" + ldap_class_search + ")(" + ldap_user_attribute + "=" + username + "))"
+ attributes = [ldap_search_field]
+ result = l.search_s(ldap_base, ldap.SCOPE_SUBTREE, criteria, attributes)
+ results = [entry for dn, entry in result if isinstance(entry, dict)]
+ try:
+ print('["' + results[0][ldap_search_field][0].decode("utf-8") + '","' + domain + '"]')
+ except:
+ print('error: user not found')
+ finally:
+ l.unbind()
if form.getvalue('change_waf_mode'):
- waf_mode = form.getvalue('change_waf_mode')
- server_hostname = form.getvalue('server_hostname')
- haproxy_dir = sql.get_setting('haproxy_dir')
- serv = sql.select_server_by_name(server_hostname)
- commands = [ "sudo sed -i 's/^SecRuleEngine.*/SecRuleEngine %s/' %s/waf/modsecurity.conf " % (waf_mode, haproxy_dir) ]
- funct.ssh_command(serv, commands)
- funct.logging(serv, 'Was changed WAF mod to '+waf_mode, haproxywi=1, login=1)
-
+ waf_mode = form.getvalue('change_waf_mode')
+ server_hostname = form.getvalue('server_hostname')
+ haproxy_dir = sql.get_setting('haproxy_dir')
+ serv = sql.select_server_by_name(server_hostname)
+ commands = ["sudo sed -i 's/^SecRuleEngine.*/SecRuleEngine %s/' %s/waf/modsecurity.conf " % (waf_mode, haproxy_dir)]
+ funct.ssh_command(serv, commands)
+ funct.logging(serv, 'Was changed WAF mod to ' + waf_mode, haproxywi=1, login=1)
error_mess = 'error: All fields must be completed'
-
if form.getvalue('newuser') is not None:
- email = form.getvalue('newemail')
- password = form.getvalue('newpassword')
- role = form.getvalue('newrole')
- new_user = form.getvalue('newusername')
- page = form.getvalue('page')
- activeuser = form.getvalue('activeuser')
- group = form.getvalue('newgroupuser')
- role_id = sql.get_role_id_by_name(role)
+ email = form.getvalue('newemail')
+ password = form.getvalue('newpassword')
+ role = form.getvalue('newrole')
+ new_user = form.getvalue('newusername')
+ page = form.getvalue('page')
+ activeuser = form.getvalue('activeuser')
+ group = form.getvalue('newgroupuser')
+ role_id = sql.get_role_id_by_name(role)
- if funct.check_user_group():
- if funct.is_admin(level=role_id):
- if sql.add_user(new_user, email, password, role, activeuser):
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
- template = env.get_template('ajax/new_user.html')
+ if funct.check_user_group():
+ if funct.is_admin(level=role_id):
+ if sql.add_user(new_user, email, password, role, activeuser):
+ from jinja2 import Environment, FileSystemLoader
- template = template.render(users=sql.select_users(user=new_user),
- groups=sql.select_groups(),
- page=page,
- roles=sql.select_roles(),
- adding=1)
- print(template)
- funct.logging('a new user '+new_user, ' has created ', haproxywi=1, login=1)
- else:
- funct.logging(new_user, ' tried to privilege escalation', haproxywi=1, login=1)
+ env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
+ template = env.get_template('ajax/new_user.html')
+ template = template.render(users=sql.select_users(user=new_user),
+ groups=sql.select_groups(),
+ page=page,
+ roles=sql.select_roles(),
+ adding=1)
+ print(template)
+ funct.logging('a new user ' + new_user, ' has created ', haproxywi=1, login=1)
+ else:
+ funct.logging(new_user, ' tried to privilege escalation', haproxywi=1, login=1)
if form.getvalue('userdel') is not None:
- userdel = form.getvalue('userdel')
- user = sql.select_users(id=userdel)
- for u in user:
- username = u[1]
- if sql.delete_user(userdel):
- sql.delete_user_groups(userdel)
- funct.logging(username, ' has deleted user ', haproxywi=1, login=1)
- print("Ok")
-
+ userdel = form.getvalue('userdel')
+ user = sql.select_users(id=userdel)
+ for u in user:
+ username = u[1]
+ if sql.delete_user(userdel):
+ sql.delete_user_groups(userdel)
+ funct.logging(username, ' has deleted user ', haproxywi=1, login=1)
+ print("Ok")
if form.getvalue('updateuser') is not None:
- email = form.getvalue('email')
- role = form.getvalue('role')
- new_user = form.getvalue('updateuser')
- id = form.getvalue('id')
- activeuser = form.getvalue('activeuser')
- group = form.getvalue('usergroup')
- role_id = sql.get_role_id_by_name(role)
-
- if funct.check_user_group():
- if funct.is_admin(level=role_id):
- sql.update_user(new_user, email, role, id, activeuser)
- funct.logging(new_user, ' has updated user ', haproxywi=1, login=1)
- else:
- funct.logging(new_user, ' tried to privilege escalation', haproxywi=1, login=1)
+ email = form.getvalue('email')
+ role = form.getvalue('role')
+ new_user = form.getvalue('updateuser')
+ id = form.getvalue('id')
+ activeuser = form.getvalue('activeuser')
+ group = form.getvalue('usergroup')
+ role_id = sql.get_role_id_by_name(role)
+ if funct.check_user_group():
+ if funct.is_admin(level=role_id):
+ sql.update_user(new_user, email, role, id, activeuser)
+ funct.logging(new_user, ' has updated user ', haproxywi=1, login=1)
+ else:
+ funct.logging(new_user, ' tried to privilege escalation', haproxywi=1, login=1)
if form.getvalue('updatepassowrd') is not None:
- password = form.getvalue('updatepassowrd')
- id = form.getvalue('id')
- user = sql.select_users(id=id)
- for u in user:
- username = u[1]
- sql.update_user_password(password, id)
- funct.logging('user '+username, ' has changed password ', haproxywi=1, login=1)
- print("Ok")
-
+ password = form.getvalue('updatepassowrd')
+ id = form.getvalue('id')
+ user = sql.select_users(id=id)
+ for u in user:
+ username = u[1]
+ sql.update_user_password(password, id)
+ funct.logging('user ' + username, ' has changed password ', haproxywi=1, login=1)
+ print("Ok")
if form.getvalue('newserver') is not None:
- hostname = form.getvalue('servername')
- ip = form.getvalue('newip')
- group = form.getvalue('newservergroup')
- typeip = form.getvalue('typeip')
- haproxy = form.getvalue('haproxy')
- nginx = form.getvalue('nginx')
- enable = form.getvalue('enable')
- master = form.getvalue('slave')
- cred = form.getvalue('cred')
- page = form.getvalue('page')
- page = page.split("#")[0]
- port = form.getvalue('newport')
- desc = form.getvalue('desc')
+ hostname = form.getvalue('servername')
+ ip = form.getvalue('newip')
+ group = form.getvalue('newservergroup')
+ typeip = form.getvalue('typeip')
+ haproxy = form.getvalue('haproxy')
+ nginx = form.getvalue('nginx')
+ enable = form.getvalue('enable')
+ master = form.getvalue('slave')
+ cred = form.getvalue('cred')
+ page = form.getvalue('page')
+ page = page.split("#")[0]
+ port = form.getvalue('newport')
+ desc = form.getvalue('desc')
- if sql.add_server(hostname, ip, group, typeip, enable, master, cred, port, desc, haproxy, nginx):
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
- template = env.get_template('ajax/new_server.html')
+ if sql.add_server(hostname, ip, group, typeip, enable, master, cred, port, desc, haproxy, nginx):
+ from jinja2 import Environment, FileSystemLoader
- template = template.render(groups = sql.select_groups(),
- servers = sql.select_servers(server=ip),
- roles = sql.select_roles(),
- masters = sql.select_servers(get_master_servers=1),
- sshs = sql.select_ssh(group=group),
- page = page,
- adding = 1)
- print(template)
- funct.logging('a new server '+hostname, ' has created ', haproxywi=1, login=1)
+ env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
+ template = env.get_template('ajax/new_server.html')
+ template = template.render(groups=sql.select_groups(),
+ servers=sql.select_servers(server=ip),
+ roles=sql.select_roles(),
+ masters=sql.select_servers(get_master_servers=1),
+ sshs=sql.select_ssh(group=group),
+ page=page,
+ adding=1)
+ print(template)
+ funct.logging('a new server ' + hostname, ' has created ', haproxywi=1, login=1)
if form.getvalue('updatehapwiserver') is not None:
- id = form.getvalue('updatehapwiserver')
- active = form.getvalue('active')
- name = form.getvalue('name')
- alert = form.getvalue('alert_en')
- metrics = form.getvalue('metrics')
- sql.update_hapwi_server(id, alert, metrics, active)
- funct.logging('the server '+name, ' has updated ', haproxywi=1, login=1)
-
+ id = form.getvalue('updatehapwiserver')
+ active = form.getvalue('active')
+ name = form.getvalue('name')
+ alert = form.getvalue('alert_en')
+ metrics = form.getvalue('metrics')
+ sql.update_hapwi_server(id, alert, metrics, active)
+ funct.logging('the server ' + name, ' has updated ', haproxywi=1, login=1)
if form.getvalue('updateserver') is not None:
- name = form.getvalue('updateserver')
- group = form.getvalue('servergroup')
- typeip = form.getvalue('typeip')
- haproxy = form.getvalue('haproxy')
- nginx = form.getvalue('nginx')
- enable = form.getvalue('enable')
- master = form.getvalue('slave')
- id = form.getvalue('id')
- cred = form.getvalue('cred')
- port = form.getvalue('port')
- desc = form.getvalue('desc')
-
- if name is None or port is None:
- print(error_mess)
- else:
- sql.update_server(name, group, typeip, enable, master, id, cred, port, desc, haproxy, nginx)
- funct.logging('the server '+name, ' has updated ', haproxywi=1, login=1)
+ name = form.getvalue('updateserver')
+ group = form.getvalue('servergroup')
+ typeip = form.getvalue('typeip')
+ haproxy = form.getvalue('haproxy')
+ nginx = form.getvalue('nginx')
+ enable = form.getvalue('enable')
+ master = form.getvalue('slave')
+ id = form.getvalue('id')
+ cred = form.getvalue('cred')
+ port = form.getvalue('port')
+ desc = form.getvalue('desc')
+ if name is None or port is None:
+ print(error_mess)
+ else:
+ sql.update_server(name, group, typeip, enable, master, id, cred, port, desc, haproxy, nginx)
+ funct.logging('the server ' + name, ' has updated ', haproxywi=1, login=1)
if form.getvalue('serverdel') is not None:
- serverdel = form.getvalue('serverdel')
- server = sql.select_servers(id=serverdel)
- for s in server:
- hostname = s[1]
- ip = s[2]
- if sql.check_exists_backup(ip):
- print('warning: Delete the backup first ')
- sys.exit()
- if sql.delete_server(serverdel):
- sql.delete_waf_server(serverdel)
- print("Ok")
- funct.logging(hostname, ' has deleted server with ', haproxywi=1, login=1)
-
+ serverdel = form.getvalue('serverdel')
+ server = sql.select_servers(id=serverdel)
+ for s in server:
+ hostname = s[1]
+ ip = s[2]
+ if sql.check_exists_backup(ip):
+ print('warning: Delete the backup first ')
+ sys.exit()
+ if sql.delete_server(serverdel):
+ sql.delete_waf_server(serverdel)
+ print("Ok")
+ funct.logging(hostname, ' has deleted server with ', haproxywi=1, login=1)
if form.getvalue('newgroup') is not None:
- newgroup = form.getvalue('groupname')
- desc = form.getvalue('newdesc')
- if newgroup is None:
- print(error_mess)
- else:
- if sql.add_group(newgroup, desc):
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax/'), autoescape=True)
- template = env.get_template('/new_group.html')
+ newgroup = form.getvalue('groupname')
+ desc = form.getvalue('newdesc')
+ if newgroup is None:
+ print(error_mess)
+ else:
+ if sql.add_group(newgroup, desc):
+ from jinja2 import Environment, FileSystemLoader
- output_from_parsed_template = template.render(groups = sql.select_groups(group=newgroup))
- print(output_from_parsed_template)
- funct.logging('a new group '+newgroup, ' created ', haproxywi=1, login=1)
+ env = Environment(loader=FileSystemLoader('templates/ajax/'), autoescape=True)
+ template = env.get_template('/new_group.html')
+ output_from_parsed_template = template.render(groups=sql.select_groups(group=newgroup))
+ print(output_from_parsed_template)
+ funct.logging('a new group ' + newgroup, ' created ', haproxywi=1, login=1)
if form.getvalue('groupdel') is not None:
- groupdel = form.getvalue('groupdel')
- group = sql.select_groups(id=groupdel)
- for g in group:
- groupname = g[1]
- if sql.delete_group(groupdel):
- print("Ok")
- funct.logging(groupname, ' has deleted group ', haproxywi=1, login=1)
-
+ groupdel = form.getvalue('groupdel')
+ group = sql.select_groups(id=groupdel)
+ for g in group:
+ groupname = g[1]
+ if sql.delete_group(groupdel):
+ print("Ok")
+ funct.logging(groupname, ' has deleted group ', haproxywi=1, login=1)
if form.getvalue('updategroup') is not None:
- name = form.getvalue('updategroup')
- descript = form.getvalue('descript')
- id = form.getvalue('id')
- if name is None:
- print(error_mess)
- else:
- group = sql.select_groups(id=id)
- for g in group:
- groupname = g[1]
- sql.update_group(name, descript, id)
- funct.logging('the group '+groupname, ' has update ', haproxywi=1, login=1)
-
+ name = form.getvalue('updategroup')
+ descript = form.getvalue('descript')
+ id = form.getvalue('id')
+ if name is None:
+ print(error_mess)
+ else:
+ group = sql.select_groups(id=id)
+ for g in group:
+ groupname = g[1]
+ sql.update_group(name, descript, id)
+ funct.logging('the group ' + groupname, ' has update ', haproxywi=1, login=1)
if form.getvalue('new_ssh'):
- user_group = funct.get_user_group()
- name = form.getvalue('new_ssh')
- name = name + '_' + user_group
- enable = form.getvalue('ssh_enable')
- group = form.getvalue('new_group')
- username = form.getvalue('ssh_user')
- password = form.getvalue('ssh_pass')
- page = form.getvalue('page')
- page = page.split("#")[0]
+ user_group = funct.get_user_group()
+ name = form.getvalue('new_ssh')
+ name = name + '_' + user_group
+ enable = form.getvalue('ssh_enable')
+ group = form.getvalue('new_group')
+ username = form.getvalue('ssh_user')
+ password = form.getvalue('ssh_pass')
+ page = form.getvalue('page')
+ page = page.split("#")[0]
- if username is None or name is None:
- print(error_mess)
- else:
- if sql.insert_new_ssh(name, enable, group, username, password):
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
- template = env.get_template('/new_ssh.html')
- output_from_parsed_template = template.render(groups=sql.select_groups(), sshs=sql.select_ssh(name=name),page=page)
- print(output_from_parsed_template)
- funct.logging(name, ' has created a new SSH credentials ', haproxywi=1, login=1)
+ if username is None or name is None:
+ print(error_mess)
+ else:
+ if sql.insert_new_ssh(name, enable, group, username, password):
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
+ template = env.get_template('/new_ssh.html')
+ output_from_parsed_template = template.render(groups=sql.select_groups(), sshs=sql.select_ssh(name=name),
+ page=page)
+ print(output_from_parsed_template)
+ funct.logging(name, ' has created a new SSH credentials ', haproxywi=1, login=1)
if form.getvalue('sshdel') is not None:
- fullpath = funct.get_config_var('main', 'fullpath')
- sshdel = form.getvalue('sshdel')
+ fullpath = funct.get_config_var('main', 'fullpath')
+ sshdel = form.getvalue('sshdel')
- for sshs in sql.select_ssh(id=sshdel):
- ssh_enable = sshs[2]
- name = sshs[1]
- ssh_key_name = fullpath+'/keys/%s.pem' % sshs[1]
-
- if ssh_enable == 1:
- cmd = 'rm -f %s' % ssh_key_name
- try:
- funct.subprocess_execute(cmd)
- except:
- pass
- if sql.delete_ssh(sshdel):
- print("Ok")
- funct.logging(name, ' has deleted the SSH credentials ', haproxywi=1, login=1)
+ for sshs in sql.select_ssh(id=sshdel):
+ ssh_enable = sshs[2]
+ name = sshs[1]
+ ssh_key_name = fullpath + '/keys/%s.pem' % sshs[1]
+ if ssh_enable == 1:
+ cmd = 'rm -f %s' % ssh_key_name
+ try:
+ funct.subprocess_execute(cmd)
+ except:
+ pass
+ if sql.delete_ssh(sshdel):
+ print("Ok")
+ funct.logging(name, ' has deleted the SSH credentials ', haproxywi=1, login=1)
if form.getvalue('updatessh'):
- id = form.getvalue('id')
- name = form.getvalue('name')
- enable = form.getvalue('ssh_enable')
- group = form.getvalue('group')
- username = form.getvalue('ssh_user')
- password = form.getvalue('ssh_pass')
+ id = form.getvalue('id')
+ name = form.getvalue('name')
+ enable = form.getvalue('ssh_enable')
+ group = form.getvalue('group')
+ username = form.getvalue('ssh_user')
+ password = form.getvalue('ssh_pass')
- if username is None:
- print(error_mess)
- else:
+ if username is None:
+ print(error_mess)
+ else:
- fullpath = funct.get_config_var('main', 'fullpath')
+ fullpath = funct.get_config_var('main', 'fullpath')
- for sshs in sql.select_ssh(id=id):
- ssh_enable = sshs[2]
- ssh_key_name = fullpath+'/keys/%s.pem' % sshs[1]
- new_ssh_key_name = fullpath+'/keys/%s.pem' % name
-
- if ssh_enable == 1:
- cmd = 'mv %s %s' % (ssh_key_name, new_ssh_key_name)
- cmd1 = 'chmod 600 %s' % new_ssh_key_name
- try:
- funct.subprocess_execute(cmd)
- funct.subprocess_execute(cmd1)
- except:
- pass
- sql.update_ssh(id, name, enable, group, username, password)
- funct.logging('the SSH '+name, ' has updated credentials ', haproxywi=1, login=1)
+ for sshs in sql.select_ssh(id=id):
+ ssh_enable = sshs[2]
+ ssh_key_name = fullpath + '/keys/%s.pem' % sshs[1]
+ new_ssh_key_name = fullpath + '/keys/%s.pem' % name
+ if ssh_enable == 1:
+ cmd = 'mv %s %s' % (ssh_key_name, new_ssh_key_name)
+ cmd1 = 'chmod 600 %s' % new_ssh_key_name
+ try:
+ funct.subprocess_execute(cmd)
+ funct.subprocess_execute(cmd1)
+ except:
+ pass
+ sql.update_ssh(id, name, enable, group, username, password)
+ funct.logging('the SSH ' + name, ' has updated credentials ', haproxywi=1, login=1)
if form.getvalue('ssh_cert'):
- user_group = funct.get_user_group()
- name = form.getvalue('name')
- name = name + '_' + user_group
+ user_group = funct.get_user_group()
+ name = form.getvalue('name')
+ name = name + '_' + user_group
- if not os.path.exists(os.getcwd()+'/keys/'):
- os.makedirs(os.getcwd()+'/keys/')
+ if not os.path.exists(os.getcwd() + '/keys/'):
+ os.makedirs(os.getcwd() + '/keys/')
- ssh_keys = os.path.dirname(os.getcwd())+'/keys/'+name+'.pem'
+ ssh_keys = os.path.dirname(os.getcwd()) + '/keys/' + name + '.pem'
- try:
- with open(ssh_keys, "w") as conf:
- conf.write(form.getvalue('ssh_cert'))
- except IOError:
- print('error: Can\'t save ssh keys file. Check ssh keys path in config')
- else:
- print('success: Ssh key was save into: %s ' % ssh_keys)
+ try:
+ with open(ssh_keys, "w") as conf:
+ conf.write(form.getvalue('ssh_cert'))
+ except IOError:
+ print('error: Can\'t save ssh keys file. Check ssh keys path in config')
+ else:
+ print('success: Ssh key was save into: %s ' % ssh_keys)
- try:
- cmd = 'chmod 600 %s' % ssh_keys
- funct.subprocess_execute(cmd)
- except IOError as e:
- funct.logging('localhost', e.args[0], haproxywi=1)
-
- funct.logging("localhost", " upload a new SSH cert %s" % ssh_keys, haproxywi=1, login=1)
+ try:
+ cmd = 'chmod 600 %s' % ssh_keys
+ funct.subprocess_execute(cmd)
+ except IOError as e:
+ funct.logging('localhost', e.args[0], haproxywi=1)
+ funct.logging("localhost", " upload a new SSH cert %s" % ssh_keys, haproxywi=1, login=1)
if form.getvalue('newtelegram'):
- token = form.getvalue('newtelegram')
- channel = form.getvalue('chanel')
- group = form.getvalue('telegramgroup')
- page = form.getvalue('page')
- page = page.split("#")[0]
+ token = form.getvalue('newtelegram')
+ channel = form.getvalue('chanel')
+ group = form.getvalue('telegramgroup')
+ page = form.getvalue('page')
+ page = page.split("#")[0]
- if token is None or channel is None or group is None:
- print(error_mess)
- else:
- if sql.insert_new_telegram(token, channel, group):
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
- template = env.get_template('/new_telegram.html')
- output_from_parsed_template = template.render(groups = sql.select_groups(), telegrams = sql.select_telegram(token=token),page=page)
- print(output_from_parsed_template)
- funct.logging(channel, ' has created a new Telegram channel ', haproxywi=1, login=1)
+ if token is None or channel is None or group is None:
+ print(error_mess)
+ else:
+ if sql.insert_new_telegram(token, channel, group):
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
+ template = env.get_template('/new_telegram.html')
+ output_from_parsed_template = template.render(groups=sql.select_groups(),
+ telegrams=sql.select_telegram(token=token), page=page)
+ print(output_from_parsed_template)
+ funct.logging(channel, ' has created a new Telegram channel ', haproxywi=1, login=1)
if form.getvalue('telegramdel') is not None:
- telegramdel = form.getvalue('telegramdel')
- telegram = sql.select_telegram(id=telegramdel)
- for t in telegram:
- telegram_name = t[1]
- if sql.delete_telegram(telegramdel):
- print("Ok")
- funct.logging(telegram_name, ' has deleted the Telegram channel ', haproxywi=1, login=1)
-
+ telegramdel = form.getvalue('telegramdel')
+ telegram = sql.select_telegram(id=telegramdel)
+ for t in telegram:
+ telegram_name = t[1]
+ if sql.delete_telegram(telegramdel):
+ print("Ok")
+ funct.logging(telegram_name, ' has deleted the Telegram channel ', haproxywi=1, login=1)
if form.getvalue('updatetoken') is not None:
- token = form.getvalue('updatetoken')
- channel = form.getvalue('updategchanel')
- group = form.getvalue('updatetelegramgroup')
- id = form.getvalue('id')
- if token is None or channel is None or group is None:
- print(error_mess)
- else:
- sql.update_telegram(token, channel, group, id)
- funct.logging('group '+group, ' telegram token has updated channel: '+channel, haproxywi=1, login=1)
-
+ token = form.getvalue('updatetoken')
+ channel = form.getvalue('updategchanel')
+ group = form.getvalue('updatetelegramgroup')
+ id = form.getvalue('id')
+ if token is None or channel is None or group is None:
+ print(error_mess)
+ else:
+ sql.update_telegram(token, channel, group, id)
+ funct.logging('group ' + group, ' telegram token has updated channel: ' + channel, haproxywi=1, login=1)
if form.getvalue('updatesettings') is not None:
- settings = form.getvalue('updatesettings')
- val = form.getvalue('val')
- if sql.update_setting(settings, val):
- funct.logging('value '+val, ' changed settings '+settings, haproxywi=1, login=1)
- print("Ok")
-
+ settings = form.getvalue('updatesettings')
+ val = form.getvalue('val')
+ if sql.update_setting(settings, val):
+ funct.logging('value ' + val, ' changed settings ' + settings, haproxywi=1, login=1)
+ print("Ok")
if form.getvalue('getusergroups'):
- id = form.getvalue('getusergroups')
- groups = []
- u_g = sql.select_user_groups(id=id)
- for g in u_g:
- groups.append(g[0])
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
- template = env.get_template('/show_user_groups.html')
- template = template.render(groups=sql.select_groups(), user_groups=groups,id=id)
- print(template)
+ id = form.getvalue('getusergroups')
+ groups = []
+ u_g = sql.select_user_groups(id=id)
+ for g in u_g:
+ groups.append(g[0])
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
+ template = env.get_template('/show_user_groups.html')
+ template = template.render(groups=sql.select_groups(), user_groups=groups, id=id)
+ print(template)
if form.getvalue('changeUserGroupId') is not None:
- id = form.getvalue('changeUserGroupId')
- groups = form.getvalue('changeUserGroups')
- user = form.getvalue('changeUserGroupsUser')
- if sql.delete_user_groups(id):
- for group in groups:
- if group[0] == ',':
- continue
- sql.update_user_groups(groups=group[0], id=id)
-
- funct.logging('localhost', ' has upgraded groups for user: '+user, haproxywi=1, login=1)
+ id = form.getvalue('changeUserGroupId')
+ groups = form.getvalue('changeUserGroups')
+ user = form.getvalue('changeUserGroupsUser')
+ if sql.delete_user_groups(id):
+ for group in groups:
+ if group[0] == ',':
+ continue
+ sql.update_user_groups(groups=group[0], id=id)
+ funct.logging('localhost', ' has upgraded groups for user: ' + user, haproxywi=1, login=1)
if form.getvalue('getcurrentusergroup') is not None:
- import http.cookies
- cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
- user_id = cookie.get('uuid')
- group = cookie.get('group')
- id = sql.get_user_id_by_uuid(user_id.value)
- groups = sql.select_user_groups_with_names(id=id)
+ import http.cookies
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
- template = env.get_template('/show_user_current_group.html')
- template = template.render(groups=groups, group=group.value,id=id)
- print(template)
+ cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
+ user_id = cookie.get('uuid')
+ group = cookie.get('group')
+ id = sql.get_user_id_by_uuid(user_id.value)
+ groups = sql.select_user_groups_with_names(id=id)
+ from jinja2 import Environment, FileSystemLoader
+
+ env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
+ template = env.get_template('/show_user_current_group.html')
+ template = template.render(groups=groups, group=group.value, id=id)
+ print(template)
if form.getvalue('newsmon') is not None:
- user_group = funct.get_user_group(id=1)
- server = form.getvalue('newsmon')
- port = form.getvalue('newsmonport')
- enable = form.getvalue('newsmonenable')
- http = form.getvalue('newsmonproto')
- uri = form.getvalue('newsmonuri')
- body = form.getvalue('newsmonbody')
- group = form.getvalue('newsmongroup')
- desc = form.getvalue('newsmondescription')
- telegram = form.getvalue('newsmontelegram')
+ user_group = funct.get_user_group(id=1)
+ server = form.getvalue('newsmon')
+ port = form.getvalue('newsmonport')
+ enable = form.getvalue('newsmonenable')
+ http = form.getvalue('newsmonproto')
+ uri = form.getvalue('newsmonuri')
+ body = form.getvalue('newsmonbody')
+ group = form.getvalue('newsmongroup')
+ desc = form.getvalue('newsmondescription')
+ telegram = form.getvalue('newsmontelegram')
- try:
- port = int(port)
- except:
- print('SMON error: port must number')
- sys.exit()
- if port > 65535 or port < 0:
- print('SMON error: port must be 0-65535')
- sys.exit()
- if port == 80 and http == 'https':
- print('SMON error: Cannot be HTTPS with 80 port')
- sys.exit()
- if port == 443 and http == 'http':
- print('SMON error: Cannot be HTTP with 443 port')
- sys.exit()
+ try:
+ port = int(port)
+ except:
+ print('SMON error: port must number')
+ sys.exit()
+ if port > 65535 or port < 0:
+ print('SMON error: port must be 0-65535')
+ sys.exit()
+ if port == 80 and http == 'https':
+ print('SMON error: Cannot be HTTPS with 80 port')
+ sys.exit()
+ if port == 443 and http == 'http':
+ print('SMON error: Cannot be HTTP with 443 port')
+ sys.exit()
- if sql.insert_smon(server, port, enable, http, uri, body, group, desc, telegram, user_group):
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates'), autoescape=True)
- template = env.get_template('ajax/show_new_smon.html')
- template = template.render(smon=sql.select_smon(user_group,ip=server,port=port,proto=http,uri=uri,body=body), telegrams=sql.get_user_telegram_by_group(user_group))
- print(template)
- funct.logging('SMON', ' Has been add a new server '+server+' to SMON ', haproxywi=1, login=1)
+ if sql.insert_smon(server, port, enable, http, uri, body, group, desc, telegram, user_group):
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader('templates'), autoescape=True)
+ template = env.get_template('ajax/show_new_smon.html')
+ template = template.render(
+ smon=sql.select_smon(user_group, ip=server, port=port, proto=http, uri=uri, body=body),
+ telegrams=sql.get_user_telegram_by_group(user_group))
+ print(template)
+ funct.logging('SMON', ' Has been add a new server ' + server + ' to SMON ', haproxywi=1, login=1)
if form.getvalue('smondel') is not None:
- user_group = funct.get_user_group(id=1)
- id = form.getvalue('smondel')
-
- if funct.check_user_group():
- if sql.delete_smon(id, user_group):
- print('Ok')
- funct.logging('SMON', ' Has been delete server from SMON ', haproxywi=1, login=1)
+ user_group = funct.get_user_group(id=1)
+ id = form.getvalue('smondel')
+ if funct.check_user_group():
+ if sql.delete_smon(id, user_group):
+ print('Ok')
+ funct.logging('SMON', ' Has been delete server from SMON ', haproxywi=1, login=1)
if form.getvalue('showsmon') is not None:
- user_group = funct.get_user_group(id=1)
- sort = form.getvalue('sort')
+ user_group = funct.get_user_group(id=1)
+ sort = form.getvalue('sort')
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates'), autoescape=True)
- template = env.get_template('ajax/smon_dashboard.html')
- template = template.render(smon=sql.smon_list(user_group),sort=sort)
- print(template)
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader('templates'), autoescape=True)
+ template = env.get_template('ajax/smon_dashboard.html')
+ template = template.render(smon=sql.smon_list(user_group), sort=sort)
+ print(template)
if form.getvalue('updateSmonIp') is not None:
- id = form.getvalue('id')
- ip = form.getvalue('updateSmonIp')
- port = form.getvalue('updateSmonPort')
- en = form.getvalue('updateSmonEn')
- http = form.getvalue('updateSmonHttp')
- body = form.getvalue('updateSmonBody')
- telegram = form.getvalue('updateSmonTelegram')
- group = form.getvalue('updateSmonGroup')
- desc = form.getvalue('updateSmonDesc')
+ id = form.getvalue('id')
+ ip = form.getvalue('updateSmonIp')
+ port = form.getvalue('updateSmonPort')
+ en = form.getvalue('updateSmonEn')
+ http = form.getvalue('updateSmonHttp')
+ body = form.getvalue('updateSmonBody')
+ telegram = form.getvalue('updateSmonTelegram')
+ group = form.getvalue('updateSmonGroup')
+ desc = form.getvalue('updateSmonDesc')
- try:
- port = int(port)
- except:
- print('SMON error: port must number')
- sys.exit()
- if port > 65535 or port < 0:
- print('SMON error: port must be 0-65535')
- sys.exit()
- if port == 80 and http == 'https':
- print('SMON error: Cannot be https with 80 port')
- sys.exit()
- if port == 443 and http == 'http':
- print('SMON error: Cannot be HTTP with 443 port')
- sys.exit()
-
- if sql.update_smon(id, ip, port, body, telegram, group, desc, en):
- print("Ok")
- funct.logging('SMON', ' Has been update the server '+ip+' to SMON ', haproxywi=1, login=1)
+ try:
+ port = int(port)
+ except:
+ print('SMON error: port must number')
+ sys.exit()
+ if port > 65535 or port < 0:
+ print('SMON error: port must be 0-65535')
+ sys.exit()
+ if port == 80 and http == 'https':
+ print('SMON error: Cannot be https with 80 port')
+ sys.exit()
+ if port == 443 and http == 'http':
+ print('SMON error: Cannot be HTTP with 443 port')
+ sys.exit()
+ if sql.update_smon(id, ip, port, body, telegram, group, desc, en):
+ print("Ok")
+ funct.logging('SMON', ' Has been update the server ' + ip + ' to SMON ', haproxywi=1, login=1)
if form.getvalue('showBytes') is not None:
- serv = form.getvalue('showBytes')
- port = sql.get_setting('haproxy_sock_port')
- bin_bout = []
- cmd = "echo 'show stat' |nc "+serv+" "+port+" |cut -d ',' -f 1-2,9|grep -E '[0-9]'|awk -F',' '{sum+=$3;}END{print sum;}'"
- bin, stderr = funct.subprocess_execute(cmd)
- bin_bout.append(bin[0])
- cmd = "echo 'show stat' |nc "+serv+" "+port+" |cut -d ',' -f 1-2,10|grep -E '[0-9]'|awk -F',' '{sum+=$3;}END{print sum;}'"
- bin, stderr = funct.subprocess_execute(cmd)
- bin_bout.append(bin[0])
- cmd = "echo 'show stat' |nc "+serv+" "+port+" |cut -d ',' -f 1-2,5|grep -E '[0-9]'|awk -F',' '{sum+=$3;}END{print sum;}'"
- bin, stderr = funct.subprocess_execute(cmd)
- bin_bout.append(bin[0])
- cmd = "echo 'show stat' |nc "+serv+" "+port+" |cut -d ',' -f 1-2,8|grep -E '[0-9]'|awk -F',' '{sum+=$3;}END{print sum;}'"
- bin, stderr = funct.subprocess_execute(cmd)
- bin_bout.append(bin[0])
+ serv = form.getvalue('showBytes')
+ port = sql.get_setting('haproxy_sock_port')
+ bin_bout = []
+ cmd = "echo 'show stat' |nc " + serv + " " + port + " |cut -d ',' -f 1-2,9|grep -E '[0-9]'|awk -F',' '{sum+=$3;}END{print sum;}'"
+ bin, stderr = funct.subprocess_execute(cmd)
+ bin_bout.append(bin[0])
+ cmd = "echo 'show stat' |nc " + serv + " " + port + " |cut -d ',' -f 1-2,10|grep -E '[0-9]'|awk -F',' '{sum+=$3;}END{print sum;}'"
+ bin, stderr = funct.subprocess_execute(cmd)
+ bin_bout.append(bin[0])
+ cmd = "echo 'show stat' |nc " + serv + " " + port + " |cut -d ',' -f 1-2,5|grep -E '[0-9]'|awk -F',' '{sum+=$3;}END{print sum;}'"
+ bin, stderr = funct.subprocess_execute(cmd)
+ bin_bout.append(bin[0])
+ cmd = "echo 'show stat' |nc " + serv + " " + port + " |cut -d ',' -f 1-2,8|grep -E '[0-9]'|awk -F',' '{sum+=$3;}END{print sum;}'"
+ bin, stderr = funct.subprocess_execute(cmd)
+ bin_bout.append(bin[0])
- from jinja2 import Environment, FileSystemLoader
- env = Environment(loader=FileSystemLoader('templates'), autoescape=True)
- template = env.get_template('ajax/bin_bout.html')
- template = template.render(bin_bout=bin_bout,serv=serv)
- print(template)
+ from jinja2 import Environment, FileSystemLoader
+ env = Environment(loader=FileSystemLoader('templates'), autoescape=True)
+ template = env.get_template('ajax/bin_bout.html')
+ template = template.render(bin_bout=bin_bout, serv=serv)
+ print(template)
if form.getvalue('alert_consumer'):
- try:
- user_group = funct.get_user_group(id=1)
- if funct.check_user_group():
- message = sql.select_alerts(user_group)
- for m in message:
- print(m[0]+ ': '+ m[1] +' date: '+m[2]+';')
- except:
- pass
-
+ try:
+ user_group = funct.get_user_group(id=1)
+ if funct.check_user_group():
+ message = sql.select_alerts(user_group)
+ for m in message:
+ print(m[0] + ': ' + m[1] + ' date: ' + m[2] + ';')
+ except:
+ pass
if form.getvalue('waf_rule_id'):
- enable = form.getvalue('waf_en')
- rule_id = form.getvalue('waf_rule_id')
- haproxy_path = sql.get_setting('haproxy_dir')
- rule_file = sql.select_waf_rule_by_id(rule_id)
- conf_file_path = haproxy_path + 'waf/modsecurity.conf'
- rule_file_path = 'Include ' + haproxy_path + '/waf/rules/' + rule_file
+ enable = form.getvalue('waf_en')
+ rule_id = form.getvalue('waf_rule_id')
+ haproxy_path = sql.get_setting('haproxy_dir')
+ rule_file = sql.select_waf_rule_by_id(rule_id)
+ conf_file_path = haproxy_path + 'waf/modsecurity.conf'
+ rule_file_path = 'Include ' + haproxy_path + '/waf/rules/' + rule_file
- if enable == '0':
- cmd = ["sudo sed -i 's!"+rule_file_path+"!#"+rule_file_path+"!' "+conf_file_path]
- en_for_log = 'disable'
- else:
- cmd = ["sudo sed -i 's!#"+rule_file_path+"!"+rule_file_path+"!' "+conf_file_path]
- en_for_log = 'enable'
+ if enable == '0':
+ cmd = ["sudo sed -i 's!" + rule_file_path + "!#" + rule_file_path + "!' " + conf_file_path]
+ en_for_log = 'disable'
+ else:
+ cmd = ["sudo sed -i 's!#" + rule_file_path + "!" + rule_file_path + "!' " + conf_file_path]
+ en_for_log = 'enable'
- try:
- funct.logging('WAF', ' Has been '+en_for_log+' WAF rule: '+rule_file+' for the server '+serv, haproxywi=1, login=1)
- except:
- pass
-
- print(funct.ssh_command(serv, cmd))
- sql.update_enable_waf_rules(rule_id, serv, enable)
+ try:
+ funct.logging('WAF', ' Has been ' + en_for_log + ' WAF rule: ' + rule_file + ' for the server ' + serv,
+ haproxywi=1, login=1)
+ except:
+ pass
+ print(funct.ssh_command(serv, cmd))
+ sql.update_enable_waf_rules(rule_id, serv, enable)
if form.getvalue('lets_domain'):
- serv = form.getvalue('serv')
- lets_domain = form.getvalue('lets_domain')
- lets_email = form.getvalue('lets_email')
- proxy = sql.get_setting('proxy')
- ssl_path = sql.get_setting('cert_path')
- script = "letsencrypt.sh"
- ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(serv)
+ serv = form.getvalue('serv')
+ lets_domain = form.getvalue('lets_domain')
+ lets_email = form.getvalue('lets_email')
+ proxy = sql.get_setting('proxy')
+ ssl_path = sql.get_setting('cert_path')
+ script = "letsencrypt.sh"
+ ssh_enable, ssh_user_name, ssh_user_password, ssh_key_name = funct.return_ssh_keys_path(serv)
- if ssh_enable == 0:
- ssh_key_name = ''
+ if ssh_enable == 0:
+ ssh_key_name = ''
- servers = sql.select_servers(server=serv)
- for server in servers:
- ssh_port = str(server[10])
+ servers = sql.select_servers(server=serv)
+ for server in servers:
+ ssh_port = str(server[10])
- os.system("cp scripts/%s ." % script)
+ os.system("cp scripts/%s ." % script)
- if proxy is not None and proxy != '' and proxy != 'None':
- proxy_serv = proxy
- else:
- proxy_serv = ''
+ if proxy is not None and proxy != '' and proxy != 'None':
+ proxy_serv = proxy
+ else:
+ proxy_serv = ''
- commands = ["chmod +x "+script +" && ./"+script +" PROXY=" + proxy_serv+
- " DOMAIN="+lets_domain+" EMAIL="+lets_email+" SSH_PORT="+ssh_port+" SSL_PATH="+ssl_path+
- " HOST="+serv+" USER="+ssh_user_name+" PASS="+ssh_user_password+" KEY="+ssh_key_name]
+ commands = ["chmod +x " + script + " && ./" + script + " PROXY=" + proxy_serv +
+ " DOMAIN=" + lets_domain + " EMAIL=" + lets_email + " SSH_PORT=" + ssh_port + " SSL_PATH=" + ssl_path +
+ " HOST=" + serv + " USER=" + ssh_user_name + " PASS=" + ssh_user_password + " KEY=" + ssh_key_name]
- output, error = funct.subprocess_execute(commands[0])
+ output, error = funct.subprocess_execute(commands[0])
- if error:
- funct.logging('localhost', error, haproxywi=1)
- print(error)
- else:
- for l in output:
- if "msg" in l or "FAILED" in l:
- try:
- l = l.split(':')[1]
- l = l.split('"')[1]
- print(l+"
")
- break
- except:
- print(output)
- break
- else:
- print('success: Certificate has been created')
+ if error:
+ funct.logging('localhost', error, haproxywi=1)
+ print(error)
+ else:
+ for l in output:
+ if "msg" in l or "FAILED" in l:
+ try:
+ l = l.split(':')[1]
+ l = l.split('"')[1]
+ print(l + "
")
+ break
+ except:
+ print(output)
+ break
+ else:
+ print('success: Certificate has been created')
- os.system("rm -f %s" % script)
\ No newline at end of file
+ os.system("rm -f %s" % script)
diff --git a/app/templates/hapservers.html b/app/templates/hapservers.html
index 58766408..4448865d 100644
--- a/app/templates/hapservers.html
+++ b/app/templates/hapservers.html
@@ -47,6 +47,17 @@
}
}
});
+ {% for s in services %}
+ {% if s.1 == '* is not installed' %}
+ {% if s.0 == 'checker_haproxy' %}
+ $(':regex(id, alert)').checkboxradio('disable');
+ {% elif s.0 == 'keep_alive' %}
+ $(':regex(id, active-)').checkboxradio('disable');
+ {% elif s.0 == 'metrics_haproxy' %}
+ $(':regex(id, metrics-)').checkboxradio('disable');
+ {% endif %}
+ {% endif %}
+ {% endfor %}
});
{% if serv %}
@@ -77,7 +88,7 @@
{% endif %}
-
+
{% if service == 'nginx' %}
@@ -165,19 +176,19 @@
{% if role <= 2 %}
{% set id = 'alert-' + s.8.0.0|string() %}
{% if s.8.0.8 == 1 %}
- {{ checkbox(id, title='Enable alerting', value='1', desc='Alert', checked='checked') }}
+ {{ checkbox(id, title='Alerting is enabled', value='1', desc='Alert', checked='checked') }}
{% else %}
{{ checkbox(id, title='Enable alerting', value='1', desc='Alert') }}
{% endif %}
{% set id = 'metrics-' + s.8.0.0|string() %}
{% if s.8.0.9 == 1 %}
- {{ checkbox(id, title='Enable collect metrics', value='1', desc='Metrics', checked='checked') }}
+ {{ checkbox(id, title='Collecting metrics is enabled', value='1', desc='Metrics', checked='checked') }}
{% else %}
{{ checkbox(id, title='Enable collect metrics', value='1', desc='Metrics') }}
{% endif %}
{% set id = 'active-' + s.8.0.0|string() %}
{% if s.8.0.12 == 1 %}
- {{ checkbox(id, title='Enable Compression', value='1', desc='Auto Start', checked='checked') }}
+ {{ checkbox(id, title='Auto Start is enabled', value='1', desc='Auto Start', checked='checked') }}
{% else %}
{{ checkbox(id, title='Enable Auto Start', value='1', desc='Auto Start') }}
{% endif %}
diff --git a/app/templates/include/admin_telegram.html b/app/templates/include/admin_telegram.html
index 834d6ac5..5b19eb77 100644
--- a/app/templates/include/admin_telegram.html
+++ b/app/templates/include/admin_telegram.html
@@ -1,3 +1,6 @@
+{% for s in services %}
+{% if s.0 == 'checker_haproxy' %}
+{% if s.3 != '* is not installed' %}
@@ -48,4 +51,14 @@
You can read the description of all parameters here
-
\ No newline at end of file
+
+{% else %}
+
+ Welcome and let's get started!
+ You do not have installed Backends checker.
+ Read hear
+ how to install it
+
+{% endif %}
+{% endif %}
+{% endfor %}
diff --git a/app/templates/metrics.html b/app/templates/metrics.html
index 762eb36b..0f71e420 100644
--- a/app/templates/metrics.html
+++ b/app/templates/metrics.html
@@ -1,5 +1,6 @@
{% extends "base.html" %}
-{% block content %}
+{% block content %}
+
|