diff --git a/app/create_db.py b/app/create_db.py index ef5bf612..8f2be1e8 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -795,6 +795,22 @@ def update_db_v_6_3_8(): print("Updating... DB has been updated to version 6.3.8") +def update_db_v_6_3_9(): + cursor = conn.cursor() + sql = """ + ALTER TABLE `checker_setting` ADD COLUMN pd_id integer default 0; + """ + try: + cursor.execute(sql) + except Exception as e: + if e.args[0] == 'duplicate column name: pd_id' or str(e) == '(1060, "Duplicate column name \'pd_id\'")': + print('Updating... DB has been updated to version 6.3.9') + else: + print("An error occurred:", e) + else: + print("Updating... DB has been updated to version 6.3.9") + + def update_ver(): try: Version.update(version='6.3.10.0').execute() @@ -825,6 +841,7 @@ def update_all(): update_db_v_6_3_5() update_db_v_6_3_6() update_db_v_6_3_8() + update_db_v_6_3_9() update_ver() diff --git a/app/modules/alerting/alerting.py b/app/modules/alerting/alerting.py index 7c1fecd4..bdc1c8cb 100644 --- a/app/modules/alerting/alerting.py +++ b/app/modules/alerting/alerting.py @@ -54,22 +54,34 @@ def alert_routing( for setting in checker_settings: if alert_type == 'service' and setting.service_alert: - telegram_send_mess(mes, level, telegram_channel_id=setting.telegram_id) - slack_send_mess(mes, level, slack_channel_id=setting.slack_id) + try: + telegram_send_mess(mes, level, channel_id=setting.telegram_id) + slack_send_mess(mes, level, channel_id=setting.slack_id) + pd_send_mess(mes, level, server_ip, service_id, alert_type, channel_id=setting.pd_id) + except Exception as e: + roxywi_common.logging('Roxy-WI server', f'error: unable to send message: {e}', roxywi=1) if setting.email: send_email_to_server_group(subject, mes, level, group_id) if alert_type == 'backend' and setting.backend_alert: - telegram_send_mess(mes, level, telegram_channel_id=setting.telegram_id) - slack_send_mess(mes, level, slack_channel_id=setting.slack_id) + try: + telegram_send_mess(mes, level, channel_id=setting.telegram_id) + slack_send_mess(mes, level, channel_id=setting.slack_id) + pd_send_mess(mes, level, server_ip, service_id, alert_type, channel_id=setting.pd_id) + except Exception as e: + roxywi_common.logging('Roxy-WI server', f'error: unable to send message: {e}', roxywi=1) if setting.email: send_email_to_server_group(subject, mes, level, group_id) if alert_type == 'maxconn' and setting.maxconn_alert: - telegram_send_mess(mes, level, telegram_channel_id=setting.telegram_id) - slack_send_mess(mes, level, slack_channel_id=setting.slack_id) + try: + telegram_send_mess(mes, level, channel_id=setting.telegram_id) + slack_send_mess(mes, level, channel_id=setting.slack_id) + pd_send_mess(mes, level, server_ip, service_id, alert_type, channel_id=setting.pd_id) + except Exception as e: + roxywi_common.logging('Roxy-WI server', f'error: unable to send message: {e}', roxywi=1) if setting.email: send_email_to_server_group(subject, mes, level, group_id) @@ -122,11 +134,11 @@ def telegram_send_mess(mess, level, **kwargs): token_bot = '' channel_name = '' - if kwargs.get('telegram_channel_id') == 0: + if kwargs.get('channel_id') == 0: return - if kwargs.get('telegram_channel_id'): - telegrams = sql.get_telegram_by_id(kwargs.get('telegram_channel_id')) + if kwargs.get('channel_id'): + telegrams = sql.get_telegram_by_id(kwargs.get('channel_id')) else: telegrams = sql.get_telegram_by_ip(kwargs.get('ip')) @@ -147,6 +159,7 @@ def telegram_send_mess(mess, level, **kwargs): bot.send_message(chat_id=channel_name, text=f'{level}: {mess}') except Exception as e: roxywi_common.logging('Roxy-WI server', str(e), roxywi=1) + raise Exception(f'error: {e}') def slack_send_mess(mess, level, **kwargs): @@ -155,11 +168,11 @@ def slack_send_mess(mess, level, **kwargs): slack_token = '' channel_name = '' - if kwargs.get('slack_channel_id') == 0: + if kwargs.get('channel_id') == 0: return - if kwargs.get('slack_channel_id'): - slacks = sql.get_slack_by_id(kwargs.get('slack_channel_id')) + if kwargs.get('channel_id'): + slacks = sql.get_slack_by_id(kwargs.get('channel_id')) else: slacks = sql.get_slack_by_ip(kwargs.get('ip')) @@ -179,6 +192,51 @@ def slack_send_mess(mess, level, **kwargs): client.chat_postMessage(channel=f'#{channel_name}', text=f'{level}: {mess}') except SlackApiError as e: roxywi_common.logging('Roxy-WI server', str(e), roxywi=1) + raise Exception(f'error: {e}') + + +def pd_send_mess(mess, level, server_ip=None, service_id=None, alert_type=None, **kwargs): + import pdpyras + + token = '' + + if kwargs.get('channel_id') == 0: + return + + if kwargs.get('channel_id'): + try: + pds = sql.get_pd_by_id(kwargs.get('channel_id')) + except Exception as e: + print(e) + else: + try: + pds = sql.get_pd_by_ip(kwargs.get('ip')) + except Exception as e: + print(e) + + for pd in pds: + token = pd.token + + try: + proxy = sql.get_setting('proxy') + session = pdpyras.EventsAPISession(token) + dedup_key = f'{server_ip} {service_id} {alert_type}' + except Exception as e: + roxywi_common.logging('Roxy-WI server', str(e), roxywi=1) + raise Exception(f'error: {e}') + + if proxy is not None and proxy != '' and proxy != 'None': + proxies = dict(https=proxy, http=proxy) + session.proxies.update(proxies) + + try: + if level == 'info': + session.resolve(dedup_key) + else: + session.trigger(mess, 'Roxy-WI', dedup_key=dedup_key, severity=level, custom_details={'server': server_ip, 'alert': mess}) + except Exception as e: + roxywi_common.logging('Roxy-WI server', str(e), roxywi=1) + raise Exception(f'error: {e}') def check_rabbit_alert() -> None: @@ -228,11 +286,12 @@ def add_telegram_channel(token: str, channel: str, group: str, page: str) -> Non else: if sql.insert_new_telegram(token, channel, group): lang = roxywi_common.get_user_lang() + channels = sql.select_telegram(token=token) + groups = sql.select_groups() env = Environment(loader=FileSystemLoader('templates/'), autoescape=True) - template = env.get_template('ajax/new_telegram.html') - output_from_parsed_template = template.render(groups=sql.select_groups(), lang=lang, - telegrams=sql.select_telegram(token=token), page=page) - print(output_from_parsed_template) + template = env.get_template('ajax/new_receiver.html') + parsed_template = template.render(groups=groups, lang=lang, channels=channels, page=page, receiver='telegram') + print(parsed_template) roxywi_common.logging('Roxy-WI server', f'A new Telegram channel {channel} has been created ', roxywi=1, login=1) @@ -242,30 +301,56 @@ def add_slack_channel(token: str, channel: str, group: str, page: str) -> None: else: if sql.insert_new_slack(token, channel, group): lang = roxywi_common.get_user_lang() + channels = sql.select_slack(token=token) + groups = sql.select_groups() env = Environment(loader=FileSystemLoader('templates/'), autoescape=True) - template = env.get_template('ajax/new_slack.html') - output_from_parsed_template = template.render(groups=sql.select_groups(), lang=lang, - slacks=sql.select_slack(token=token), page=page) - print(output_from_parsed_template) + template = env.get_template('ajax/new_receiver.html') + parsed_template = template.render(groups=groups, lang=lang, channels=channels, page=page, receiver='slack') + print(parsed_template) roxywi_common.logging('Roxy-WI server', f'A new Slack channel {channel} has been created ', roxywi=1, login=1) +def add_pd_channel(token: str, channel: str, group: str, page: str) -> None: + if token is None or channel is None or group is None: + print(error_mess) + else: + if sql.insert_new_pd(token, channel, group): + lang = roxywi_common.get_user_lang() + env = Environment(loader=FileSystemLoader('templates/'), autoescape=True) + template = env.get_template('ajax/new_receiver.html') + parsed_template = template.render(groups=sql.select_groups(), lang=lang, channels=sql.select_pd(token=token), page=page, receiver='pd') + print(parsed_template) + roxywi_common.logging('Roxy-WI server', f'A new PagerDuty channel {channel} has been created ', roxywi=1, login=1) + + def delete_telegram_channel(channel_id) -> None: telegram = sql.select_telegram(id=channel_id) + channel_name = '' for t in telegram: - telegram_name = t.token + channel_name = t.token if sql.delete_telegram(channel_id): print("Ok") - roxywi_common.logging('Roxy-WI server', f'The Telegram channel {telegram_name} has been deleted ', roxywi=1, login=1) + roxywi_common.logging('Roxy-WI server', f'The Telegram channel {channel_name} has been deleted ', roxywi=1, login=1) def delete_slack_channel(channel_id) -> None: slack = sql.select_slack(id=channel_id) + channel_name = '' for t in slack: - slack_name = t.chanel_name + channel_name = t.chanel_name if sql.delete_slack(channel_id): print("Ok") - roxywi_common.logging('Roxy-WI server', f'The Slack channel {slack_name} has been deleted ', roxywi=1, login=1) + roxywi_common.logging('Roxy-WI server', f'The Slack channel {channel_name} has been deleted ', roxywi=1, login=1) + + +def delete_pd_channel(channel_id) -> None: + pd = sql.select_pd(id=channel_id) + channel_name = '' + for t in pd: + channel_name = t.chanel_name + if sql.delete_pd(channel_id): + print("Ok") + roxywi_common.logging('Roxy-WI server', f'The PageDuty channel {channel_name} has been deleted ', roxywi=1, login=1) def update_telegram(token: str, channel: str, group: str, user_id: int) -> None: @@ -276,3 +361,54 @@ def update_telegram(token: str, channel: str, group: str, user_id: int) -> None: def update_slack(token: str, channel: str, group: str, user_id: int) -> None: sql.update_slack(token, channel, group, user_id) roxywi_common.logging(f'group {group}', f'The Slack token has been updated for channel: {channel}', roxywi=1, login=1) + + +def update_pd(token: str, channel: str, group: str, user_id: int) -> None: + sql.update_pd(token, channel, group, user_id) + roxywi_common.logging(f'group {group}', f'The PagerDuty token has been updated for channel: {channel}', roxywi=1, login=1) + + +def delete_receiver_channel(channel_id: int, receiver_name: str) -> None: + delete_functions = { + "telegram": delete_telegram_channel, + "slack": delete_slack_channel, + "pd": delete_pd_channel, + } + delete_functions[receiver_name](channel_id) + + +def add_receiver_channel(receiver_name: str, token: str, channel: str, group: id, page: str) -> None: + add_functions = { + "telegram": add_telegram_channel, + "slack": add_slack_channel, + "pd": add_pd_channel, + } + add_functions[receiver_name](token, channel, group, page) + + +def update_receiver_channel(receiver_name: str, token: str, channel: str, group: id, user_id: int) -> None: + update_functions = { + "telegram": update_telegram, + "slack": update_slack, + "pd": update_pd, + } + update_functions[receiver_name](token, channel, group, user_id) + + +def check_receiver(channel_id: int, receiver_name: str) -> None: + functions = { + "telegram": telegram_send_mess, + "slack": slack_send_mess, + "pd": pd_send_mess, + } + mess = 'Test message from Roxy-WI' + + if receiver_name == 'pd': + level = 'warning' + else: + level = 'info' + + try: + functions[receiver_name](mess, level, channel_id=channel_id) + except Exception as e: + print(e) diff --git a/app/modules/db/db_model.py b/app/modules/db/db_model.py index 3d023a7c..ec102582 100644 --- a/app/modules/db/db_model.py +++ b/app/modules/db/db_model.py @@ -103,6 +103,16 @@ class Slack(BaseModel): table_name = 'slack' +class PD(BaseModel): + id = AutoField() + token = CharField() + chanel_name = CharField() + groups = IntegerField() + + class Meta: + table_name = 'pd' + + class UUID(BaseModel): user_id = IntegerField() uuid = CharField() @@ -554,6 +564,7 @@ class CheckerSetting(BaseModel): service_alert = IntegerField(constraints=[SQL('DEFAULT 1')]) backend_alert = IntegerField(constraints=[SQL('DEFAULT 1')]) maxconn_alert = IntegerField(constraints=[SQL('DEFAULT 1')]) + pd_id = IntegerField(constraints=[SQL('DEFAULT 0')]) class Meta: table_name = 'checker_setting' @@ -597,4 +608,4 @@ def create_tables(): PortScannerSettings, PortScannerPorts, PortScannerHistory, ProvidersCreds, ServiceSetting, ProvisionedServers, MetricsHttpStatus, SMON, WafRules, Alerts, GeoipCodes, NginxMetrics, SystemInfo, Services, UserName, GitSetting, CheckerSetting, ApacheMetrics, ProvisionParam, - WafNginx, ServiceStatus, KeepaliveRestart]) + WafNginx, ServiceStatus, KeepaliveRestart, PD]) diff --git a/app/modules/db/sql.py b/app/modules/db/sql.py index b00b184c..fb29baa0 100755 --- a/app/modules/db/sql.py +++ b/app/modules/db/sql.py @@ -836,6 +836,36 @@ def get_slack_by_id(slack_id): return query_res +def get_user_pd_by_group(group): + query = PD.select().where(PD.groups == group) + try: + query_res = query.execute() + except Exception as e: + out_error(e) + else: + return query_res + + +def get_pd_by_ip(ip): + query = PD.select().join(Server, on=(Server.groups == PD.groups)).where(Server.ip == ip) + try: + query_res = query.execute() + except Exception as e: + out_error(e) + else: + return query_res + + +def get_pd_by_id(pd_id): + query = PD.select().where(PD.id == pd_id) + try: + query_res = query.execute() + except Exception as e: + out_error(e) + else: + return query_res + + def get_dick_permit(**kwargs): if kwargs.get('username'): grp = kwargs.get('group_id') @@ -1146,6 +1176,53 @@ def update_slack(token, chanel, group, slack_id): return True +def delete_pd(pd_id): + query = PD.delete().where(PD.id == pd_id) + try: + query.execute() + except Exception as e: + out_error(e) + return False + else: + return True + + +def select_pd(**kwargs): + if kwargs.get('token'): + query = PD.select().where(PD.token == kwargs.get('token')) + elif kwargs.get('id'): + query = PD.select().where(PD.id == kwargs.get('id')) + else: + query = PD.select() + try: + query_res = query.execute() + except Exception as e: + out_error(e) + else: + return query_res + + +def insert_new_pd(token, chanel, group): + try: + PD.insert(token=token, chanel_name=chanel, groups=group).execute() + except Exception as e: + out_error(e) + return False + else: + return True + + +def update_pd(token, chanel, group, pd_id): + query_update = PD.update(token=token, chanel_name=chanel, groups=group).where(PD.id == pd_id) + try: + query_update.execute() + except Exception as e: + out_error(e) + return False + else: + return True + + def insert_new_option(saved_option, group): try: Option.insert(options=saved_option, groups=group).execute() @@ -3761,11 +3838,11 @@ def insert_new_checker_setting_for_server(server_ip: str) -> None: def update_haproxy_checker_settings( - email: int, telegram_id: int, slack_id: int, service_alert: int, backend_alert: int, + email: int, telegram_id: int, slack_id: int, pd_id: int, service_alert: int, backend_alert: int, maxconn_alert: int, setting_id: int ) -> bool: settings_update = CheckerSetting.update( - email=email, telegram_id=telegram_id, slack_id=slack_id, service_alert=service_alert, + email=email, telegram_id=telegram_id, slack_id=slack_id, pd_id=pd_id, service_alert=service_alert, backend_alert=backend_alert, maxconn_alert=maxconn_alert ).where(CheckerSetting.id == setting_id) try: @@ -3777,11 +3854,11 @@ def update_haproxy_checker_settings( def update_keepalived_checker_settings( - email: int, telegram_id: int, slack_id: int, service_alert: int, backend_alert: int, + email: int, telegram_id: int, slack_id: int, pd_id: int, service_alert: int, backend_alert: int, setting_id: int ) -> bool: settings_update = CheckerSetting.update( - email=email, telegram_id=telegram_id, slack_id=slack_id, + email=email, telegram_id=telegram_id, slack_id=slack_id, pd_id=pd_id, service_alert=service_alert, backend_alert=backend_alert ).where(CheckerSetting.id == setting_id) try: @@ -3793,10 +3870,10 @@ def update_keepalived_checker_settings( def update_service_checker_settings( - email: int, telegram_id: int, slack_id: int, service_alert: int, setting_id: int + email: int, telegram_id: int, slack_id: int, pd_id: int, service_alert: int, setting_id: int ) -> bool: settings_update = CheckerSetting.update( - email=email, telegram_id=telegram_id, slack_id=slack_id, service_alert=service_alert + email=email, telegram_id=telegram_id, slack_id=slack_id, pd_id=pd_id, service_alert=service_alert ).where(CheckerSetting.id == setting_id) try: settings_update.execute() diff --git a/app/options.py b/app/options.py index ee615d93..0f73e59b 100644 --- a/app/options.py +++ b/app/options.py @@ -858,61 +858,36 @@ if form.getvalue('ssh_cert'): ssh_mod.upload_ssh_key(name, user_group, key) -if form.getvalue('newtelegram'): +if form.getvalue('new_receiver'): import modules.alerting.alerting as alerting - token = common.checkAjaxInput(form.getvalue('newtelegram')) + token = common.checkAjaxInput(form.getvalue('new_receiver')) + receiver_name = common.checkAjaxInput(form.getvalue('receiver_name')) channel = common.checkAjaxInput(form.getvalue('chanel')) - group = common.checkAjaxInput(form.getvalue('telegramgroup')) + group = common.checkAjaxInput(form.getvalue('group_receiver')) page = common.checkAjaxInput(form.getvalue('page')) page = page.split("#")[0] - alerting.add_telegram_channel(token, channel, group, page) + alerting.add_receiver_channel(receiver_name, token, channel, group, page) -if form.getvalue('newslack'): +if form.getvalue('receiver_del') is not None: import modules.alerting.alerting as alerting - token = common.checkAjaxInput(form.getvalue('newslack')) - channel = common.checkAjaxInput(form.getvalue('chanel')) - group = common.checkAjaxInput(form.getvalue('slackgroup')) - page = common.checkAjaxInput(form.getvalue('page')) - page = page.split("#")[0] + channel_id = common.checkAjaxInput(form.getvalue('receiver_del')) + receiver_name = common.checkAjaxInput(form.getvalue('receiver_name')) - alerting.add_slack_channel(token, channel, group, page) + alerting.delete_receiver_channel(channel_id, receiver_name) -if form.getvalue('telegramdel') is not None: +if form.getvalue('update_receiver_token') is not None: import modules.alerting.alerting as alerting - channel_id = common.checkAjaxInput(form.getvalue('telegramdel')) - - alerting.delete_telegram_channel(channel_id) - -if form.getvalue('slackdel') is not None: - import modules.alerting.alerting as alerting - - channel_id = common.checkAjaxInput(form.getvalue('slackdel')) - - alerting.delete_slack_channel(channel_id) - -if form.getvalue('updatetoken') is not None: - import modules.alerting.alerting as alerting - - token = common.checkAjaxInput(form.getvalue('updatetoken')) - channel = common.checkAjaxInput(form.getvalue('updategchanel')) - group = common.checkAjaxInput(form.getvalue('updatetelegramgroup')) + receiver_name = common.checkAjaxInput(form.getvalue('receiver_name')) + token = common.checkAjaxInput(form.getvalue('update_receiver_token')) + channel = common.checkAjaxInput(form.getvalue('update_receiver_channel')) + group = common.checkAjaxInput(form.getvalue('update_receiver_group')) user_id = common.checkAjaxInput(form.getvalue('id')) - alerting.update_telegram(token, channel, group, user_id) - -if form.getvalue('update_slack_token') is not None: - import modules.alerting.alerting as alerting - - token = common.checkAjaxInput(form.getvalue('update_slack_token')) - channel = common.checkAjaxInput(form.getvalue('updategchanel')) - group = common.checkAjaxInput(form.getvalue('updateslackgroup')) - user_id = common.checkAjaxInput(form.getvalue('id')) - - alerting.update_slack() + alerting.update_receiver_channel(receiver_name, token, channel, group, user_id) if form.getvalue('updatesettings') is not None: settings = common.checkAjaxInput(form.getvalue('updatesettings')) @@ -2003,6 +1978,7 @@ if form.getvalue('loadchecker'): user_group = roxywi_common.get_user_group(id=1) 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) haproxy_servers = roxywi_common.get_dick_permit(haproxy=1, only_group=1) nginx_servers = roxywi_common.get_dick_permit(nginx=1, only_group=1) apache_servers = roxywi_common.get_dick_permit(apache=1, only_group=1) @@ -2010,6 +1986,7 @@ if form.getvalue('loadchecker'): else: telegrams = sql.select_telegram() slacks = sql.select_slack() + pds = sql.select_pd() haproxy_servers = roxywi_common.get_dick_permit(haproxy=1) nginx_servers = roxywi_common.get_dick_permit(nginx=1) apache_servers = roxywi_common.get_dick_permit(apache=1) @@ -2017,23 +1994,13 @@ if form.getvalue('loadchecker'): else: telegrams = '' slacks = '' + pds = '' - template = template.render(services=services, - telegrams=telegrams, - groups=groups, - slacks=slacks, - user_status=user_subscription['user_status'], - user_plan=user_subscription['user_plan'], - haproxy_servers=haproxy_servers, - nginx_servers=nginx_servers, - apache_servers=apache_servers, - keepalived_servers=keepalived_servers, - haproxy_settings=haproxy_settings, - nginx_settings=nginx_settings, - keepalived_settings=keepalived_settings, - apache_settings=apache_settings, - page=page, - lang=lang) + template = template.render(services=services, telegrams=telegrams, pds=pds, groups=groups, slacks=slacks, + user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], + haproxy_servers=haproxy_servers, nginx_servers=nginx_servers, apache_servers=apache_servers, + keepalived_servers=keepalived_servers, haproxy_settings=haproxy_settings, nginx_settings=nginx_settings, + keepalived_settings=keepalived_settings, apache_settings=apache_settings, page=page, lang=lang) print(template) if form.getvalue('load_update_hapwi'): @@ -2094,19 +2061,12 @@ if form.getvalue('loadopenvpn'): openvpn_configs=openvpn_configs) print(template) -if form.getvalue('check_telegram'): +if form.getvalue('check_receiver'): import modules.alerting.alerting as alerting - telegram_id = form.getvalue('check_telegram') - mess = 'Test message from Roxy-WI' - alerting.telegram_send_mess(mess, telegram_channel_id=telegram_id) - -if form.getvalue('check_slack'): - import modules.alerting.alerting as alerting - - slack_id = form.getvalue('check_slack') - mess = 'Test message from Roxy-WI' - alerting.slack_send_mess(mess, slack_channel_id=slack_id) + channel_id = form.getvalue('receiver_channel_id') + receiver_name = form.getvalue('receiver_name') + alerting.check_receiver(channel_id, receiver_name) if form.getvalue('check_rabbitmq_alert'): import modules.alerting.alerting as alerting @@ -2347,9 +2307,9 @@ if form.getvalue('updateHaproxyCheckerSettings'): maxconn_alert = form.getvalue('maxconn') telegram_id = form.getvalue('telegram_id') slack_id = form.getvalue('slack_id') + pd_id = form.getvalue('pd_id') - if sql.update_haproxy_checker_settings(email, telegram_id, slack_id, service_alert, backend_alert, - maxconn_alert, setting_id): + if sql.update_haproxy_checker_settings(email, telegram_id, slack_id, pd_id, service_alert, backend_alert, maxconn_alert, setting_id): print('ok') else: print('error: Cannot update Checker settings') @@ -2361,8 +2321,9 @@ if form.getvalue('updateKeepalivedCheckerSettings'): backend_alert = form.getvalue('backend') telegram_id = form.getvalue('telegram_id') slack_id = form.getvalue('slack_id') + pd_id = form.getvalue('pd_id') - if sql.update_keepalived_checker_settings(email, telegram_id, slack_id, service_alert, backend_alert, setting_id): + if sql.update_keepalived_checker_settings(email, telegram_id, slack_id, pd_id, service_alert, backend_alert, setting_id): print('ok') else: print('error: Cannot update Checker settings') @@ -2373,8 +2334,9 @@ if form.getvalue('updateServiceCheckerSettings'): service_alert = form.getvalue('server') telegram_id = form.getvalue('telegram_id') slack_id = form.getvalue('slack_id') + pd_id = form.getvalue('pd_id') - if sql.update_service_checker_settings(email, telegram_id, slack_id, service_alert, setting_id): + if sql.update_service_checker_settings(email, telegram_id, slack_id, pd_id, service_alert, setting_id): print('ok') else: print('error: Cannot update Checker settings') diff --git a/app/templates/ajax/load_telegram.html b/app/templates/ajax/load_telegram.html index bc98588a..fa73f1bc 100644 --- a/app/templates/ajax/load_telegram.html +++ b/app/templates/ajax/load_telegram.html @@ -27,11 +27,11 @@
  • {{lang.words.settings|title()}}
  • - +
    {% if page != "servers.py" %} @@ -66,20 +66,20 @@ {% endif %} {% endfor %}

    Telegram {{lang.words.channels}}

    - {{lang.words.token|title()}} + {{lang.words.token|title()}} {{lang.words.channel|title()}} - + - + - +

    + {{lang.words.add|title()}}

    - +
    {% endif %} {% endfor %}

    Slack {{lang.words.channels|title()}}

    @@ -118,20 +118,72 @@ - + - + - +

    + {{lang.words.add|title()}}

    - +
    + + + + + {% if page != "servers.py" %} + + {% endif %} + + + + + {% for pd in pds %} + + + + {% if page != "servers.py" %} + + {% endif %} + + + + + {% endfor %} +

    PagerDuty {{lang.words.channels|title()}}

    + {{lang.words.key|title()}} + {{lang.words.name|title()}}{{lang.words.group|title()}}
    + {% set id = 'pd-token-' + pd.id|string() %} + {{ input(id, value=pd.token, size='30') }} + + {% set id = 'pd-chanel-' + pd.id|string() %} + {{ input(id, value=pd.chanel_name, size='30') }} + + + + + + + + +
    +
    + {{lang.words.add|title()}} +

    + @@ -150,17 +202,19 @@
    {{lang.phrases.read_about_parameters}} {{lang.words.here}}, - {{lang.phrases.read_howto}} Telegram bot {{lang.words.article}}, - {{lang.phrases.read_howto}} {{lang.words.use}} Slack APP {{lang.words.article}} + {{lang.phrases.howto_user}} Telegram bot, + {{lang.phrases.howto_user}} Slack APP, + {{lang.phrases.howto_user}} PagerDuty.
    -

    {{lang.words.test2|title()}} {{lang.words.message}}

    {{lang.words.email|title()}}
    +
    + @@ -196,6 +250,18 @@ {% endfor %} +

    HAProxy {{lang.words.servers}}

    {{lang.words.server|title()}} Telegram SlackPagerDuty {{lang.words.email|title()}} {{lang.words.service|title()}} {{lang.words.backend|title()}} + + {% set id = 'haproxy_server_email-' + h.id|string() %} {% if h.email == 1 %} @@ -234,12 +300,13 @@ {% endfor %} {% endfor %}
    - +
    + @@ -273,6 +340,18 @@ {% endfor %} +

    NGINX {{lang.words.servers}}

    {{lang.words.server|title()}} Telegram SlackPagerDuty {{lang.words.email|title()}} {{lang.words.service|title()}} + + {% set id = 'nginx_server_email-' + h.id|string() %} {% if h.email == 1 %} @@ -295,12 +374,13 @@ {% endfor %} {% endfor %}
    - +
    + @@ -334,6 +414,18 @@ {% endfor %} +

    Apache {{lang.words.servers}}

    {{lang.words.server|title()}} Telegram SlackPagerDuty {{lang.words.email|title()}} {{lang.words.service|title()}} + + {% set id = 'apache_server_email-' + h.id|string() %} {% if h.email == 1 %} @@ -356,12 +448,13 @@ {% endfor %} {% endfor %}
    - +
    + @@ -396,6 +489,18 @@ {% endfor %} + + + + {% if page != "servers.py" %} + + {% endif %} + + + + +{% endfor %} diff --git a/app/templates/ajax/new_slack.html b/app/templates/ajax/new_slack.html deleted file mode 100644 index 208400a3..00000000 --- a/app/templates/ajax/new_slack.html +++ /dev/null @@ -1,34 +0,0 @@ -{% import 'languages/'+lang|default('en')+'.html' as lang %} -{% for slack in slacks %} - - - - {% if page != "servers.py" %} - - {% endif %} - - - - -{% endfor %} diff --git a/app/templates/ajax/new_telegram.html b/app/templates/ajax/new_telegram.html deleted file mode 100644 index 0b52900f..00000000 --- a/app/templates/ajax/new_telegram.html +++ /dev/null @@ -1,34 +0,0 @@ -{% import 'languages/'+lang|default('en')+'.html' as lang %} -{% for telegram in telegrams %} - - - - {% if page != "servers.py" %} - - {% endif %} - - - - -{% endfor %} \ No newline at end of file diff --git a/app/templates/include/admins_dialogs.html b/app/templates/include/admins_dialogs.html index a8862aab..f629b803 100644 --- a/app/templates/include/admins_dialogs.html +++ b/app/templates/include/admins_dialogs.html @@ -225,6 +225,42 @@ {% endif %}

    Keepalived {{lang.words.servers}}

    {{lang.words.server|title()}} Telegram SlackPagerDuty {{lang.words.email|title()}} {{lang.words.service|title()}} {{lang.words.status|title()}} + + {% set id = 'keepalived_server_email-' + h.id|string() %} {% if h.email == 1 %} diff --git a/app/templates/ajax/new_receiver.html b/app/templates/ajax/new_receiver.html new file mode 100644 index 00000000..f4f6e3e9 --- /dev/null +++ b/app/templates/ajax/new_receiver.html @@ -0,0 +1,34 @@ +{% import 'languages/'+lang|default('en')+'.html' as lang %} +{% for c in channels %} +
    + + + + + + + + + + + + +
    - - - - - - - - - - - - -
    - - - - - - - - - - - - -
    +