From 50f4b5061d550db7b2dfed32c103081fb9215cb2 Mon Sep 17 00:00:00 2001 From: Pavel Loginov Date: Wed, 7 Dec 2022 12:59:39 +0300 Subject: [PATCH] v6.3.1.0 Changelog: https://roxy-wi.org/changelog#6_3_1 --- app/modules/service/common.py | 60 ++++++++++++++++++++++++++++++++--- app/options.py | 52 +++--------------------------- 2 files changed, 59 insertions(+), 53 deletions(-) diff --git a/app/modules/service/common.py b/app/modules/service/common.py index 50f3e08..0a9a409 100644 --- a/app/modules/service/common.py +++ b/app/modules/service/common.py @@ -4,9 +4,12 @@ import http.cookies import modules.db.sql as sql import modules.server.ssh as mod_ssh import modules.common.common as common +import modules.config.config as config_mod import modules.server.server as server_mod import modules.roxy_wi_tools as roxy_wi_tools +time_zone = sql.get_setting('time_zone') +get_date = roxy_wi_tools.GetDate(time_zone) get_config = roxy_wi_tools.GetConfigVar() @@ -181,10 +184,10 @@ def get_overview_last_edit(server_ip: str, service: str) -> None: try: print(server_mod.ssh_command(server_ip, commands)) except Exception as e: - print(f'error: Cannot get last date {e} for server {serv}') + print(f'error: Cannot get last date {e} for server {server_ip}') -def overview_service(server_id: int, name: str, service: str) -> None: +def overview_service(server_ip: str, server_id: int, name: str, service: str) -> None: import asyncio from jinja2 import Environment, FileSystemLoader @@ -209,8 +212,7 @@ def overview_service(server_id: int, name: str, service: str) -> None: return server_status async def get_runner_overviewServers(**kwargs): - env = Environment(loader=FileSystemLoader('templates/ajax'), - extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do']) + env = Environment(loader=FileSystemLoader('templates/ajax'), extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do']) template = env.get_template('overviewServers.html') servers = [] @@ -227,5 +229,53 @@ def overview_service(server_id: int, name: str, service: str) -> None: print(template) ioloop = asyncio.get_event_loop() - ioloop.run_until_complete(get_runner_overviewServers(server1=name, server2=serv, id=server_id, service=service)) + ioloop.run_until_complete(get_runner_overviewServers(server1=name, server2=server_ip, id=server_id, service=service)) ioloop.close() + + +def get_stat_page(server_ip: str, service: str) -> None: + import requests + from jinja2 import Environment, FileSystemLoader + + if service in ('nginx', 'apache'): + stats_user = sql.get_setting(f'{service}_stats_user') + stats_pass = sql.get_setting(f'{service}_stats_password') + stats_port = sql.get_setting(f'{service}_stats_port') + stats_page = sql.get_setting(f'{service}_stats_page') + else: + stats_user = sql.get_setting('stats_user') + stats_pass = sql.get_setting('stats_password') + stats_port = sql.get_setting('stats_port') + stats_page = sql.get_setting('stats_page') + try: + response = requests.get(f'http://{server_ip}:{stats_port}/{stats_page}', auth=(stats_user, stats_pass)) + except requests.exceptions.ConnectTimeout: + print('error: Oops. Connection timeout occurred!') + except requests.exceptions.ReadTimeout: + print('error: Oops. Read timeout occurred') + 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 service == 'nginx': + env = Environment(loader=FileSystemLoader('templates/'), autoescape=True) + template = env.get_template('ajax/nginx_stats.html') + + 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')) diff --git a/app/options.py b/app/options.py index e7750de..c2e64c1 100644 --- a/app/options.py +++ b/app/options.py @@ -285,7 +285,7 @@ if act == "overviewServers": name = common.checkAjaxInput(form.getvalue('name')) service = common.checkAjaxInput(form.getvalue('service')) - service_common.overview_service(server_id, name, service) + service_common.overview_service(serv, server_id, name, service) if form.getvalue('action'): haproxy_user = sql.get_setting('stats_user') @@ -312,53 +312,9 @@ if form.getvalue('action'): auth=(haproxy_user, haproxy_pass)) if serv is not None and act == "stats": - 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') - elif form.getvalue('service') == 'apache': - haproxy_user = sql.get_setting('apache_stats_user') - haproxy_pass = sql.get_setting('apache_stats_password') - stats_port = sql.get_setting('apache_stats_port') - stats_page = sql.get_setting('apache_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(f'http://{serv}:{stats_port}/{stats_page}', auth=(haproxy_user, haproxy_pass)) - except requests.exceptions.ConnectTimeout: - print('error: Oops. Connection timeout occurred!') - except requests.exceptions.ReadTimeout: - print('error: Oops. Read timeout occurred') - 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': - env = Environment(loader=FileSystemLoader('templates/'), autoescape=True) - template = env.get_template('ajax/nginx_stats.html') - - 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')) + service = common.checkAjaxInput(form.getvalue('service')) + + service_common.get_stat_page(serv, service) if serv is not None and form.getvalue('show_log') is not None: import modules.roxywi.logs as roxywi_logs