From da042616737d8df97581a612c9274f438f6ce33f Mon Sep 17 00:00:00 2001 From: Pavel Loginov Date: Sat, 12 Nov 2022 19:11:29 +0300 Subject: [PATCH] v6.2.3.0 Changelog: https://roxy-wi.org/changelog#6_2_3 --- app/funct.py | 118 ++--------- app/modules/roxy_wi_tools.py | 50 +++++ app/sql.py | 213 ++++++++++++-------- app/templates/include/mon_installation.html | 28 +-- inc/users.js | 6 +- 5 files changed, 209 insertions(+), 206 deletions(-) diff --git a/app/funct.py b/app/funct.py index a65a08da..9025a8c6 100644 --- a/app/funct.py +++ b/app/funct.py @@ -7,8 +7,11 @@ import http.cookies import distro +import sql 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_var = roxy_wi_tools.GetConfigVar() def is_ip_or_dns(server_from_request: str) -> str: @@ -50,52 +53,7 @@ def checkAjaxInput(ajax_input: str): return quote(ajax_input.rstrip()) -def get_data(log_type, **kwargs): - from datetime import datetime, timedelta - from pytz import timezone - import sql - fmt = "%Y-%m-%d.%H:%M:%S" - - if kwargs.get('timedelta'): - try: - now_utc = datetime.now(timezone(sql.get_setting('time_zone'))) + timedelta(days=kwargs.get('timedelta')) - except Exception: - now_utc = datetime.now(timezone('UTC')) + timedelta(days=kwargs.get('timedelta')) - elif kwargs.get('timedelta_minus'): - try: - now_utc = datetime.now(timezone(sql.get_setting('time_zone'))) - timedelta(days=kwargs.get('timedelta_minus')) - except Exception: - now_utc = datetime.now(timezone('UTC')) - timedelta(days=kwargs.get('timedelta_minus')) - elif kwargs.get('timedelta_minutes'): - try: - now_utc = datetime.now(timezone(sql.get_setting('time_zone'))) + timedelta(minutes=kwargs.get('timedelta_minutes')) - except Exception: - now_utc = datetime.now(timezone('UTC')) + timedelta(minutes=kwargs.get('timedelta_minutes')) - elif kwargs.get('timedelta_minutes_minus'): - try: - now_utc = datetime.now(timezone(sql.get_setting('time_zone'))) - timedelta(minutes=kwargs.get('timedelta_minutes_minus')) - except Exception: - now_utc = datetime.now(timezone('UTC')) - timedelta(minutes=kwargs.get('timedelta_minutes_minus')) - else: - try: - now_utc = datetime.now(timezone(sql.get_setting('time_zone'))) - except Exception: - now_utc = datetime.now(timezone('UTC')) - - if log_type == 'config': - fmt = "%Y-%m-%d.%H:%M:%S" - elif log_type == 'logs': - fmt = '%Y%m%d' - elif log_type == "date_in_log": - fmt = "%b %d %H:%M:%S" - elif log_type == 'regular': - fmt = "%Y-%m-%d %H:%M:%S" - - return now_utc.strftime(fmt) - - def get_user_group(**kwargs) -> str: - import sql user_group = '' try: @@ -116,11 +74,9 @@ def get_user_group(**kwargs) -> str: def logging(server_ip: str, action: str, **kwargs) -> None: - import sql - login = '' - cur_date = get_data('logs') - cur_date_in_log = get_data('date_in_log') + cur_date = get_date.return_date('logs') + cur_date_in_log = get_date.return_date('date_in_log') log_path = get_config_var.get_config_var('main', 'log_path') if not os.path.exists(log_path): @@ -185,7 +141,6 @@ def logging(server_ip: str, action: str, **kwargs) -> None: def keep_action_history(service: str, action: str, server_ip: str, login: str, user_ip: str): - import sql try: server_id = sql.select_server_id_by_ip(server_ip=server_ip) if login != '': @@ -203,7 +158,6 @@ def keep_action_history(service: str, action: str, server_ip: str, login: str, u def telegram_send_mess(mess, **kwargs): import telebot from telebot import apihelper - import sql token_bot = '' channel_name = '' @@ -235,7 +189,6 @@ def telegram_send_mess(mess, **kwargs): def slack_send_mess(mess, **kwargs): - import sql from slack_sdk import WebClient from slack_sdk.errors import SlackApiError slack_token = '' @@ -268,8 +221,6 @@ def slack_send_mess(mess, **kwargs): def check_login(user_uuid, token, **kwargs): - import sql - if user_uuid is None: print('') @@ -301,7 +252,6 @@ def check_login(user_uuid, token, **kwargs): def get_user_id(**kwargs): - import sql if kwargs.get('login'): return sql.get_user_id_by_username(kwargs.get('login')) @@ -315,7 +265,6 @@ def get_user_id(**kwargs): def is_admin(level=1): - import sql cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) user_id = cookie.get('uuid') try: @@ -337,7 +286,6 @@ def page_for_admin(level=1) -> None: def return_ssh_keys_path(server_ip: str, **kwargs) -> dict: - import sql lib_path = get_config_var.get_config_var('main', 'lib_path') ssh_settings = {} @@ -371,7 +319,6 @@ def ssh_connect(server_ip): def get_config(server_ip, cfg, **kwargs): - import sql config_path = '' if kwargs.get("keepalived") or kwargs.get("service") == 'keepalived': @@ -397,12 +344,12 @@ def get_config(server_ip, cfg, **kwargs): def diff_config(oldcfg, cfg, **kwargs): - import sql cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) log_path = get_config_var.get_config_var('main', 'log_path') user_group = get_user_group() diff = "" - date = get_data('date_in_log') + date = get_date.return_date('date_in_log') + log_date = get_date.return_date('logs') cmd = "/bin/diff -ub %s %s" % (oldcfg, cfg) try: @@ -421,7 +368,7 @@ def diff_config(oldcfg, cfg, **kwargs): for line in output: diff += f"{date} user: {login}, group: {user_group} {line}\n" - log_file = f"{log_path}/config_edit-{get_data('logs')}" + log_file = f"{log_path}/config_edit-{log_date}" try: with open(log_file, 'a') as log: log.write(diff) @@ -431,7 +378,6 @@ def diff_config(oldcfg, cfg, **kwargs): def get_remote_sections(server_ip: str, service: str) -> str: - import sql remote_dir = service + '_dir' config_dir = sql.get_setting(remote_dir) config_dir = return_nice_path(config_dir) @@ -534,6 +480,7 @@ def get_userlists(config): def get_backends_from_config(server_ip, backends=''): + config_date = get_date.return_date('config') configs_dir = get_config_var.get_config_var('configs', 'haproxy_save_configs_dir') format_cfg = 'cfg' @@ -542,7 +489,7 @@ def get_backends_from_config(server_ip, backends=''): except Exception as e: logging('Roxy-WI server', str(e), roxywi=1) try: - cfg = configs_dir + server_ip + "-" + get_data('config') + '.' + format_cfg + cfg = f'{configs_dir}{server_ip}-{config_date}.{format_cfg}' except Exception: logging('Roxy-WI server', ' Cannot generate cfg path', roxywi=1) return @@ -562,7 +509,6 @@ def get_backends_from_config(server_ip, backends=''): def get_all_stick_table(): - import sql hap_sock_p = sql.get_setting('haproxy_sock_port') 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) @@ -570,7 +516,6 @@ def get_all_stick_table(): def get_stick_table(table): - import sql hap_sock_p = 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, hap_sock_p) output, stderr = subprocess_execute(cmd) @@ -606,7 +551,6 @@ def show_installation_output(error, output, service): def install_haproxy(server_ip, **kwargs): - import sql script = "install_haproxy.sh" hap_sock_p = str(sql.get_setting('haproxy_sock_port')) stats_port = str(sql.get_setting('stats_port')) @@ -658,7 +602,6 @@ def install_haproxy(server_ip, **kwargs): def waf_install(server_ip): - import sql script = "waf.sh" proxy = sql.get_setting('proxy') haproxy_dir = sql.get_setting('haproxy_dir') @@ -688,7 +631,6 @@ def waf_install(server_ip): def waf_nginx_install(server_ip): - import sql script = "waf_nginx.sh" proxy = sql.get_setting('proxy') nginx_dir = sql.get_setting('nginx_dir') @@ -716,7 +658,6 @@ def waf_nginx_install(server_ip): def install_nginx(server_ip, **kwargs): - import sql script = "install_nginx.sh" stats_user = sql.get_setting('nginx_stats_user') stats_password = sql.get_setting('nginx_stats_password') @@ -786,7 +727,6 @@ def update_roxy_wi(service): def check_haproxy_version(server_ip): - import sql hap_sock_p = sql.get_setting('haproxy_sock_port') ver = "" cmd = f"echo 'show info' |nc {server_ip} {hap_sock_p} |grep Version |awk '{{print $2}}'" @@ -813,13 +753,13 @@ def upload(server_ip, path, file, **kwargs): def upload_and_restart(server_ip: str, cfg: str, **kwargs): - import sql error = '' service_name = '' container_name = '' reload_or_restart_command = '' file_format = 'conf' config_path = kwargs.get('config_file_name') + config_date = get_date.return_date('config') server_id = sql.select_server_id_by_ip(server_ip=server_ip) if kwargs.get("nginx"): @@ -837,7 +777,7 @@ def upload_and_restart(server_ip: str, cfg: str, **kwargs): config_path = sql.get_setting('haproxy_config_path') file_format = 'cfg' - tmp_file = f"{sql.get_setting('tmp_config_path')}/{get_data('config')}.{file_format}" + tmp_file = f"{sql.get_setting('tmp_config_path')}/{config_date}.{file_format}" is_dockerized = sql.select_service_setting(server_id, service, 'dockerized') if is_dockerized == '1': @@ -991,8 +931,6 @@ def upload_and_restart(server_ip: str, cfg: str, **kwargs): def master_slave_upload_and_restart(server_ip, cfg, just_save, **kwargs): - import sql - slave_output = '' try: @@ -1072,7 +1010,6 @@ def open_port_firewalld(cfg, server_ip, **kwargs): def check_haproxy_config(server_ip): - import sql server_id = sql.select_server_id_by_ip(server_ip=server_ip) is_dockerized = sql.select_service_setting(server_id, 'haproxy', 'dockerized') config_path = sql.get_setting('haproxy_config_path') @@ -1093,7 +1030,6 @@ def check_haproxy_config(server_ip): def check_nginx_config(server_ip): - import sql commands = [f"nginx -q -t -p {sql.get_setting('nginx_dir')}"] with ssh_connect(server_ip) as ssh: @@ -1146,7 +1082,6 @@ def show_roxy_log( serv, rows='10', waf='0', grep=None, hour='00', minut='00', hour1='24', minut1='00', service='haproxy', **kwargs ) -> str: - import sql exgrep = form.getvalue('exgrep') log_file = form.getvalue('file') date = checkAjaxInput(hour) + ':' + checkAjaxInput(minut) @@ -1196,7 +1131,6 @@ def show_roxy_log( if waf == "1": local_path_logs = '/var/log/waf.log' 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) return show_log(a, html=0, grep=grep) @@ -1290,6 +1224,8 @@ def server_status(stdout): def ssh_command(server_ip: str, commands: list, **kwargs): + if server_ip == '': + return 'error: IP cannot be empty' with ssh_connect(server_ip) as ssh: for command in commands: try: @@ -1328,7 +1264,6 @@ def subprocess_execute(cmd): def show_backends(server_ip, **kwargs): - import sql hap_sock_p = sql.get_setting('haproxy_sock_port') cmd = f'echo "show backend" |nc {server_ip} {hap_sock_p}' output, stderr = subprocess_execute(cmd) @@ -1414,7 +1349,6 @@ def get_key(item): def check_ver(): - import sql return sql.get_ver() @@ -1423,8 +1357,6 @@ def check_new_version(service): from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry import Retry - import sql - current_ver = check_ver() proxy = sql.get_setting('proxy') res = '' @@ -1508,7 +1440,6 @@ def get_hash(value): def get_users_params(**kwargs): - import sql cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) try: @@ -1547,8 +1478,6 @@ def get_users_params(**kwargs): def check_user_group(**kwargs): - import sql - if kwargs.get('token') is not None: return True @@ -1577,7 +1506,6 @@ def check_user_group(**kwargs): def check_is_server_in_group(server_ip: str) -> bool: - import sql group_id = get_user_group(id=1) servers = sql.select_servers(server=server_ip) for s in servers: @@ -1691,7 +1619,6 @@ def is_service_active(server_ip: str, service_name: str) -> bool: def get_system_info(server_ip: str) -> str: - import sql server_ip = is_ip_or_dns(server_ip) if server_ip == '': return 'error: IP cannot be empty' @@ -1928,7 +1855,6 @@ def string_to_dict(dict_string) -> dict: def send_message_to_rabbit(message: str, **kwargs) -> None: import pika - import sql rabbit_user = sql.get_setting('rabbitmq_user') rabbit_password = sql.get_setting('rabbitmq_password') rabbit_host = sql.get_setting('rabbitmq_host') @@ -1956,8 +1882,6 @@ def send_message_to_rabbit(message: str, **kwargs) -> None: def is_restarted(server_ip: str, action: str) -> None: - import sql - cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE")) user_uuid = cookie.get('uuid') user_role = sql.get_user_role_by_uuid(user_uuid.value) @@ -1968,7 +1892,6 @@ def is_restarted(server_ip: str, action: str) -> None: def is_not_allowed_to_restart(server_id: int, service: str) -> None: - import sql is_restart = sql.select_service_setting(server_id, service, 'restart') if int(is_restart) == 1: @@ -1977,8 +1900,6 @@ def is_not_allowed_to_restart(server_id: int, service: str) -> None: def return_user_status(): - import sql - user_status = sql.select_user_status() user_plan = sql.select_user_plan() @@ -1986,8 +1907,6 @@ def return_user_status(): def get_correct_apache_service_name(server_ip=None, server_id=0) -> str: - import sql - if server_id is None: server_id = sql.select_server_id_by_ip(server_ip) @@ -2014,7 +1933,6 @@ def is_docker() -> bool: def send_email(email_to: str, subject: str, message: str) -> None: - import sql from smtplib import SMTP try: @@ -2046,8 +1964,6 @@ def send_email(email_to: str, subject: str, message: str) -> None: def send_email_to_server_group(subject: str, mes: str, group_id: int) -> None: - import sql - try: users_email = sql.select_users_emails_by_group_id(group_id) @@ -2060,8 +1976,6 @@ def send_email_to_server_group(subject: str, mes: str, group_id: int) -> None: def alert_routing( server_ip: str, service_id: int, group_id: int, level: str, mes: str, alert_type: str ) -> None: - import sql - subject: str = level + ': ' + mes server_id: int = sql.select_server_id_by_ip(server_ip) checker_settings = sql.select_checker_settings_for_server(service_id, server_id) @@ -2093,3 +2007,7 @@ def alert_routing( if setting.email: send_email_to_server_group(subject, mes, group_id) + + +def get_data(log_type, **kwargs): + return get_date.return_date(log_type, **kwargs) diff --git a/app/modules/roxy_wi_tools.py b/app/modules/roxy_wi_tools.py index 2e98ea6f..412a03a1 100644 --- a/app/modules/roxy_wi_tools.py +++ b/app/modules/roxy_wi_tools.py @@ -1,3 +1,6 @@ +from datetime import datetime, timedelta + +from pytz import timezone from configparser import ConfigParser, ExtendedInterpolation @@ -16,3 +19,50 @@ class GetConfigVar: f'
Check the config file. Presence section {sec} and parameter {var}
') print(e) return + + +class GetDate: + def __init__(self, time_zone): + self.time_zone = time_zone + self.fmt = "%Y-%m-%d.%H:%M:%S" + + def return_date(self, log_type, **kwargs): + if kwargs.get('timedelta'): + try: + now_utc = datetime.now(timezone(self.time_zone)) + timedelta(days=kwargs.get('timedelta')) + except Exception: + now_utc = datetime.now(timezone('UTC')) + timedelta(days=kwargs.get('timedelta')) + elif kwargs.get('timedelta_minus'): + try: + now_utc = datetime.now(timezone(self.time_zone)) - timedelta( + days=kwargs.get('timedelta_minus')) + except Exception: + now_utc = datetime.now(timezone('UTC')) - timedelta(days=kwargs.get('timedelta_minus')) + elif kwargs.get('timedelta_minutes'): + try: + now_utc = datetime.now(timezone(self.time_zone)) + timedelta( + minutes=kwargs.get('timedelta_minutes')) + except Exception: + now_utc = datetime.now(timezone('UTC')) + timedelta(minutes=kwargs.get('timedelta_minutes')) + elif kwargs.get('timedelta_minutes_minus'): + try: + now_utc = datetime.now(timezone(self.time_zone)) - timedelta( + minutes=kwargs.get('timedelta_minutes_minus')) + except Exception: + now_utc = datetime.now(timezone('UTC')) - timedelta(minutes=kwargs.get('timedelta_minutes_minus')) + else: + try: + now_utc = datetime.now(timezone(self.time_zone)) + except Exception: + now_utc = datetime.now(timezone('UTC')) + + if log_type == 'config': + self.fmt = "%Y-%m-%d.%H:%M:%S" + elif log_type == 'logs': + self.fmt = '%Y%m%d' + elif log_type == "date_in_log": + self.fmt = "%b %d %H:%M:%S" + elif log_type == 'regular': + self.fmt = "%Y-%m-%d %H:%M:%S" + + return now_utc.strftime(self.fmt) diff --git a/app/sql.py b/app/sql.py index 96f4533a..29cfc9ba 100755 --- a/app/sql.py +++ b/app/sql.py @@ -4,10 +4,46 @@ import traceback import sys import os -import funct - from modules.db_model import * +import modules.roxy_wi_tools as roxy_wi_tools +def get_setting(param, **kwargs): + import funct + try: + user_group = funct.get_user_group(id=1) + except Exception: + user_group = '' + + if user_group == '' or param == 'lists_path' or param == 'ssl_local_path': + user_group = 1 + + if kwargs.get('all'): + query = Setting.select().where(Setting.group == user_group).order_by(Setting.section.desc()) + else: + query = Setting.select().where((Setting.param == param) & (Setting.group == user_group)) + + try: + query_res = query.execute() + except Exception as e: + out_error(e) + else: + if kwargs.get('all'): + return query_res + else: + for setting in query_res: + if param in ( + 'nginx_stats_port', 'session_ttl', 'token_ttl', 'stats_port', 'haproxy_sock_port', 'ldap_type', + 'ldap_port', 'ldap_enable', 'log_time_storage', 'syslog_server_enable', 'smon_check_interval', + 'checker_check_interval', 'port_scan_interval', 'smon_keep_history_range', 'checker_keep_history_range', + 'portscanner_keep_history_range', 'checker_maxconn_threshold', 'apache_stats_port' + ): + return int(setting.value) + else: + return setting.value + + +time_zone = get_setting('time_zone') +get_date = roxy_wi_tools.GetDate(time_zone) def out_error(error): error = str(error) @@ -20,6 +56,7 @@ def out_error(error): def add_user(user, email, password, role, activeuser, group): + import funct if password != 'aduser': try: User.insert( @@ -28,9 +65,6 @@ def add_user(user, email, password, role, activeuser, group): ).execute() except Exception as e: out_error(e) - return False - else: - return True else: try: User.insert( @@ -38,9 +72,6 @@ def add_user(user, email, password, role, activeuser, group): ).execute() except Exception as e: out_error(e) - return False - else: - return True def update_user(user, email, role, user_id, activeuser): @@ -89,6 +120,7 @@ def update_user_current_groups(groups, user_uuid): def update_user_password(password, user_id): + import funct try: user_update = User.update(password=funct.get_hash(password)).where(User.user_id == user_id) user_update.execute() @@ -339,18 +371,18 @@ def select_users(**kwargs): elif kwargs.get("id") is not None: query = User.select().where(User.user_id == kwargs.get("id")) elif kwargs.get("group") is not None: + cur_date = get_date.return_date('regular', timedelta_minutes_minus=15) query = (User.select( User, UserGroups, Case( - 0, [((User.last_login_date >= funct.get_data('regular', timedelta_minutes_minus=15)), 0)], 1 + 0, [((User.last_login_date >= cur_date), 0)], 1 ).alias('last_login') ).join(UserGroups, on=(User.user_id == UserGroups.user_id)).where( UserGroups.user_group_id == kwargs.get("group") )) else: + cur_date = get_date.return_date('regular', timedelta_minutes_minus=15) query = User.select(User, Case(0, [( - ( - User.last_login_date >= funct.get_data('regular', timedelta_minutes_minus=15) - ), 0)], 1).alias('last_login')).order_by(User.user_id) + (User.last_login_date >= cur_date), 0)], 1).alias('last_login')).order_by(User.user_id) try: query_res = query.execute() except Exception as e: @@ -568,9 +600,10 @@ def write_user_uuid(login, user_uuid): session_ttl = get_setting('session_ttl') session_ttl = int(session_ttl) user_id = get_user_id_by_username(login) + cur_date = get_date.return_date('regular', timedelta=session_ttl) try: - UUID.insert(user_id=user_id, uuid=user_uuid, exp=funct.get_data('regular', timedelta=session_ttl)).execute() + UUID.insert(user_id=user_id, uuid=user_uuid, exp=cur_date).execute() except Exception as e: out_error(e) @@ -578,21 +611,23 @@ def write_user_uuid(login, user_uuid): def write_user_token(login, user_token): token_ttl = int(get_setting('token_ttl')) user_id = get_user_id_by_username(login) + cur_date = get_date.return_date('regular', timedelta=token_ttl) try: - Token.insert(user_id=user_id, token=user_token, exp=funct.get_data('regular', timedelta=token_ttl)).execute() + Token.insert(user_id=user_id, token=user_token, exp=cur_date).execute() except Exception as e: out_error(e) def write_api_token(user_token, group_id, user_role, user_name): token_ttl = int(get_setting('token_ttl')) + cur_date = get_date.return_date('regular', timedelta=token_ttl) + cur_date_token_ttl = get_date.return_date('regular', timedelta=token_ttl) try: ApiToken.insert( token=user_token, user_name=user_name, user_group_id=group_id, user_role=user_role, - create_date=funct.get_data('regular'), expire_date=funct.get_data('regular', timedelta=token_ttl) - ).execute() + create_date=cur_date, expire_date=cur_date_token_ttl).execute() except Exception as e: out_error(e) @@ -650,8 +685,9 @@ def delete_uuid(uuid): def delete_old_uuid(): - query = UUID.delete().where((UUID.exp < funct.get_data('regular')) | (UUID.exp.is_null(True))) - query1 = Token.delete().where((Token.exp < funct.get_data('regular')) | (Token.exp.is_null(True))) + cur_date = get_date.return_date('regular') + query = UUID.delete().where((UUID.exp < cur_date) | (UUID.exp.is_null(True))) + query1 = Token.delete().where((Token.exp < cur_date) | (Token.exp.is_null(True))) try: query.execute() query1.execute() @@ -662,6 +698,11 @@ def delete_old_uuid(): def update_last_act_user(uuid, token): session_ttl = int(get_setting('session_ttl')) token_ttl = int(get_setting('token_ttl')) + cur_date_session = get_date.return_date('regular', timedelta=session_ttl) + cur_date_token = get_date.return_date('regular', timedelta=token_ttl) + cur_date = get_date.return_date('regular') + user_id = get_user_id_by_uuid(uuid) + try: import cgi import os @@ -669,11 +710,9 @@ def update_last_act_user(uuid, token): except Exception: ip = '' - user_id = get_user_id_by_uuid(uuid) - - query = UUID.update(exp=funct.get_data('regular', timedelta=session_ttl)).where(UUID.uuid == uuid) - query1 = Token.update(exp=funct.get_data('regular', timedelta=token_ttl)).where(Token.token == token) - query2 = User.update(last_login_date=funct.get_data('regular'), last_login_ip=ip).where(User.user_id == user_id) + query = UUID.update(exp=cur_date_session).where(UUID.uuid == uuid) + query1 = Token.update(exp=cur_date_token).where(Token.token == token) + query2 = User.update(last_login_date=cur_date, last_login_ip=ip).where(User.user_id == user_id) try: query.execute() query1.execute() @@ -798,6 +837,7 @@ def get_slack_by_id(slack_id): def get_dick_permit(**kwargs): import os + import funct if kwargs.get('username'): grp = kwargs.get('group_id') @@ -1208,35 +1248,39 @@ def delete_savedserver(saved_id): def insert_metrics(serv, curr_con, cur_ssl_con, sess_rate, max_sess_rate): + cur_date = get_date.return_date('regular') try: Metrics.insert( serv=serv, curr_con=curr_con, cur_ssl_con=cur_ssl_con, sess_rate=sess_rate, max_sess_rate=max_sess_rate, - date=funct.get_data('regular') + date=cur_date ).execute() except Exception as e: out_error(e) def insert_metrics_http(serv, http_2xx, http_3xx, http_4xx, http_5xx): + cur_date = get_date.return_date('regular') try: MetricsHttpStatus.insert( serv=serv, ok_ans=http_2xx, redir_ans=http_3xx, not_found_ans=http_4xx, err_ans=http_5xx, - date=funct.get_data('regular') + date=cur_date ).execute() except Exception as e: out_error(e) def insert_nginx_metrics(serv, conn): + cur_date = get_date.return_date('regular') try: - NginxMetrics.insert(serv=serv, conn=conn, date=funct.get_data('regular')).execute() + NginxMetrics.insert(serv=serv, conn=conn, date=cur_date).execute() except Exception as e: out_error(e) def insert_apache_metrics(serv, conn): + cur_date = get_date.return_date('regular') try: - ApacheMetrics.insert(serv=serv, conn=conn, date=funct.get_data('regular')).execute() + ApacheMetrics.insert(serv=serv, conn=conn, date=cur_date).execute() except Exception as e: out_error(e) @@ -1557,14 +1601,16 @@ def delete_waf_server(server_id): def insert_waf_metrics(serv, conn): + cur_date = get_date.return_date('regular') try: - WafMetrics.insert(serv=serv, conn=conn, date=funct.get_data('regular')).execute() + WafMetrics.insert(serv=serv, conn=conn, date=cur_date).execute() except Exception as e: out_error(e) def delete_waf_metrics(): - query = WafMetrics.delete().where(WafMetrics.date < funct.get_data('regular', timedelta_minus=3)) + cur_date = get_date.return_date('regular', timedelta_minus=3) + query = WafMetrics.delete().where(WafMetrics.date < cur_date) try: query.execute() except Exception as e: @@ -1585,7 +1631,8 @@ def update_waf_metrics_enable(name, enable): def delete_metrics(): - query = Metrics.delete().where(Metrics.date < funct.get_data('regular', timedelta_minus=3)) + cur_date = get_date.return_date('regular', timedelta_minus=3) + query = Metrics.delete().where(Metrics.date < cur_date) try: query.execute() except Exception as e: @@ -1593,7 +1640,8 @@ def delete_metrics(): def delete_http_metrics(): - query = MetricsHttpStatus.delete().where(MetricsHttpStatus.date < funct.get_data('regular', timedelta_minus=3)) + cur_date = get_date.return_date('regular', timedelta_minus=3) + query = MetricsHttpStatus.delete().where(MetricsHttpStatus.date < cur_date) try: query.execute() except Exception as e: @@ -1601,7 +1649,8 @@ def delete_http_metrics(): def delete_nginx_metrics(): - query = NginxMetrics.delete().where(NginxMetrics.date < funct.get_data('regular', timedelta_minus=3)) + cur_date = get_date.return_date('regular', timedelta_minus=3) + query = NginxMetrics.delete().where(NginxMetrics.date < cur_date) try: query.execute() except Exception as e: @@ -1609,7 +1658,8 @@ def delete_nginx_metrics(): def delete_apache_metrics(): - query = ApacheMetrics.delete().where(ApacheMetrics.date < funct.get_data('regular', timedelta_minus=3)) + cur_date = get_date.return_date('regular', timedelta_minus=3) + query = ApacheMetrics.delete().where(ApacheMetrics.date < cur_date) try: query.execute() except Exception as e: @@ -1718,6 +1768,7 @@ def select_apache_servers_metrics_for_master(): def select_servers_metrics(): + import funct group_id = funct.get_user_group(id=1) if funct.check_user_group(): if group_id == 1: @@ -1734,6 +1785,7 @@ def select_servers_metrics(): def select_table_metrics(): + import funct cursor = conn.cursor() group_id = funct.get_user_group(id=1) @@ -1942,6 +1994,7 @@ def select_table_metrics(): def select_service_table_metrics(service): + import funct cursor = conn.cursor() group_id = funct.get_user_group(id=1) @@ -2066,41 +2119,8 @@ def select_service_table_metrics(service): return cursor.fetchall() -def get_setting(param, **kwargs): - try: - user_group = funct.get_user_group(id=1) - except Exception: - user_group = '' - - if user_group == '' or param == 'lists_path' or param == 'ssl_local_path': - user_group = 1 - - if kwargs.get('all'): - query = Setting.select().where(Setting.group == user_group).order_by(Setting.section.desc()) - else: - query = Setting.select().where((Setting.param == param) & (Setting.group == user_group)) - - try: - query_res = query.execute() - except Exception as e: - out_error(e) - else: - if kwargs.get('all'): - return query_res - else: - for setting in query_res: - if param in ( - 'nginx_stats_port', 'session_ttl', 'token_ttl', 'stats_port', 'haproxy_sock_port', 'ldap_type', - 'ldap_port', 'ldap_enable', 'log_time_storage', 'syslog_server_enable', 'smon_check_interval', - 'checker_check_interval', 'port_scan_interval', 'smon_keep_history_range', 'checker_keep_history_range', - 'portscanner_keep_history_range', 'checker_maxconn_threshold', 'apache_stats_port' - ): - return int(setting.value) - else: - return setting.value - - def update_setting(param, val): + import funct user_group = funct.get_user_group(id=1) if funct.check_user_group(): @@ -2395,6 +2415,8 @@ def insert_smon(server, port, enable, proto, uri, body, group, desc, telegram, s def select_smon(user_group, **kwargs): + import funct + cursor = conn.cursor() funct.check_user_group() @@ -2442,6 +2464,8 @@ def select_smon_by_id(last_id): def delete_smon(smon_id, user_group): + import funct + funct.check_user_group() query = SMON.delete().where((SMON.id == smon_id) & (SMON.user_group == user_group)) @@ -2455,6 +2479,8 @@ def delete_smon(smon_id, user_group): def update_smon(smon_id, ip, port, body, telegram, slack, group, desc, en): + import funct + funct.check_user_group() query = (SMON.update( ip=ip, port=port, body=body, telegram_channel_id=telegram, slack_channel_id=slack, group=group, desc=desc, en=en @@ -2644,10 +2670,11 @@ def smon_list(user_group): def insert_alerts(user_group, level, ip, port, message, service): + cur_date = get_date.return_date('regular') try: Alerts.insert( user_group=user_group, message=message, level=level, ip=ip, port=port, service=service, - date=funct.get_data('regular') + date=cur_date ).execute() return True except Exception as e: @@ -2771,10 +2798,11 @@ def delete_port_scanner_settings(server_id): def insert_port_scanner_port(serv, user_group_id, port, service_name): + cur_date = get_date.return_date('regular') try: PortScannerPorts.insert( serv=serv, port=port, user_group_id=user_group_id, service_name=service_name, - date=funct.get_data('regular') + date=cur_date ).execute() except Exception as e: out_error(e) @@ -2828,17 +2856,19 @@ def delete_ports(serv): def insert_port_scanner_history(serv, port, port_status, service_name): + cur_date = get_date.return_date('regular') try: PortScannerHistory.insert( - serv=serv, port=port, status=port_status, service_name=service_name, date=funct.get_data('regular') + serv=serv, port=port, status=port_status, service_name=service_name, date=cur_date ).execute() except Exception as e: out_error(e) def delete_alert_history(keep_interval: int, service: str): + cur_date = get_date.return_date('regular', timedelta_minus=keep_interval) query = Alerts.delete().where( - (Alerts.date < funct.get_data('regular', timedelta_minus=keep_interval)) & (Alerts.service == service) + (Alerts.date < cur_date) & (Alerts.service == service) ) try: query.execute() @@ -2847,8 +2877,9 @@ def delete_alert_history(keep_interval: int, service: str): def delete_portscanner_history(keep_interval: int): + cur_date = get_date.return_date('regular', timedelta_minus=keep_interval) query = PortScannerHistory.delete().where( - PortScannerHistory.date < funct.get_data('regular', timedelta_minus=int(keep_interval))) + PortScannerHistory.date < cur_date) try: query.execute() except Exception as e: @@ -2866,10 +2897,11 @@ def select_port_scanner_history(serv): def add_provider_do(provider_name, provider_group, provider_token): + cur_date = get_date.return_date('regular') try: ProvidersCreds.insert( name=provider_name, type='do', group=provider_group, key=provider_token, - create_date=funct.get_data('regular'), edit_date=funct.get_data('regular') + create_date=cur_date, edit_date=cur_date ).execute() return True except Exception as e: @@ -2878,10 +2910,11 @@ def add_provider_do(provider_name, provider_group, provider_token): def add_provider_aws(provider_name, provider_group, provider_key, provider_secret): + cur_date = get_date.return_date('regular') try: ProvidersCreds.insert( name=provider_name, type='aws', group=provider_group, key=provider_key, secret=provider_secret, - create_date=funct.get_data('regular'), edit_date=funct.get_data('regular') + create_date=cur_date, edit_date=cur_date ).execute() return True except Exception as e: @@ -2890,10 +2923,11 @@ def add_provider_aws(provider_name, provider_group, provider_key, provider_secre def add_provider_gcore(provider_name, provider_group, provider_user, provider_pass): + cur_date = get_date.return_date('regular') try: ProvidersCreds.insert( name=provider_name, type='gcore', group=provider_group, key=provider_user, - secret=provider_pass, create_date=funct.get_data('regular'), edit_date=funct.get_data('regular') + secret=provider_pass, create_date=cur_date, edit_date=cur_date ).execute() return True except Exception as e: @@ -2934,12 +2968,13 @@ def add_server_aws( region, instance_type, public_ip, floating_ip, volume_size, ssh_key_name, name, os, firewall, provider_id, group_id, status, delete_on_termination, volume_type ): + cur_date = get_date.return_date('regular') try: ProvisionedServers.insert( region=region, instance_type=instance_type, public_ip=public_ip, floating_ip=floating_ip, volume_size=volume_size, volume_type=volume_type, ssh_key_name=ssh_key_name, name=name, os=os, firewall=firewall, provider_id=provider_id, group_id=group_id, delete_on_termination=delete_on_termination, - type='aws', status=status, date=funct.get_data('regular') + type='aws', status=status, date=cur_date ).execute() return True except Exception as e: @@ -2951,12 +2986,13 @@ def add_server_gcore( project, region, instance_type, network_type, network_name, volume_size, ssh_key_name, name, os, firewall, provider_id, group_id, status, delete_on_termination, volume_type ): + cur_date = get_date.return_date('regular') try: ProvisionedServers.insert( region=region, instance_type=instance_type, public_ip=network_type, network_name=network_name, volume_size=volume_size, volume_type=volume_type, ssh_key_name=ssh_key_name, name=name, os=os, firewall=firewall, provider_id=provider_id, group_id=group_id, type='gcore', - delete_on_termination=delete_on_termination, project=project, status=status, date=funct.get_data('regular') + delete_on_termination=delete_on_termination, project=project, status=status, date=cur_date ).execute() return True except Exception as e: @@ -2968,12 +3004,13 @@ def add_server_do( region, size, privet_net, floating_ip, ssh_ids, ssh_key_name, name, oss, firewall, monitoring, backup, provider_id, group_id, status ): + cur_date = get_date.return_date('regular') try: ProvisionedServers.insert( region=region, instance_type=size, private_networking=privet_net, floating_ip=floating_ip, ssh_ids=ssh_ids, ssh_key_name=ssh_key_name, name=name, os=oss, firewall=firewall, monitoring=monitoring, backup=backup, provider_id=provider_id, group_id=group_id, - type='do', status=status, date=funct.get_data('regular') + type='do', status=status, date=cur_date ).execute() return True except Exception as e: @@ -3186,9 +3223,10 @@ def select_do_provider(provider_id): def update_do_provider(new_name, new_token, provider_id): + cur_date = get_date.return_date('regular') try: ProvidersCreds.update( - name=new_name, key=new_token, edit_date=funct.get_data('regular') + name=new_name, key=new_token, edit_date=cur_date ).where(ProvidersCreds.id == provider_id).execute() return True except Exception as e: @@ -3197,9 +3235,10 @@ def update_do_provider(new_name, new_token, provider_id): def update_gcore_provider(new_name, new_user, new_pass, provider_id): + cur_date = get_date.return_date('regular') try: ProvidersCreds.update( - name=new_name, key=new_user, secret=new_pass, edit_date=funct.get_data('regular') + name=new_name, key=new_user, secret=new_pass, edit_date=cur_date ).where(ProvidersCreds.id == provider_id).execute() return True except Exception as e: @@ -3208,9 +3247,10 @@ def update_gcore_provider(new_name, new_user, new_pass, provider_id): def update_aws_provider(new_name, new_key, new_secret, provider_id): + cur_date = get_date.return_date('regular') try: ProvidersCreds.update( - name=new_name, key=new_key, secret=new_secret, edit_date=funct.get_data('regular') + name=new_name, key=new_key, secret=new_secret, edit_date=cur_date ).where(ProvidersCreds.id == provider_id).execute() return True except Exception as e: @@ -3343,6 +3383,7 @@ def delete_service_settings(server_id: int): def insert_action_history(service: str, action: str, server_id: int, user_id: int, user_ip: str): + cur_date = get_date.return_date('regular') try: ActionHistory.insert( service=service, @@ -3350,7 +3391,7 @@ def insert_action_history(service: str, action: str, server_id: int, user_id: in server_id=server_id, user_id=user_id, ip=user_ip, - date=funct.get_data('regular') + date=cur_date ).execute() except Exception as e: out_error(e) @@ -3401,6 +3442,7 @@ def select_action_history_by_server_id_and_service(server_id: int, service: str) def insert_config_version(server_id: int, user_id: int, service: str, local_path: str, remote_path: str, diff: str): + cur_date = get_date.return_date('regular') try: ConfigVersion.insert( server_id=server_id, @@ -3409,7 +3451,7 @@ def insert_config_version(server_id: int, user_id: int, service: str, local_path local_path=local_path, remote_path=remote_path, diff=diff, - date=funct.get_data('regular') + date=cur_date ).execute() except Exception as e: out_error(e) @@ -3459,16 +3501,13 @@ def select_remote_path_from_version(server_ip: str, service: str, local_path: st def insert_system_info( server_id: int, os_info: str, sys_info: str, cpu: str, ram: str, network: str, disks: str -) -> bool: +): try: SystemInfo.insert( server_id=server_id, os_info=os_info, sys_info=sys_info, cpu=cpu, ram=ram, network=network, disks=disks ).on_conflict('replace').execute() except Exception as e: out_error(e) - return False - else: - return True def delete_system_info(server_id: int): diff --git a/app/templates/include/mon_installation.html b/app/templates/include/mon_installation.html index 3b13e51e..b7015b17 100644 --- a/app/templates/include/mon_installation.html +++ b/app/templates/include/mon_installation.html @@ -34,21 +34,20 @@ - + - + + - + @@ -65,10 +65,10 @@

Install HAProxy Exporter

Current installationCurrent installation Available VersionsExternal Prometheus ServerExternal Prometheus
{% set values = dict() %} - {% set values = {'0.7.0':'0.7.0','0.7.1':'0.7.1', '0.8.0':'0.8.0', '0.9.0':'0.9.0', '0.10.0':'0.10.0', - '0.11.0':'0.11.0', '0.12.0':'0.12.0', '0.13.0':'0.13.0'} %} + {% set values = {'0.7.0':'0.7.0','0.7.1':'0.7.1', '0.8.0':'0.8.0', '0.9.0':'0.9.0', '0.10.0':'0.10.0', '0.11.0':'0.11.0', '0.12.0':'0.12.0', '0.13.0':'0.13.0'} %} {{ select('hapexpver', values=values, selected='0.13.0') }} {{ checkbox('haproxy_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }} {{ checkbox('haproxy_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }} Install
- + - + @@ -79,7 +79,6 @@ {% set values = {'0.5.0':'0.5.0', '0.6.0':'0.6.0', '0.7.0':'0.7.0', '0.9.0':'0.9.0', '0.10.0':'0.10.0'} %} {{ select('nginxexpver', values=values, selected='0.10.0') }} - + @@ -96,10 +96,10 @@

Install NGINX Exporter

Current installationCurrent installation Available VersionsExternal Prometheus ServerExternal Prometheus
{{ checkbox('nginx_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }} {{ checkbox('nginx_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }} Install
- + - + @@ -110,7 +110,6 @@ {% set values = {'0.7.0':'0.7.0', '0.8.0':'0.8.0', '0.9.0':'0.9.0', '0.10.0':'0.10.0'} %} {{ select('apacheexpver', values=values, selected='0.10.0') }} - + @@ -127,10 +127,10 @@

Install Apache Exporter

Current installationCurrent installation Available VersionsExternal Prometheus ServerExternal Prometheus
{{ checkbox('apache_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }} {{ checkbox('apache_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }} Install
- + - + @@ -142,7 +142,6 @@ '1.2.2':'1.2.2', '1.3.0':'1.3.0', '1.3.1':'1.3.1'} %} {{ select('nodeexpver', values=values, selected='1.3.1') }} - + diff --git a/inc/users.js b/inc/users.js index 0c539f9e..3ce4e465 100644 --- a/inc/users.js +++ b/inc/users.js @@ -302,7 +302,7 @@ $( function() { type: "POST", success: function( data ) { data = data.replace(/^\s+|\s+$/g,''); - if(data.indexOf('bash') != '-1' || data.indexOf('such') != '-1' || data.indexOf('command not found') != '-1') { + if(data.indexOf('bash') != '-1' || data.indexOf('such') != '-1' || data.indexOf('command not found') != '-1' || data.indexOf('from') != '-1') { $('#cur_nginx_ver').text('Nginx has not installed'); $('#nginx_install').text('Install'); $('#nginx_install').attr('title', 'Install Nginx'); @@ -333,7 +333,6 @@ $( function() { $('#cur_haproxy_exp_ver').text('HAProxy exporter has been not installed'); } else { $('#cur_haproxy_exp_ver').text(data); - $('#cur_haproxy_exp_ver').css('font-weight', 'bold'); } } } ); @@ -356,7 +355,6 @@ $( function() { $('#cur_nginx_exp_ver').text('NGINX exporter has not been installed'); } else { $('#cur_nginx_exp_ver').text(data); - $('#cur_nginx_exp_ver').css('font-weight', 'bold'); } } } ); @@ -379,7 +377,6 @@ $( function() { $('#cur_apache_exp_ver').text('Apache exporter has not been installed'); } else { $('#cur_apache_exp_ver').text(data); - $('#cur_apache_exp_ver').css('font-weight', 'bold'); } } } ); @@ -402,7 +399,6 @@ $( function() { $('#cur_node_exp_ver').text('Node exporter has not been installed'); } else { $('#cur_node_exp_ver').text(data); - $('#cur_node_exp_ver').css('font-weight', 'bold'); } } } );

Install Node Exporter

Current installationCurrent installation Available VersionsExternal Prometheus ServerExternal Prometheus
{{ checkbox('node_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }} {{ checkbox('node_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }} Install