diff --git a/app/create_db.py b/app/create_db.py index 8f2be1e8..9a442228 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -65,6 +65,7 @@ def default_values(): {'param': 'portscanner_keep_history_range', 'value': '14', 'section': 'monitoring', 'desc': 'Retention period for Port scanner history', 'group': '1'}, {'param': 'smon_keep_history_range', 'value': '14', 'section': 'monitoring', 'desc': 'Retention period for SMON history', 'group': '1'}, {'param': 'checker_keep_history_range', 'value': '14', 'section': 'monitoring', 'desc': 'Retention period for Checker history', 'group': '1'}, + {'param': 'action_keep_history_range', 'value': '30', 'section': 'monitoring', 'desc': 'Retention period for Action history', 'group': '1'}, {'param': 'checker_maxconn_threshold', 'value': '90', 'section': 'monitoring', 'desc': 'Threshold value for alerting, in %', 'group': '1'}, {'param': 'checker_check_interval', 'value': '1', 'section': 'monitoring', 'desc': 'Check interval for Checker (in minutes)', 'group': '1'}, {'param': 'smon_ssl_expire_warning_alert', 'value': '14', 'section': 'monitoring', 'desc': 'Warning alert about a SSL certificate expiration (in days)', 'group': '1'}, @@ -811,9 +812,25 @@ def update_db_v_6_3_9(): print("Updating... DB has been updated to version 6.3.9") +def update_db_v_6_3_11(): + cursor = conn.cursor() + sql = """ + ALTER TABLE `smon` ADD COLUMN pd_channel_id integer default 0; + """ + try: + cursor.execute(sql) + except Exception as e: + if e.args[0] == 'duplicate column name: pd_channel_id' or str(e) == '(1060, "Duplicate column name \'pd_channel_id\'")': + print('Updating... DB has been updated to version 6.3.11') + else: + print("An error occurred:", e) + else: + print("Updating... DB has been updated to version 6.3.11") + + def update_ver(): try: - Version.update(version='6.3.10.0').execute() + Version.update(version='6.3.11.0').execute() except Exception: print('Cannot update version') @@ -842,6 +859,7 @@ def update_all(): update_db_v_6_3_6() update_db_v_6_3_8() update_db_v_6_3_9() + update_db_v_6_3_11() update_ver() diff --git a/app/history.py b/app/history.py index e6c969c6..4edbdade 100644 --- a/app/history.py +++ b/app/history.py @@ -40,6 +40,11 @@ except Exception as e: user_subscription = roxywi_common.return_unsubscribed_user_status() roxywi_common.logging('Roxy-WI server', f'Cannot get a user plan: {e}', roxywi=1) +try: + sql.delete_action_history_for_period() +except Exception as e: + print(e) + rendered_template = template.render( h2=1, autorefresh=0, role=user_params['role'], user=user_params['user'], users=users, serv=serv, service=service, history=history, user_services=user_params['user_services'], token=user_params['token'], diff --git a/app/modules/db/db_model.py b/app/modules/db/db_model.py index ec102582..c2a14db1 100644 --- a/app/modules/db/db_model.py +++ b/app/modules/db/db_model.py @@ -431,6 +431,7 @@ class SMON(BaseModel): ssl_expire_warning_alert = IntegerField(constraints=[SQL('DEFAULT 0')]) ssl_expire_critical_alert = IntegerField(constraints=[SQL('DEFAULT 0')]) ssl_expire_date = CharField(null=True) + pd_channel_id = IntegerField(null=True) class Meta: table_name = 'smon' diff --git a/app/modules/db/sql.py b/app/modules/db/sql.py index 7c9fab02..5301d42a 100755 --- a/app/modules/db/sql.py +++ b/app/modules/db/sql.py @@ -48,7 +48,7 @@ def get_setting(param, **kwargs): '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', 'smon_ssl_expire_warning_alert', - 'smon_ssl_expire_critical_alert' + 'smon_ssl_expire_critical_alert', 'action_keep_history_range' ): return int(setting.value) else: @@ -2474,7 +2474,7 @@ def check_token_exists(token): return False -def insert_smon(server, port, enable, proto, uri, body, group, desc, telegram, slack, user_group): +def insert_smon(server, port, enable, proto, uri, body, group, desc, telegram, slack, pd, user_group): try: http = proto + ':' + uri except Exception: @@ -2483,7 +2483,7 @@ def insert_smon(server, port, enable, proto, uri, body, group, desc, telegram, s try: last_id = SMON.insert( ip=server, port=port, en=enable, desc=desc, group=group, http=http, body=body, - telegram_channel_id=telegram, slack_channel_id=slack, user_group=user_group, status='3' + telegram_channel_id=telegram, slack_channel_id=slack, pd_channel_id=pd, user_group=user_group, status='3' ).execute() except Exception as e: out_error(e) @@ -2508,11 +2508,11 @@ def select_smon(user_group, **kwargs): http = kwargs.get('proto') + ':' + kwargs.get('uri') except Exception: http = '' - sql = """select id, ip, port, en, http, body, telegram_channel_id, `desc`, `group`, user_group, slack_channel_id from smon + sql = """select id, ip, port, en, http, body, telegram_channel_id, `desc`, `group`, user_group, slack_channel_id, pd_channel_id from smon where ip='%s' and port='%s' and http='%s' and body='%s' %s """ % (kwargs.get('ip'), kwargs.get('port'), http, body, user_group) elif kwargs.get('action') == 'add': - sql = """select id, ip, port, en, http, body, telegram_channel_id, `desc`, `group`, user_group, slack_channel_id from smon + sql = """select id, ip, port, en, http, body, telegram_channel_id, `desc`, `group`, user_group, slack_channel_id, pd_channel_id from smon %s order by `group`""" % user_group else: sql = """select * from `smon` %s """ % user_group @@ -2527,7 +2527,7 @@ def select_smon(user_group, **kwargs): def select_smon_by_id(last_id): cursor = conn.cursor() - sql = """select id, ip, port, en, http, body, telegram_channel_id, `desc`, `group`, user_group, slack_channel_id + sql = """select id, ip, port, en, http, body, telegram_channel_id, `desc`, `group`, user_group, slack_channel_id, pd_channel_id from `smon` where id = {} """.format(last_id) try: @@ -2549,9 +2549,9 @@ def delete_smon(smon_id, user_group): return True -def update_smon(smon_id, ip, port, body, telegram, slack, group, desc, en): +def update_smon(smon_id, ip, port, body, telegram, slack, pd, group, desc, en): query = (SMON.update( - ip=ip, port=port, body=body, telegram_channel_id=telegram, slack_channel_id=slack, group=group, desc=desc, en=en + ip=ip, port=port, body=body, telegram_channel_id=telegram, slack_channel_id=slack, pd_channel_id=pd, group=group, desc=desc, en=en ).where(SMON.id == smon_id)) try: query.execute() @@ -3479,6 +3479,16 @@ def delete_action_history(server_id: int): return True +def delete_action_history_for_period(): + time_period = get_setting('action_keep_history_range') + cur_date = get_date.return_date('regular', timedelta_minus=time_period) + query = ActionHistory.delete().where(ActionHistory.date < cur_date) + try: + query.execute() + except Exception as e: + out_error(e) + + def select_action_history_by_server_id(server_id: int): query = ActionHistory.select().where(ActionHistory.server_id == server_id) try: diff --git a/app/modules/tools/__init__.py b/app/modules/tools/__init__.py new file mode 100644 index 00000000..f52e9ce2 --- /dev/null +++ b/app/modules/tools/__init__.py @@ -0,0 +1 @@ +NAME = 'roxy-wi-tools-module' diff --git a/app/modules/tools/smon.py b/app/modules/tools/smon.py new file mode 100644 index 00000000..c29bd34c --- /dev/null +++ b/app/modules/tools/smon.py @@ -0,0 +1,110 @@ +from jinja2 import Environment, FileSystemLoader + +import modules.db.sql as sql +import modules.common.common as common +import modules.roxywi.common as roxywi_common + +form = common.form + + +def create_smon() -> None: + user_group = roxywi_common.get_user_group(id=1) + server = common.checkAjaxInput(form.getvalue('newsmon')) + port = common.checkAjaxInput(form.getvalue('newsmonport')) + enable = common.checkAjaxInput(form.getvalue('newsmonenable')) + http = common.checkAjaxInput(form.getvalue('newsmonproto')) + uri = common.checkAjaxInput(form.getvalue('newsmonuri')) + body = common.checkAjaxInput(form.getvalue('newsmonbody')) + group = common.checkAjaxInput(form.getvalue('newsmongroup')) + desc = common.checkAjaxInput(form.getvalue('newsmondescription')) + telegram = common.checkAjaxInput(form.getvalue('newsmontelegram')) + slack = common.checkAjaxInput(form.getvalue('newsmonslack')) + pd = common.checkAjaxInput(form.getvalue('newsmonpd')) + + try: + port = int(port) + except Exception: + print('SMON error: port must number') + return None + if port > 65535 or port < 0: + print('SMON error: port must be 0-65535') + return None + if port == 80 and http == 'https': + print('SMON error: Cannot be HTTPS with 80 port') + return None + if port == 443 and http == 'http': + print('SMON error: Cannot be HTTP with 443 port') + return None + + last_id = sql.insert_smon(server, port, enable, http, uri, body, group, desc, telegram, slack, pd, user_group) + if last_id: + lang = roxywi_common.get_user_lang() + smon = sql.select_smon_by_id(last_id) + pds = sql.get_user_pd_by_group(user_group) + slacks = sql.get_user_slack_by_group(user_group) + telegrams = sql.get_user_telegram_by_group(user_group) + env = Environment(loader=FileSystemLoader('templates'), autoescape=True) + template = env.get_template('ajax/show_new_smon.html') + template = template.render(smon=smon, telegrams=telegrams, slacks=slacks, pds=pds, lang=lang) + print(template) + roxywi_common.logging('SMON', f' A new server {server} to SMON has been add ', roxywi=1, login=1) + + +def update_smon() -> None: + smon_id = common.checkAjaxInput(form.getvalue('id')) + ip = common.checkAjaxInput(form.getvalue('updateSmonIp')) + port = common.checkAjaxInput(form.getvalue('updateSmonPort')) + en = common.checkAjaxInput(form.getvalue('updateSmonEn')) + http = common.checkAjaxInput(form.getvalue('updateSmonHttp')) + body = common.checkAjaxInput(form.getvalue('updateSmonBody')) + telegram = common.checkAjaxInput(form.getvalue('updateSmonTelegram')) + slack = common.checkAjaxInput(form.getvalue('updateSmonSlack')) + pd = common.checkAjaxInput(form.getvalue('updateSmonPD')) + group = common.checkAjaxInput(form.getvalue('updateSmonGroup')) + desc = common.checkAjaxInput(form.getvalue('updateSmonDesc')) + + try: + port = int(port) + except Exception: + print('SMON error: port must number') + return None + if port > 65535 or port < 0: + print('SMON error: port must be 0-65535') + return None + if port == 80 and http == 'https': + print('SMON error: Cannot be https with 80 port') + return None + if port == 443 and http == 'http': + print('SMON error: Cannot be HTTP with 443 port') + return None + + roxywi_common.check_user_group() + try: + if sql.update_smon(smon_id, ip, port, body, telegram, slack, pd, group, desc, en): + print("Ok") + roxywi_common.logging('SMON', f' The SMON server {ip} has been update ', roxywi=1, login=1) + except Exception as e: + print(e) + + +def show_smon() -> None: + user_group = roxywi_common.get_user_group(id=1) + lang = roxywi_common.get_user_lang() + sort = common.checkAjaxInput(form.getvalue('sort')) + 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, lang=lang, update=1) + print(template) + + +def delete_smon() -> None: + user_group = roxywi_common.get_user_group(id=1) + smon_id = common.checkAjaxInput(form.getvalue('smondel')) + + if roxywi_common.check_user_group(): + try: + if sql.delete_smon(smon_id, user_group): + print('Ok') + roxywi_common.logging('SMON', ' The server from SMON has been delete ', roxywi=1, login=1) + except Exception as e: + print(e) diff --git a/app/options.py b/app/options.py index 8e907645..9b0cd949 100644 --- a/app/options.py +++ b/app/options.py @@ -27,16 +27,10 @@ serv = common.is_ip_or_dns(form.getvalue('serv')) act = form.getvalue("act") token = form.getvalue("token") -if ( - form.getvalue('new_metrics') - or form.getvalue('new_http_metrics') - or form.getvalue('new_waf_metrics') - or form.getvalue('new_nginx_metrics') - or form.getvalue('new_apache_metrics') - or form.getvalue('metrics_hapwi_ram') - or form.getvalue('metrics_hapwi_cpu') - or form.getvalue('getoption') - or form.getvalue('getsavedserver') +if any(( + form.getvalue('new_metrics'), form.getvalue('new_http_metrics'), form.getvalue('new_waf_metrics'), form.getvalue('new_nginx_metrics'), + form.getvalue('new_apache_metrics'), form.getvalue('metrics_hapwi_ram'), form.getvalue('metrics_hapwi_cpu'), form.getvalue('getoption'), + form.getvalue('getsavedserver')) ): print('Content-type: application/json\n') else: @@ -500,8 +494,7 @@ if form.getvalue('git_backup'): print(template) print('success: Git job has been created') roxywi_common.logging( - server_ip, ' A new git job has been created', roxywi=1, login=1, - keep_history=1, service=service_name + server_ip, ' A new git job has been created', roxywi=1, login=1, keep_history=1, service=service_name ) else: if sql.delete_git(form.getvalue('git_backup')): @@ -801,8 +794,7 @@ if form.getvalue('updateserver') is not None: sql.update_server(name, group, typeip, enable, master, serv_id, cred, port, desc, firewall, protected) roxywi_common.logging(f'the server {name}', ' has been updated ', roxywi=1, login=1) server_ip = sql.select_server_ip_by_id(serv_id) - roxywi_common.logging(server_ip, f'The server {name} has been update', roxywi=1, login=1, - keep_history=1, service='server') + roxywi_common.logging(server_ip, f'The server {name} has been update', roxywi=1, login=1, keep_history=1, service='server') if form.getvalue('serverdel') is not None: server_id = common.checkAjaxInput(form.getvalue('serverdel')) @@ -893,8 +885,7 @@ if form.getvalue('updatesettings') is not None: val = common.checkAjaxInput(form.getvalue('val')) user_group = roxywi_common.get_user_group(id=1) if sql.update_setting(settings, val, user_group): - roxywi_common.logging('Roxy-WI server', f'The {settings} setting has been changed to: {val}', roxywi=1, - login=1) + roxywi_common.logging('Roxy-WI server', f'The {settings} setting has been changed to: {val}', roxywi=1, login=1) print("Ok") if form.getvalue('getuserservices'): @@ -932,102 +923,24 @@ if form.getvalue('getcurrentusergroup') is not None: roxy_user.get_user_active_group(user_id, group) if form.getvalue('newsmon') is not None: - user_group = roxywi_common.get_user_group(id=1) - server = common.checkAjaxInput(form.getvalue('newsmon')) - port = common.checkAjaxInput(form.getvalue('newsmonport')) - enable = common.checkAjaxInput(form.getvalue('newsmonenable')) - http = common.checkAjaxInput(form.getvalue('newsmonproto')) - uri = common.checkAjaxInput(form.getvalue('newsmonuri')) - body = common.checkAjaxInput(form.getvalue('newsmonbody')) - group = common.checkAjaxInput(form.getvalue('newsmongroup')) - desc = common.checkAjaxInput(form.getvalue('newsmondescription')) - telegram = common.checkAjaxInput(form.getvalue('newsmontelegram')) - slack = common.checkAjaxInput(form.getvalue('newsmonslack')) + import modules.tools.smon as smon_mod - try: - port = int(port) - except Exception: - 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() - - last_id = sql.insert_smon(server, port, enable, http, uri, body, group, desc, telegram, slack, user_group) - if last_id: - lang = roxywi_common.get_user_lang() - env = Environment(loader=FileSystemLoader('templates'), autoescape=True) - template = env.get_template('ajax/show_new_smon.html') - template = template.render( - smon=sql.select_smon_by_id(last_id), - telegrams=sql.get_user_telegram_by_group(user_group), - slacks=sql.get_user_slack_by_group(user_group), - lang=lang - ) - print(template) - roxywi_common.logging('SMON', f' Has been add a new server {server} to SMON ', roxywi=1, login=1) + smon_mod.create_smon() if form.getvalue('smondel') is not None: - user_group = roxywi_common.get_user_group(id=1) - smon_id = common.checkAjaxInput(form.getvalue('smondel')) + import modules.tools.smon as smon_mod - if roxywi_common.check_user_group(): - try: - if sql.delete_smon(smon_id, user_group): - print('Ok') - roxywi_common.logging('SMON', ' Has been delete server from SMON ', roxywi=1, login=1) - except Exception as e: - print(e) + smon_mod.delete_smon() if form.getvalue('showsmon') is not None: - user_group = roxywi_common.get_user_group(id=1) - lang = roxywi_common.get_user_lang() - sort = common.checkAjaxInput(form.getvalue('sort')) - 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, lang=lang, update=1) - print(template) + import modules.tools.smon as smon_mod + + smon_mod.show_smon() if form.getvalue('updateSmonIp') is not None: - smon_id = common.checkAjaxInput(form.getvalue('id')) - ip = common.checkAjaxInput(form.getvalue('updateSmonIp')) - port = common.checkAjaxInput(form.getvalue('updateSmonPort')) - en = common.checkAjaxInput(form.getvalue('updateSmonEn')) - http = common.checkAjaxInput(form.getvalue('updateSmonHttp')) - body = common.checkAjaxInput(form.getvalue('updateSmonBody')) - telegram = common.checkAjaxInput(form.getvalue('updateSmonTelegram')) - slack = common.checkAjaxInput(form.getvalue('updateSmonSlack')) - group = common.checkAjaxInput(form.getvalue('updateSmonGroup')) - desc = common.checkAjaxInput(form.getvalue('updateSmonDesc')) + import modules.tools.smon as smon_mod - try: - port = int(port) - except Exception: - 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() - - roxywi_common.check_user_group() - try: - if sql.update_smon(smon_id, ip, port, body, telegram, slack, group, desc, en): - print("Ok") - roxywi_common.logging('SMON', f' Has been update the server {ip} to SMON ', roxywi=1, login=1) - except Exception as e: - print(e) + smon_mod.update_smon() if form.getvalue('showBytes') is not None: import modules.roxywi.overview as roxywi_overview @@ -1079,7 +992,7 @@ if form.getvalue('uploadovpn'): conf.write(form.getvalue('uploadovpn')) except IOError as e: print(str(e)) - print('error: Can\'t save ovpn file') + print('error: Cannot save ovpn file') else: print('success: ovpn file has been saved ') @@ -1095,7 +1008,7 @@ if form.getvalue('uploadovpn'): except IOError as e: roxywi_common.logging('Roxy-WI server', e.args[0], roxywi=1) - roxywi_common.logging("Roxy-WI server", " has been uploaded a new ovpn file %s" % ovpn_file, roxywi=1, login=1) + roxywi_common.logging("Roxy-WI server", f" has been uploaded a new ovpn file {ovpn_file}", roxywi=1, login=1) if form.getvalue('openvpndel') is not None: openvpndel = common.checkAjaxInput(form.getvalue('openvpndel')) @@ -1114,15 +1027,18 @@ if form.getvalue('actionvpn') is not None: action = common.checkAjaxInput(form.getvalue('actionvpn')) if action == 'start': - cmd = 'sudo openvpn3 session-start --config /tmp/%s.ovpn' % openvpn + cmd = f'sudo openvpn3 session-start --config /tmp/{openvpn}.ovpn' elif action == 'restart': - cmd = 'sudo openvpn3 session-manage --config /tmp/%s.ovpn --restart' % openvpn + cmd = f'sudo openvpn3 session-manage --config /tmp/{openvpn}.ovpn --restart' elif action == 'disconnect': - cmd = 'sudo openvpn3 session-manage --config /tmp/%s.ovpn --disconnect' % openvpn + cmd = f'sudo openvpn3 session-manage --config /tmp/{openvpn}.ovpn --disconnect' + else: + print('error: wrong action') + sys.exit() try: server_mod.subprocess_execute(cmd) - print("success: The " + openvpn + " has been " + action + "ed") - roxywi_common.logging(openvpn, ' has ' + action + ' the ovpn session ', roxywi=1, login=1) + print(f"success: The {openvpn} has been {action}ed") + roxywi_common.logging(openvpn, f' The ovpn session has been {action}ed ', roxywi=1, login=1) except IOError as e: print(e.args[0]) roxywi_common.logging('Roxy-WI server', e.args[0], roxywi=1) @@ -1135,8 +1051,8 @@ if form.getvalue('scan_ports') is not None: for s in server: ip = s[2] - cmd = "sudo nmap -sS %s |grep -E '^[[:digit:]]'|sed 's/ */ /g'" % ip - cmd1 = "sudo nmap -sS %s |head -5|tail -2" % ip + cmd = f"sudo nmap -sS {ip} |grep -E '^[[:digit:]]'|sed 's/ */ /g'" + cmd1 = f"sudo nmap -sS {ip} |head -5|tail -2" stdout, stderr = server_mod.subprocess_execute(cmd) stdout1, stderr1 = server_mod.subprocess_execute(cmd1) @@ -1158,7 +1074,6 @@ if form.getvalue('geoipserv') is not None: service = common.checkAjaxInput(form.getvalue('geoip_service')) if service in ('haproxy', 'nginx'): service_dir = common.return_nice_path(sql.get_setting(f'{service}_dir')) - cmd = [f"ls {service_dir}geoip/"] print(server_mod.ssh_command(serv, cmd)) else: @@ -2223,10 +2138,10 @@ if act == 'showListOfVersion': for_delver = common.checkAjaxInput(form.getvalue('for_delver')) users = sql.select_users() service_desc = sql.select_service(service) + configs = sql.select_config_version(serv, service_desc.slug) lang = roxywi_common.get_user_lang() if service in ('haproxy', 'nginx', 'keepalived', 'apache'): - configs = sql.select_config_version(serv, service_desc.slug) action = f'versions.py?service={service_desc.slug}' if service in ('haproxy', 'nginx', 'apache'): @@ -2239,20 +2154,20 @@ if act == 'showListOfVersion': else: files = roxywi_common.get_files(configs_dir, 'conf') - env = Environment(loader=FileSystemLoader('templates/'), autoescape=True, - extensions=["jinja2.ext.loopcontrols", "jinja2.ext.do"]) - template = env.get_template('ajax/show_list_version.html') + env = Environment(loader=FileSystemLoader('templates/'), autoescape=True, + extensions=["jinja2.ext.loopcontrols", "jinja2.ext.do"]) + template = env.get_template('ajax/show_list_version.html') - template = template.render(serv=serv, - service=service, - action=action, - return_files=files, - configver=configver, - for_delver=for_delver, - configs=configs, - users=users, - lang=lang) - print(template) + template = template.render(serv=serv, + service=service, + action=action, + return_files=files, + configver=configver, + for_delver=for_delver, + configs=configs, + users=users, + lang=lang) + print(template) if act == 'getSystemInfo': server_mod.show_system_info() diff --git a/app/smon.py b/app/smon.py index 07338484..b83b5da8 100644 --- a/app/smon.py +++ b/app/smon.py @@ -27,13 +27,18 @@ action = form.getvalue('action') sort = form.getvalue('sort') autorefresh = 0 lang = user_params['lang'] - +telegrams = '' +slacks = '' +pds = '' user_group = roxywi_common.get_user_group(id=1) cmd = "systemctl is-active roxy-wi-smon" smon_status, stderr = server_mod.subprocess_execute(cmd) if action == 'add': + telegrams = sql.get_user_telegram_by_group(user_group) + slacks = sql.get_user_slack_by_group(user_group) + pds = sql.get_user_pd_by_group(user_group) smon = sql.select_smon(user_group, action='add') roxywi_auth.page_for_admin(level=3) if lang == 'ru': @@ -80,8 +85,8 @@ except Exception as e: rendered_template = template.render( h2=1, title=title, autorefresh=autorefresh, role=user_params['role'], user=user_params['user'], group=user_group, - telegrams=sql.get_user_telegram_by_group(user_group), slacks=sql.get_user_slack_by_group(user_group), lang=lang, - smon=smon, smon_status=smon_status, smon_error=stderr, action=action, sort=sort, user_services=user_params['user_services'], - user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], token=user_params['token'] + telegrams=telegrams, slacks=slacks, pds=pds, lang=lang, smon=smon, smon_status=smon_status, smon_error=stderr, + action=action, sort=sort, user_services=user_params['user_services'], user_status=user_subscription['user_status'], + user_plan=user_subscription['user_plan'], token=user_params['token'] ) print(rendered_template) diff --git a/app/templates/history.html b/app/templates/history.html index 65d641b2..9bbda07e 100644 --- a/app/templates/history.html +++ b/app/templates/history.html @@ -7,21 +7,34 @@ {% include 'include/no_sub.html' %} {% else %} + + + + + + diff --git a/app/templates/include/admin_settings.html b/app/templates/include/admin_settings.html index 82a7c355..5e178478 100644 --- a/app/templates/include/admin_settings.html +++ b/app/templates/include/admin_settings.html @@ -42,14 +42,15 @@ {% if set.param in ('ldap_password', 'stats_password', 'nginx_stats_password', 'apache_stats_password', 'rabbitmq_password', 'mail_smtp_password') %} {% if set.value is none %} - {{ input(set.param, size='25', type='password') }} + {{ input(set.param, size='25', type='password', style='width: 210px;') }} {% else %} - {{ input(set.param, size='25', type='password', placeholder='******') }} + {{ input(set.param, size='25', type='password', style='width: 210px;', placeholder='******') }} {% endif %} {% elif set.param in ('nginx_stats_port', 'session_ttl', 'token_ttl', 'stats_port', 'haproxy_sock_port', 'ldap_port', 'log_time_storage', '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', 'mail_smtp_port', 'rabbitmq_port') %} + 'checker_maxconn_threshold', 'apache_stats_port', 'mail_smtp_port', 'rabbitmq_port', 'smon_ssl_expire_warning_alert', + 'smon_ssl_expire_critical_alert', 'action_keep_history_range') %} {{ input(set.param, value=set.value, style='width: 210px;', type='number') }} {% elif set.param == 'time_zone' %} + + + {% set id = 'smon-group-' + s.0|string() %} {% if s.8 is not none %} @@ -87,10 +99,13 @@