diff --git a/app/create_db.py b/app/create_db.py index 9588d06b..832f4ee6 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -901,7 +901,7 @@ def update_db_v_6_3_13_4(): print('Updating... DB has been updated to version 6.3.13-3') elif e.args[0] == 'duplicate column name: check_type' or str(e) == '(1091, "Can\'t DROP COLUMN `http_status`; check that it exists")': print('Updating... DB has been updated to version 6.3.13-3') - elif e.args[0] == 'duplicate column name: check_type' or str(e) == "'bool' object has no attribute 'sql'": + elif e.args[0] == 'table smon__tmp__ has no column named UNIQUE' or str(e) == "'bool' object has no attribute 'sql'": print('Updating... DB has been updated to version 6.3.13-3') else: print("An error occurred:", e) @@ -916,7 +916,7 @@ def update_db_v_6_3_13_5(): def update_ver(): try: - Version.update(version='6.3.14.0').execute() + Version.update(version='6.3.15.0').execute() except Exception: print('Cannot update version') diff --git a/app/modules/db/sql.py b/app/modules/db/sql.py index ae9950a6..828a6bc4 100755 --- a/app/modules/db/sql.py +++ b/app/modules/db/sql.py @@ -2487,9 +2487,9 @@ def insert_smon(name, enable, group, desc, telegram, slack, pd, user_group, chec return last_id -def insert_smon_ping(smon_id, hostname): +def insert_smon_ping(smon_id, hostname, packet_size): try: - SmonPingCheck.insert(smon_id=smon_id, ip=hostname).execute() + SmonPingCheck.insert(smon_id=smon_id, ip=hostname, packet_size=packet_size).execute() except Exception as e: out_error(e) @@ -2682,8 +2682,8 @@ def update_smonTcp(smon_id, ip, port): return False -def update_smonPing(smon_id, ip): - query = (SmonPingCheck.update(ip=ip).where(SmonPingCheck.smon_id == smon_id)) +def update_smonPing(smon_id, ip, packet_size): + query = (SmonPingCheck.update(ip=ip, packet_size=packet_size).where(SmonPingCheck.smon_id == smon_id)) try: query.execute() return True diff --git a/app/modules/tools/smon.py b/app/modules/tools/smon.py index a86f2afc..f4ceddd3 100644 --- a/app/modules/tools/smon.py +++ b/app/modules/tools/smon.py @@ -9,23 +9,8 @@ import modules.roxywi.common as roxywi_common form = common.form -def create_smon() -> None: - user_group = roxywi_common.get_user_group(id=1) - name = common.checkAjaxInput(form.getvalue('newsmonname')) - hostname = common.checkAjaxInput(form.getvalue('newsmon')) - port = common.checkAjaxInput(form.getvalue('newsmonport')) - enable = common.checkAjaxInput(form.getvalue('newsmonenable')) - url = common.checkAjaxInput(form.getvalue('newsmonurl')) - 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')) - check_type = common.checkAjaxInput(form.getvalue('newsmonchecktype')) - resolver = common.checkAjaxInput(form.getvalue('newsmonresserver')) - record_type = common.checkAjaxInput(form.getvalue('newsmondns_record_type')) - +def create_smon(name: str, hostname: str, port: int, enable: int, url: str, body: str, group: int, desc: str, telegram: int, + slack: int, pd: int, packet_size: int, check_type: int, resolver: str, record_type: str, user_group: int, show_new=1) -> None: if check_type == 'tcp': try: port = int(port) @@ -36,10 +21,15 @@ def create_smon() -> None: print('SMON error: port must be 0-65535') return None + if check_type == 'ping': + if int(packet_size) < 16: + print('SMON error: a packet size cannot be less than 16') + return None + last_id = sql.insert_smon(name, enable, group, desc, telegram, slack, pd, user_group, check_type) if check_type == 'ping': - sql.insert_smon_ping(last_id, hostname) + sql.insert_smon_ping(last_id, hostname, packet_size) elif check_type == 'tcp': sql.insert_smon_tcp(last_id, hostname, port) elif check_type == 'http': @@ -47,7 +37,7 @@ def create_smon() -> None: elif check_type == 'dns': sql.insert_smon_dns(last_id, hostname, port, resolver, record_type) - if last_id: + if last_id and show_new: lang = roxywi_common.get_user_lang() smon = sql.select_smon_by_id(last_id) pds = sql.get_user_pd_by_group(user_group) @@ -59,6 +49,8 @@ def create_smon() -> None: template = template.render(smon=smon, telegrams=telegrams, slacks=slacks, pds=pds, lang=lang, check_type=check_type, smon_service=smon_service) print(template) + + if last_id: roxywi_common.logging('SMON', f' A new server {name} to SMON has been add ', roxywi=1, login=1) @@ -78,6 +70,7 @@ def update_smon() -> None: check_type = common.checkAjaxInput(form.getvalue('check_type')) resolver = common.checkAjaxInput(form.getvalue('updateSmonResServer')) record_type = common.checkAjaxInput(form.getvalue('updateSmonRecordType')) + packet_size = common.checkAjaxInput(form.getvalue('updateSmonPacket_size')) is_edited = False if check_type == 'tcp': @@ -90,6 +83,11 @@ def update_smon() -> None: print('SMON error: port must be 0-65535') return None + if check_type == 'ping': + if int(packet_size) < 16: + print('SMON error: a packet size cannot be less than 16') + return None + roxywi_common.check_user_group() try: @@ -99,7 +97,7 @@ def update_smon() -> None: elif check_type == 'tcp': is_edited = sql.update_smonTcp(smon_id, ip, port) elif check_type == 'ping': - is_edited = sql.update_smonPing(smon_id, ip) + is_edited = sql.update_smonPing(smon_id, ip, packet_size) elif check_type == 'dns': is_edited = sql.update_smonDns(smon_id, ip, port, resolver, record_type) diff --git a/app/options.py b/app/options.py index 2af07b4c..a30527c5 100644 --- a/app/options.py +++ b/app/options.py @@ -787,6 +787,7 @@ if form.getvalue('newserver') is not None: page = page.split("#")[0] port = common.checkAjaxInput(form.getvalue('newport')) desc = common.checkAjaxInput(form.getvalue('desc')) + add_to_smon = common.checkAjaxInput(form.getvalue('add_to_smon')) lang = roxywi_common.get_user_lang() if ip == '': @@ -809,6 +810,12 @@ if form.getvalue('newserver') is not None: print(template) roxywi_common.logging(ip, f'A new server {hostname} has been created', roxywi=1, login=1, keep_history=1, service='server') + if add_to_smon: + import modules.tools.smon as smon_mod + + user_group = roxywi_common.get_user_group(id=1) + smon_mod.create_smon(hostname, ip, 0, 1, 0, 0, hostname, desc, 0, 0, 0, 0, 'ping', 0, 0, user_group, 0) + except Exception as e: print(f'error: {e}') @@ -987,7 +994,24 @@ if form.getvalue('getcurrentusergroup') is not None: if form.getvalue('newsmonname') is not None: import modules.tools.smon as smon_mod - smon_mod.create_smon() + user_group = roxywi_common.get_user_group(id=1) + name = common.checkAjaxInput(form.getvalue('newsmonname')) + hostname = common.checkAjaxInput(form.getvalue('newsmon')) + port = common.checkAjaxInput(form.getvalue('newsmonport')) + enable = common.checkAjaxInput(form.getvalue('newsmonenable')) + url = common.checkAjaxInput(form.getvalue('newsmonurl')) + 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')) + check_type = common.checkAjaxInput(form.getvalue('newsmonchecktype')) + resolver = common.checkAjaxInput(form.getvalue('newsmonresserver')) + record_type = common.checkAjaxInput(form.getvalue('newsmondns_record_type')) + packet_size = common.checkAjaxInput(form.getvalue('newsmonpacket_size')) + + smon_mod.create_smon(name, hostname, port, enable, url, body, group, desc, telegram, slack, pd, packet_size, check_type, resolver, record_type, user_group) if form.getvalue('smondel') is not None: import modules.tools.smon as smon_mod diff --git a/app/templates/include/admin_add_server.html b/app/templates/include/admin_add_server.html index b9af0c55..3bc9c88d 100644 --- a/app/templates/include/admin_add_server.html +++ b/app/templates/include/admin_add_server.html @@ -26,6 +26,10 @@ {{lang.words.virt|title()}} {{ checkbox('typeip') }} + + {{lang.words.add|title()}} {{lang.words.in}} SMON + {{ checkbox('add_to_smon', checked='checked') }} + {{lang.words.scan|title()}} {{lang.words.the}} {{lang.words.server}} {{ checkbox('scan_server', checked='checked') }} diff --git a/app/templates/include/smon_ping_server.html b/app/templates/include/smon_ping_server.html index a67801c4..a692ca95 100644 --- a/app/templates/include/smon_ping_server.html +++ b/app/templates/include/smon_ping_server.html @@ -6,6 +6,10 @@ {% set id = 'smon-ip-' + s.id|string() %} {{ input(id, value=s_service.ip, size='20') }} + + {% set id = 'smon-packet_size-' + s.id|string() %} + {{ input(id, value=s_service.packet_size, style='width: 40px;', type='number') }} + {% set id = 'smon-enable-' + s.id|string() %} {% if s.en == 1 %} diff --git a/app/templates/languages/en.html b/app/templates/languages/en.html index fa775563..ea62fd8c 100644 --- a/app/templates/languages/en.html +++ b/app/templates/languages/en.html @@ -320,6 +320,7 @@ "BytesPerSec": "BytesPerSec", "became_master": "Became Master", "resource_record_type": "Resource Record Type", + "add_to_smon_desc": "Add the server for checking by SMON ping", } %} {% set roles = { diff --git a/app/templates/languages/fr.html b/app/templates/languages/fr.html index fc6edef5..b51f7ed8 100644 --- a/app/templates/languages/fr.html +++ b/app/templates/languages/fr.html @@ -320,6 +320,7 @@ "BytesPerSec": "Octets par seconde", "became_master": "Devenu maître", "resource_record_type": "Type d'enregistrement de ressource", + "add_to_smon_desc": "Ajouter le serveur pour vérification par SMON ping", } %} {% set roles = { @@ -432,7 +433,7 @@ "a_new_version": "Il existe une version plus récente", "no_new_version": "Il n\'existe pas de version plus récente", "main_app": "Application principale", - "for_updating": "Pour la mise à jour, vous devez utiliser Roxy-WI RPM ou DEB.", + "for_updating": "Pour la mise à jour, vous devez utiliser Roxy-WI RPM ou DEB", "how_to_using_repo": "how to start using repository.", "proxy_settings": "Si le serveur Roxy-WI utilise un proxy pour se connecter à Internet, ajoutez les paramètres du proxy à yum.conf.", } @@ -463,6 +464,7 @@ "UNKNOWN": "INCONNU", "PORT_DOWN": "PORT DOWN", "DISABLED": "DÉSACTIVÉ", + "packet_size": "Taille du paquet", } } %} @@ -646,7 +648,7 @@ "set": "définir", "type": "type", "typing": "typing", - "site": "taille", + "size": "taille", "is": "est", "w_empty": "vide", "used": "used", diff --git a/app/templates/languages/pt-br.html b/app/templates/languages/pt-br.html index 6bc7b5b6..18352b64 100644 --- a/app/templates/languages/pt-br.html +++ b/app/templates/languages/pt-br.html @@ -320,6 +320,7 @@ "BytesPerSec": "Bytes Por Segundo", "became_master": "Tornou-se mestre", "resource_record_type": "Tipo de registro de recurso", + "add_to_smon_desc": "Adicione o servidor para verificação por ping SMON", } %} {% set roles = { diff --git a/app/templates/languages/ru.html b/app/templates/languages/ru.html index 784a7a3f..f744fc5e 100644 --- a/app/templates/languages/ru.html +++ b/app/templates/languages/ru.html @@ -320,6 +320,7 @@ "BytesPerSec": "Байт в секунду", "became_master": "Стал мастером", "resource_record_type": "Тип записи ресурса", + "add_to_smon_desc": "Добавить сервер для проверки с помощью SMON ping", } %} {% set roles = { @@ -432,7 +433,7 @@ "a_new_version": "Доступна новая версия", "no_new_version": "Нет новой версии", "main_app": "Главное приложение", - "for_updating": "Для обновления необходимо использовать Roxy-WI RPM или DEB.", + "for_updating": "Для обновления необходимо использовать Roxy-WI RPM или DEB", "how_to_using_repo": "как начать пользоваться репозиторием.", "proxy_settings": "Если сервер Roxy-WI использует прокси для подключения к Интернету, добавьте настройки прокси в yum.conf.", } @@ -463,6 +464,7 @@ "UNKNOWN": "НЕИЗВЕСТНО", "PORT_DOWN": "ПОРТ НЕ ДОСТ.", "DISABLED": "ОТКЛ.", + "packet_size": "Размер пакета", } } %} @@ -646,7 +648,7 @@ "set": "установить", "type": "тип", "typing": "печатать", - "site": "размер", + "size": "размер", "is": "", "w_empty": "пуста", "used": "используется", diff --git a/app/templates/smon.html b/app/templates/smon.html index c56ef1f5..b096e15e 100644 --- a/app/templates/smon.html +++ b/app/templates/smon.html @@ -121,6 +121,7 @@ {{lang.words.name|title()}} {{lang.words.Hostname}} + {{lang.smon_page.desc.packet_size}} {{lang.words.enabled|title()}} Telegram Slack @@ -215,6 +216,15 @@ {{ input('new-smon-ip') }} + + + {{lang.smon_page.desc.packet_size}} + * + + + {{ input('new-smon-packet_size', value='56', type='number') }} + + Resolver {{lang.words.server}} diff --git a/inc/css/style-6.3.9.css b/inc/css/style-6.3.9.css index c0f90b44..3c9474d8 100644 --- a/inc/css/style-6.3.9.css +++ b/inc/css/style-6.3.9.css @@ -875,7 +875,7 @@ label { color: #999; padding-top: 5px; height: 80px; - width: 390px; + width: 395px; } .add_proxy { width: 380px; diff --git a/inc/smon-6.3.13.js b/inc/smon-6.3.13.js index 1396f976..00f18a56 100644 --- a/inc/smon-6.3.13.js +++ b/inc/smon-6.3.13.js @@ -63,10 +63,11 @@ function addNewSmonServer(dialog_id) { valid = valid && checkLength($('#new-smon-url'), "URL", 1); } if (check_type == 'ping') { - allFields = $([]).add($('#new-smon-ip')).add($('#new-smon-name')) + allFields = $([]).add($('#new-smon-ip')).add($('#new-smon-name')).add($('#new-smon-packet_size')) allFields.removeClass("ui-state-error"); valid = valid && checkLength($('#new-smon-name'), "Name", 1); valid = valid && checkLength($('#new-smon-ip'), "Hostname", 1); + valid = valid && checkLength($('#new-smon-packet_size'), "Packet size", 1); } if (check_type == 'dns') { allFields = $([]).add($('#new-smon-ip')).add($('#new-smon-port')).add($('#new-smon-name')).add($('#new-smon-resolver-server')) @@ -97,6 +98,7 @@ function addNewSmonServer(dialog_id) { newsmontelegram: $('#new-smon-telegram').val(), newsmonslack: $('#new-smon-slack').val(), newsmonpd: $('#new-smon-pd').val(), + newsmonpacket_size: $('#new-smon-packet_size').val(), newsmonchecktype: check_type, token: $('#token').val() }, @@ -191,6 +193,7 @@ function updateSmon(id, check_type) { updateSmonPD: $('#smon-pd-'+id).val(), updateSmonGroup: $('#smon-group-'+id).val(), updateSmonDesc: $('#smon-desc-'+id).val(), + updateSmonPacket_size: $('#smon-packet_size-'+id).val(), check_type: check_type, id: id, token: $('#token').val() @@ -227,6 +230,7 @@ function cloneSmom(id, check_type) { $('#new-smon-url').val($('#smon-url-'+id).val()); $('#new-smon-group').val($('#smon-group-'+id).val()); $('#new-smon-description').val($('#smon-desc-'+id).val()) + $('#new-smon-packet_size').val($('#smon-packet_size-'+id).val()) $('#new-smon-telegram').val($('#smon-telegram-'+id+' option:selected').val()).change() $('#new-smon-slack').val($('#smon-slack-'+id+' option:selected').val()).change() $('#new-smon-pd').val($('#smon-pd-'+id+' option:selected').val()).change() @@ -324,6 +328,8 @@ function check_and_clear_check_type(check_type) { $("#check_type").val('http'); $('#check_type').selectmenu("refresh"); $('.smon_tcp_check').hide(); + $('.smon_ping_check').hide(); + $('.smon_dns_check').hide(); clear_check_vals(); $('.smon_http_check').show(); } else if (check_type == 'tcp') { @@ -332,6 +338,7 @@ function check_and_clear_check_type(check_type) { $('.new_smon_hostname').show(); $('.smon_http_check').hide(); $('.smon_dns_check').hide(); + $('.smon_ping_check').hide(); clear_check_vals(); $('.smon_tcp_check').show(); } else if (check_type == 'dns') { @@ -340,6 +347,7 @@ function check_and_clear_check_type(check_type) { $('.smon_tcp_check').hide(); $('.new_smon_hostname').show(); $('.smon_http_check').hide(); + $('.smon_ping_check').hide(); clear_check_vals(); $('#new-smon-port').val('53'); $('.smon_dns_check').show(); @@ -348,6 +356,7 @@ function check_and_clear_check_type(check_type) { $('.new_smon_hostname').show(); $('.smon_tcp_check').hide(); $('.smon_dns_check').hide(); + $('.smon_ping_check').show(); $("#check_type").val('ping'); $('#check_type').selectmenu("refresh"); clear_check_vals(); @@ -359,4 +368,5 @@ function clear_check_vals() { $('#new-smon-url').val(''); $('#new-smon-body').val(''); $('#new-smon-port').val(''); + $('#new-smon-packet_size').val(''); } diff --git a/inc/users.js b/inc/users.js index fac4edd1..3c57c713 100644 --- a/inc/users.js +++ b/inc/users.js @@ -1076,6 +1076,7 @@ function addServer(dialog_id) { var nginx = 0; var apache = 0; var firewall = 0; + var add_to_smon = 0; if ($('#scan_server').is(':checked')) { scan_server = '1'; } @@ -1097,6 +1098,9 @@ function addServer(dialog_id) { if ($('#firewall').is(':checked')) { firewall = '1'; } + if ($('#add_to_smon').is(':checked')) { + add_to_smon = '1'; + } allFields = $( [] ).add( $('#new-server-add') ).add( $('#new-ip') ).add( $('#new-port') ) allFields.removeClass( "ui-state-error" ); valid = valid && checkLength( $('#new-server-add'), "Hostname", 1 ); @@ -1124,6 +1128,7 @@ function addServer(dialog_id) { nginx: nginx, apache: apache, firewall: firewall, + add_to_smon: add_to_smon, enable: enable, slave: $('#slavefor' ).val(), cred: cred,