diff --git a/app/funct.py b/app/funct.py index 9bd77860..48ce471d 100644 --- a/app/funct.py +++ b/app/funct.py @@ -383,6 +383,12 @@ def get_sections(config, **kwargs): line = line.split(';')[0] line = line.strip() return_config.append(line) + elif kwargs.get('service') == 'keepalived': + import re + ip_pattern = re.compile('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}') + find_ip = re.findall(ip_pattern,line) + if find_ip: + return_config.append(find_ip[0]) else: if ( line.startswith('listen') or @@ -915,7 +921,7 @@ def show_haproxy_log(serv, rows=10, waf='0', grep=None, hour='00', minut='00', h 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)] - syslog_server = serv + 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)] syslog_server = sql.get_setting('syslog_server') @@ -1261,22 +1267,22 @@ def check_service(serv, service_name): def get_services_status(): services = [] - services_name = {'checker_haproxy': 'Checker backends master service', - 'keep_alive': 'Auto start service', - 'metrics_haproxy': 'Metrics master service', - 'portscanner': 'Port scanner service', - 'smon': 'Simple monitoring network ports', + services_name = {'roxy-wi-checker': 'Checker backends master service', + 'roxy-wi-keep_alive': 'Auto start service', + 'roxy-wi-metrics': 'Metrics master service', + 'roxy-wi-portscanner': 'Port scanner service', + 'roxy-wi-smon': 'Simple monitoring network ports', 'prometheus': 'Prometheus service', 'grafana-server': 'Grafana service', 'fail2ban': 'Fail2ban service'} for s, v in services_name.items(): cmd = "systemctl is-active %s" % s status, stderr = subprocess_execute(cmd) - if s != 'keep_alive': + if s != 'roxy-wi-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/-/./'" + cmd = "rpm --query " + service_name + "-* |awk -F\"" + service_name + "\" '{print $2}' |awk -F\".noa\" '{print $1}' |sed 's/-//1' |sed 's/-/./'" service_ver, stderr = subprocess_execute(cmd) try: @@ -1285,3 +1291,17 @@ def get_services_status(): services.append([s, status, v, '']) return services + + +def is_file_exists(serv: str, file: str): + cmd = ['[ -f ' + file + ' ] && echo yes || echo no'] + + out = ssh_command(serv, cmd) + return True if 'yes' in out else False + + +def is_service_active(serv: str, service_name: str): + cmd = ['systemctl is-active ' + service_name] + + out = ssh_command(serv, cmd) + return True if 'active' in out else False diff --git a/app/options.py b/app/options.py index ada15f05..d82ddd35 100644 --- a/app/options.py +++ b/app/options.py @@ -392,8 +392,8 @@ if form.getvalue('action_hap') is not None and serv is not None: 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) + funct.logging(serv, 'HAProxy has been ' + action + 'ed', haproxywi=1, login=1) + print("success: HAProxy has been %s" % action) else: print("error: Bad config, check please") @@ -402,8 +402,16 @@ if form.getvalue('action_nginx') is not None and serv is not None: 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) + funct.logging(serv, 'Nginx has been ' + action + 'ed', haproxywi=1, login=1) + print("success: Nginx has been %s" % action) + +if form.getvalue('action_keepalived') is not None and serv is not None: + action = form.getvalue('action_keepalived') + + commands = ["sudo systemctl %s keepalived" % action] + funct.ssh_command(serv, commands) + funct.logging(serv, 'Keepalived has been ' + action + 'ed', haproxywi=1, login=1) + print("success: Keepalived has been %s" % action) if form.getvalue('action_waf') is not None and serv is not None: serv = form.getvalue('serv') @@ -429,16 +437,22 @@ if act == "overviewHapserverBackends": 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_file = 'cfg' elif service == 'nginx': configs_dir = funct.get_config_var('configs', 'nginx_save_configs_dir') format_file = 'conf' + elif service == 'keepalived': + configs_dir = funct.get_config_var('configs', 'kp_save_configs_dir') + format_file = 'conf' + try: sections = funct.get_sections(configs_dir + funct.get_files(dir=configs_dir, format=format_file)[0], service=service) except Exception as e: funct.logging('localhost', str(e), haproxywi=1) + try: cfg = configs_dir + serv + "-" + funct.get_data('config') + '.' + format_file except Exception as e: @@ -446,6 +460,8 @@ if act == "overviewHapserverBackends": try: if service == 'nginx': error = funct.get_config(serv, cfg, nginx=1) + elif service == 'keepalived': + error = funct.get_config(serv, cfg, keepalived=1) else: error = funct.get_config(serv, cfg) except Exception as e: @@ -891,6 +907,8 @@ if act == "showCompareConfigs": if form.getvalue('service') == 'nginx': return_files = funct.get_files(funct.get_config_var('configs', 'nginx_save_configs_dir'), 'conf') + elif form.getvalue('service') == 'keepalived': + return_files = funct.get_files(funct.get_config_var('configs', 'kp_save_configs_dir'), 'conf') else: return_files = funct.get_files() @@ -904,6 +922,8 @@ if serv is not None and form.getvalue('right') is not None: right = form.getvalue('right') if form.getvalue('service') == 'nginx': configs_dir = funct.get_config_var('configs', 'nginx_save_configs_dir') + elif form.getvalue('service') == 'keepalived': + configs_dir = funct.get_config_var('configs', 'kp_save_configs_dir') else: configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir') cmd = 'diff -pub %s%s %s%s' % (configs_dir, left, configs_dir, right) @@ -923,11 +943,12 @@ if serv is not None and act == "configShow": cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) user_uuid = cookie.get('uuid') role_id = sql.get_user_role_by_uuid(user_uuid.value) + service = form.getvalue('service') - if form.getvalue('service') == 'keepalived': + if service == 'keepalived': configs_dir = funct.get_config_var('configs', 'kp_save_configs_dir') cfg = '.conf' - elif form.getvalue('service') == 'nginx': + elif service == 'nginx': configs_dir = funct.get_config_var('configs', 'nginx_save_configs_dir') cfg = '.conf' else: @@ -936,8 +957,10 @@ if serv is not None and act == "configShow": if form.getvalue('configver') is None: cfg = configs_dir + serv + "-" + funct.get_data('config') + cfg - if form.getvalue('service') == 'nginx': + if service == 'nginx': funct.get_config(serv, cfg, nginx=1) + elif service == 'keepalived': + funct.get_config(serv, cfg, keepalived=1) else: funct.get_config(serv, cfg) else: @@ -959,7 +982,7 @@ if serv is not None and act == "configShow": serv=serv, configver=form.getvalue('configver'), role=role_id, - service=form.getvalue('service'), + service=service, is_serv_protected=is_serv_protected) print(template) @@ -1351,7 +1374,7 @@ if form.getvalue('installwaf'): if form.getvalue('update_haproxy_wi'): service = form.getvalue('service') - services = ['checker_haproxy', 'haproxy-wi', 'keep_alive', 'smon', 'metrics_haproxy'] + services = ['roxy-wi-checker', 'haproxy-wi', 'roxy-wi-keep_alive', 'roxy-wi-smon', 'roxy-wi-metrics'] if service not in services: print('error: ' + service + ' is not part of Roxy-WI') sys.exit() diff --git a/app/overview.py b/app/overview.py index b260e21d..f627e6b7 100644 --- a/app/overview.py +++ b/app/overview.py @@ -72,15 +72,15 @@ try: prometheus, stderr = funct.subprocess_execute(cmd) host = os.environ.get('HTTP_HOST', '') - cmd = "systemctl is-active metrics_haproxy" + cmd = "systemctl is-active roxy-wi-metrics" metrics_master, stderr = funct.subprocess_execute(cmd) - cmd = "systemctl is-active checker_haproxy" + cmd = "systemctl is-active roxy-wi-checker" checker_master, stderr = funct.subprocess_execute(cmd) - cmd = "systemctl is-active keep_alive" + cmd = "systemctl is-active roxy-wi-keep_alive" keep_alive, stderr = funct.subprocess_execute(cmd) - cmd = "systemctl is-active smon" + cmd = "systemctl is-active roxy-wi-smon" smon, stderr = funct.subprocess_execute(cmd) - cmd = "systemctl is-active portscanner" + cmd = "systemctl is-active roxy-wi-portscanner" port_scanner, stderr = funct.subprocess_execute(cmd) except Exception as e: diff --git a/app/templates/ajax/load_updatehapwi.html b/app/templates/ajax/load_updatehapwi.html index 499d2f2f..7760f742 100644 --- a/app/templates/ajax/load_updatehapwi.html +++ b/app/templates/ajax/load_updatehapwi.html @@ -22,38 +22,38 @@ {% for s in services %} - {% if s.0 == 'smon' or s.0 == 'checker_haproxy' or s.0 == 'keep_alive' or s.0 == 'metrics_haproxy' or s.0 == 'portscanner' %} + {% if s.0 == 'roxy-wi-smon' or s.0 == 'roxy-wi-checker' or s.0 == 'roxy-wi-keep_alive' or s.0 == 'roxy-wi-metrics' or s.0 == 'roxy-wi-portscanner' %} {% set is_need_update = 0 %} - {% if s.0 == 'smon' %} + {% if s.0 == 'roxy-wi-smon' %} {% set service_name = 'SMON' %} {% set service_link = 'smon' %} {% set desc_link = 'https://haproxy-wi.org/services.py?service=smon' %} {% if s.3|float < smon_ver|float %} {% set is_need_update = 1 %} {% endif %} -{% elif s.0 == 'checker_haproxy' %} +{% elif s.0 == 'roxy-wi-checker' %} {% set service_name = 'Checker' %} {% set service_link = 'checker' %} {% set desc_link = 'https://haproxy-wi.org/services.py?service=checker' %} {% if s.3|float < checker_ver|float %} {% set is_need_update = 1 %} {% endif %} -{% elif s.0 == 'keep_alive' %} +{% elif s.0 == 'roxy-wi-keep_alive' %} {% set service_name = 'Auto start' %} {% set service_link = 'auto_start' %} {% set desc_link = 'https://haproxy-wi.org/services.py?service=auto_start' %} {% if s.3|float < keep_ver|float %} {% set is_need_update = 1 %} {% endif %} -{% elif s.0 == 'metrics_haproxy' %} +{% elif s.0 == 'roxy-wi-metrics' %} {% set service_name = 'Metrics' %} {% set service_link = 'metrics' %} {% set desc_link = 'https://haproxy-wi.org/services.py?service=metrics' %} {% if s.3|float < metrics_ver|float %} {% set is_need_update = 1 %} {% endif %} -{% elif s.0 == 'portscanner' %} +{% elif s.0 == 'roxy-wi-portscanner' %} {% set service_name = 'Port scanner' %} {% set service_link = 'portscanner' %} {% set desc_link = 'https://haproxy-wi.org/services.py?service={{service_link}}' %} @@ -71,15 +71,15 @@ - {% if s.0 == 'smon' %} + {% if s.0 == 'roxy-wi-smon' %} {{smon_ver}} - {% elif s.0 == 'checker_haproxy' %} + {% elif s.0 == 'roxy-wi-checker' %} {{checker_ver}} - {% elif s.0 == 'keep_alive' %} + {% elif s.0 == 'roxy-wi-keep_alive' %} {{keep_ver}} - {% elif s.0 == 'metrics_haproxy' %} + {% elif s.0 == 'roxy-wi-metrics' %} {{metrics_ver}} - {% elif s.0 == 'portscanner' %} + {% elif s.0 == 'roxy-wi-portscanner' %} {{portscanner_ver}} {% endif %} diff --git a/app/templates/include/add_servers.html b/app/templates/include/add_servers.html index f6afd23b..c5f3f2a1 100644 --- a/app/templates/include/add_servers.html +++ b/app/templates/include/add_servers.html @@ -7,16 +7,16 @@ : - +
- : + :
- : + : diff --git a/app/templates/include/admin_servers.html b/app/templates/include/admin_servers.html index 5e206fec..f68a7d58 100644 --- a/app/templates/include/admin_servers.html +++ b/app/templates/include/admin_servers.html @@ -5,23 +5,23 @@ Hostname IP - Port + Port {% if page != "servers.py" %} Group {% endif %} Enabled - + Virt HAProxy Nginx - + Firewalld - + Protected - + Slave for Credentials diff --git a/app/templates/include/admin_ssh.html b/app/templates/include/admin_ssh.html index 9ed86416..2e87b81c 100644 --- a/app/templates/include/admin_ssh.html +++ b/app/templates/include/admin_ssh.html @@ -1,15 +1,15 @@ - - {% if page != "servers.py" %} {% endif %} - @@ -63,7 +63,7 @@
+ Name + SSH key Group + Credentials
-
Upload SSH Key + Key