Merge branch 'develop' into develop

pull/1270/head
Tim Zandbergen 2025-01-25 21:57:23 +01:00 committed by GitHub
commit df7bd5bb6f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 463 additions and 219 deletions

1
.gitignore vendored
View File

@ -13,3 +13,4 @@ __MACOSX/
.buildpath .buildpath
.settings/ .settings/
/.vscode /.vscode
/.vs

5
composer.lock generated
View File

@ -521,6 +521,11 @@
"symfony/yaml": "^5.4|^6.0|^7.0" "symfony/yaml": "^5.4|^6.0|^7.0"
}, },
"type": "library", "type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.0-dev"
}
},
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"Symfony\\Component\\DependencyInjection\\": "" "Symfony\\Component\\DependencyInjection\\": ""

View File

@ -41,7 +41,7 @@ namespace {
// define won't accept array before php 7.0.0 // define won't accept array before php 7.0.0
// check if data is serialized (not needed when using php 7.0.0 and higher) // check if data is serialized (not needed when using php 7.0.0 and higher)
$data = @unserialize(PSM_CRON_ALLOW); $data = (defined('PHP_MAJOR_VERSION') && PHP_MAJOR_VERSION >= 7) ? false : @unserialize(PSM_CRON_ALLOW);
$allow = $data === false ? PSM_CRON_ALLOW : $data; $allow = $data === false ? PSM_CRON_ALLOW : $data;
if (!in_array($_SERVER['REMOTE_ADDR'], $allow) && !in_array($_SERVER["HTTP_X_FORWARDED_FOR"], $allow) if (!in_array($_SERVER['REMOTE_ADDR'], $allow) && !in_array($_SERVER["HTTP_X_FORWARDED_FOR"], $allow)

View File

@ -43,7 +43,7 @@
- name: install php7.4-mysql - name: install php7.4-mysql
apt: name=php7.4-mysql state=latest apt: name=php7.4-mysql state=latest
- name: ensure gpupg2 is at the latest version - name: ensure gnupg2 is at the latest version
apt: name=gnupg2 state=latest apt: name=gnupg2 state=latest
- name: ensure percona-server-57 is installed - name: ensure percona-server-57 is installed

View File

@ -1150,7 +1150,7 @@ namespace {
* Send Webhook * Send Webhook
* *
* @return bool|string * @return bool|string
* @var array $replacements an array of the replacements * @var array $replacements should be an array of key value as strings where key is the placeholder name to replace in json template with the value
* *
*/ */
@ -1159,8 +1159,13 @@ namespace {
$error = ""; $error = "";
$success = 1; $success = 1;
$jsonMessage = $this->json;
$replacements['#message'] = $this->stripTagsFromMessage($replacements['#message']); $replacements['#message'] = $this->stripTagsFromMessage($replacements['#message']);
$jsonMessage = strtr($this->json, $replacements);
foreach($replacements as $key => $val) {
$jsonMessage = str_replace($key, $val, $jsonMessage);
}
$curl = curl_init($this->url); $curl = curl_init($this->url);
curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POST, 1);

View File

@ -21,9 +21,10 @@
* @package phpservermon * @package phpservermon
* @author Simon Berka <berka@berkasimon.com> * @author Simon Berka <berka@berkasimon.com>
* @author Pavel Laupe Dvorak <pavel@pavel-dvorak.cz> * @author Pavel Laupe Dvorak <pavel@pavel-dvorak.cz>
* @author OUBRECHT.com
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org> * @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3 * @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
* @version Release: @package_version@ * @version Release: v3.5.2
* @link http://www.phpservermonitor.org/ * @link http://www.phpservermonitor.org/
**/ **/
@ -68,13 +69,27 @@ $sm_lang = array(
'a_minute_ago' => 'cca před minutou', 'a_minute_ago' => 'cca před minutou',
'seconds_ago' => 'před %d vteřinami', 'seconds_ago' => 'před %d vteřinami',
'a_second_ago' => 'před chvílí', 'a_second_ago' => 'před chvílí',
'seconds' => 'sekunder', 'year' => 'rok',
'years' => 'roky',
'month' => 'měsíc',
'months' => 'měsíce',
'day' => 'den',
'days' => 'dny',
'hour' => 'hodina',
'hours' => 'hodiny',
'minute' => 'minuta',
'minutes' => 'munuty',
'second' => 'vteřina',
'seconds' => 'vteřiny',
'current' => 'aktuální',
'settings' => 'Nastavení',
'search' => 'Hledat',
), ),
'menu' => array( 'menu' => array(
'config' => 'Konfigurace', 'config' => 'Konfigurace',
'server' => 'Servery', 'server' => 'Servery',
'server_log' => 'Log', 'server_log' => 'Log',
'server_status' => 'Status', 'server_status' => 'Stav',
'server_update' => 'Aktualizace', 'server_update' => 'Aktualizace',
'user' => 'Uživatelé', 'user' => 'Uživatelé',
'help' => 'Nápověda', 'help' => 'Nápověda',
@ -127,7 +142,7 @@ $sm_lang = array(
'sms' => 'SMS', 'sms' => 'SMS',
'pushover' => 'Pushover', 'pushover' => 'Pushover',
'no_logs' => 'Žádné záznamy', 'no_logs' => 'Žádné záznamy',
'clear' => 'Jasný protokol', 'clear' => 'Smazat log',
'delete_title' => 'Odstranit protokol', 'delete_title' => 'Odstranit protokol',
'delete_message' => 'Opravdu chcete odstranit protokoly <b>všechny</b>?', 'delete_message' => 'Opravdu chcete odstranit protokoly <b>všechny</b>?',
), ),
@ -147,6 +162,7 @@ $sm_lang = array(
'website_password_description' => 'Heslo pro přístup na stránku. Heslo je v databázi šifrované.', 'website_password_description' => 'Heslo pro přístup na stránku. Heslo je v databázi šifrované.',
'fieldset_monitoring' => 'Monitoring', 'fieldset_monitoring' => 'Monitoring',
'fieldset_permissions' => 'Oprávnění', 'fieldset_permissions' => 'Oprávnění',
'permissions' => 'Servery budou viditelné pro tyto uživatele',
'port' => 'Port', 'port' => 'Port',
'custom_port' => 'Uživatelský Port', 'custom_port' => 'Uživatelský Port',
'popular_ports' => 'Populární Porty', 'popular_ports' => 'Populární Porty',
@ -160,13 +176,22 @@ $sm_lang = array(
'last_check' => 'Poslední kontrola', 'last_check' => 'Poslední kontrola',
'last_online' => 'Naposledy online', 'last_online' => 'Naposledy online',
'last_offline' => 'Naposledy offline', 'last_offline' => 'Naposledy offline',
'last_output' => 'Poslední pozitivní výstup',
'last_error' => 'Poslední chyba',
'last_error_output' => 'Poslední chyba - výstup',
'output' => 'Výstup',
'monitoring' => 'Monitoring', 'monitoring' => 'Monitoring',
'no_monitoring' => 'Žádné monitorované služby', 'no_monitoring' => 'Žádné monitorované služby',
'email' => 'E-mail', 'email' => 'E-mail',
'send_email' => 'Odeslat e-mail', 'send_email' => 'Odeslat e-mail',
'sms' => 'SMS', 'sms' => 'SMS',
'send_sms' => 'Odeslat SMS', 'send_sms' => 'Odeslat SMS upozornění',
'pushover' => 'Pushover', 'pushover' => 'Pushover',
'send_pushover' => 'Odeslat Pushover upozornění',
'telegram' => 'Telegram',
'send_telegram' => 'Odeslat Telegram upozornění',
'jabber' => 'Jabber',
'send_jabber' => 'Odeslat Jabber upozornění',
'users' => 'Uživatelé', 'users' => 'Uživatelé',
'delete_title' => 'Smazat server', 'delete_title' => 'Smazat server',
'delete_message' => 'Opravdu si přejete smazat \'%1\'?', 'delete_message' => 'Opravdu si přejete smazat \'%1\'?',
@ -205,6 +230,10 @@ $sm_lang = array(
'config' => array( 'config' => array(
'general' => 'Obecné', 'general' => 'Obecné',
'language' => 'Jazyk', 'language' => 'Jazyk',
'proxy' => 'Zapnout proxy',
'proxy_url' => 'Proxy URL',
'proxy_user' => 'Proxy uživatelské jméno',
'proxy_password' => 'Proxy heslo',
'show_update' => 'Kontrolovat aktualizace?', 'show_update' => 'Kontrolovat aktualizace?',
'password_encrypt_key' => 'Šifrovací klíč pro hesla', 'password_encrypt_key' => 'Šifrovací klíč pro hesla',
'password_encrypt_key_note' => 'Tímto klíčem se šifrují hesla, která se ukládají u serverů pro 'password_encrypt_key_note' => 'Tímto klíčem se šifrují hesla, která se ukládají u serverů pro
@ -243,6 +272,11 @@ $sm_lang = array(
'alert_type_status' => 'Změna stavu', 'alert_type_status' => 'Změna stavu',
'alert_type_offline' => 'Offline', 'alert_type_offline' => 'Offline',
'alert_type_always' => 'Vždy', 'alert_type_always' => 'Vždy',
'combine_notifications' => 'Kombinovat upozornění',
'combine_notifications_description' => 'Snižuje množství oznámení tím, že je spojuje do
1 jediné oznámení. (Toto nemá vliv na oznámení SMS.)',
'alert_proxy' => 'Proxy server se nikdy nepoužívá pro služby, i když je povolen.',
'alert_proxy_url' => 'Formát: server:port',
'log_status' => 'Log', 'log_status' => 'Log',
'log_status_description' => 'Pokud je Log nastaven na hodnotu TRUE, systém do něj zapíše veškerá 'log_status_description' => 'Pokud je Log nastaven na hodnotu TRUE, systém do něj zapíše veškerá
provedená upozornění.', provedená upozornění.',
@ -258,9 +292,11 @@ $sm_lang = array(
'settings_pushover' => 'Nastavení Pushover', 'settings_pushover' => 'Nastavení Pushover',
'settings_notification' => 'Nastavení upozornění', 'settings_notification' => 'Nastavení upozornění',
'settings_log' => 'Nastavení logu', 'settings_log' => 'Nastavení logu',
'settings_proxy' => 'Proxy nastavení',
'auto_refresh' => 'Automaticky obnovit', 'auto_refresh' => 'Automaticky obnovit',
'auto_refresh_description' => 'Automaticky obnovit stránku Servery.<br><span class="small">Čas v sekundách, 'auto_refresh_description' => 'Automaticky obnovit stránku Servery.<br><span class="small">Čas v sekundách,
0 pro vypnutí automatického obnovení.</span>', 0 pro vypnutí automatického obnovení.</span>',
'seconds' => 'sekund',
'test' => 'Test', 'test' => 'Test',
'test_email' => 'E-mail bude odeslán na adresu uvedenou v uživatelském profilu.', 'test_email' => 'E-mail bude odeslán na adresu uvedenou v uživatelském profilu.',
'test_sms' => 'SMS bude odeslána na telefonní číslo uvedené v uživatelském profilu.', 'test_sms' => 'SMS bude odeslána na telefonní číslo uvedené v uživatelském profilu.',
@ -289,16 +325,14 @@ $sm_lang = array(
'notifications' => array( 'notifications' => array(
'off_sms' => 'Server \'%LABEL%\' je offline: ip=%IP%, port=%PORT%. Chyba=%ERROR%', 'off_sms' => 'Server \'%LABEL%\' je offline: ip=%IP%, port=%PORT%. Chyba=%ERROR%',
'off_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je offline', 'off_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je offline',
'off_email_body' => 'Nebylo možné spojit se se serverem:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: 'off_email_body' => 'Nebylo možné se spojit se serverem:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%',
%PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%',
'off_pushover_title' => 'Server \'%LABEL%\' je offline', 'off_pushover_title' => 'Server \'%LABEL%\' je offline',
'off_pushover_message' => 'Nebylo možné spojit se se serverem:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: 'off_pushover_message' => 'Nebylo možné se spojit se serverem:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%',
%PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%', 'off_telegram_message' => 'Nebylo možné se spojit se serverem:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%',
'on_sms' => 'Server \'%LABEL%\' je online: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%', 'on_sms' => 'Server \'%LABEL%\' je online: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%',
'on_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je online', 'on_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je online',
'on_email_body' => 'Server \'%LABEL%\' je opět online, it was down for 'on_email_body' => 'Server \'%LABEL%\' je opět online, byl nedostupný %LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Datum: %DATE%',
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Datum: 'on_telegram_message' => 'Server \'%LABEL%\' je opět online, byl nedostupný %LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Datum: %DATE%',
%DATE%',
'on_pushover_title' => 'Server \'%LABEL%\' je online', 'on_pushover_title' => 'Server \'%LABEL%\' je online',
'on_pushover_message' => 'Server \'%LABEL%\' je znovu online, it was down for 'on_pushover_message' => 'Server \'%LABEL%\' je znovu online, it was down for
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:

View File

@ -189,7 +189,7 @@ $sm_lang = array(
'website_password_description' => 'Password to access the site. The password is encrypted in the database.', 'website_password_description' => 'Password to access the site. The password is encrypted in the database.',
'fieldset_monitoring' => 'Monitoring', 'fieldset_monitoring' => 'Monitoring',
'fieldset_permissions' => 'Permissions', 'fieldset_permissions' => 'Permissions',
'permissions' => 'Users who can view and be notified about this server', 'permissions' => 'Server will be visible for the following users',
'port' => 'Port', 'port' => 'Port',
'custom_port' => 'Custom Port', 'custom_port' => 'Custom Port',
'popular_ports' => 'Popular Ports', 'popular_ports' => 'Popular Ports',
@ -435,8 +435,6 @@ $sm_lang = array(
'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.', 'test_sms' => 'An SMS will be sent to the phone number specified in your user profile.',
'test_discord' => 'A Discord notification will be sent to the webhook specified in your user profile.', 'test_discord' => 'A Discord notification will be sent to the webhook specified in your user profile.',
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.', 'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user profile.',
'test_pushover' => 'A Pushover notification will be sent to the user key/device specified in your user
profile.',
'test_webhook' => 'A webhook notification will be sent to the given url endpoint.', 'test_webhook' => 'A webhook notification will be sent to the given url endpoint.',
'test_telegram' => 'A Telegram notification will be sent to the chat id specified in your user profile.', 'test_telegram' => 'A Telegram notification will be sent to the chat id specified in your user profile.',
'test_jabber' => 'A Jabber notification will be sent to the jabber account specified in your user profile.', 'test_jabber' => 'A Jabber notification will be sent to the jabber account specified in your user profile.',
@ -478,8 +476,6 @@ $sm_lang = array(
'off_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is DOWN', 'off_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is DOWN',
'off_email_body' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%', 'off_email_body' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%',
'off_discord_message' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%', 'off_discord_message' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%',
'off_email_body' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port:
%PORT%<br>Error: %ERROR%<br>Date: %DATE%',
'off_webhook_title' => 'Server \'%LABEL%\' is DOWN', 'off_webhook_title' => 'Server \'%LABEL%\' is DOWN',
'off_webhook_message' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP: 'off_webhook_message' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP:
%IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%', %IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%',

View File

@ -43,19 +43,20 @@ $sm_lang = array(
'save' => 'Сохранить', 'save' => 'Сохранить',
'edit' => 'Редактировать', 'edit' => 'Редактировать',
'delete' => 'Удалить', 'delete' => 'Удалить',
'view' => 'Просмотр',
'date' => 'Дата', 'date' => 'Дата',
'message' => 'Сообщение', 'message' => 'Сообщение',
'yes' => 'Да', 'yes' => 'Да',
'no' => 'Нет', 'no' => 'Нет',
'insert' => 'Добавить', 'insert' => 'Добавить',
'add_new' => 'Добавить новый', 'add_new' => 'Добавить',
'update_available' => 'Новая версия ({version}) доступна по адресу <a 'update_available' => 'Новая версия ({version}) доступна по адресу <a href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank" rel="noopener">http://www.phpservermonitor.org</a>.',
href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank"
rel="noopener">http://www.phpservermonitor.org</a>.',
'back_to_top' => 'Наверх', 'back_to_top' => 'Наверх',
'go_back' => 'Вернуться', 'go_back' => 'Вернуться',
'ok' => 'OK', 'ok' => 'Норма (не уведомлять)',
'bad' => 'Не норма (уведомлять)',
'cancel' => 'Отмена', 'cancel' => 'Отмена',
'none' => 'Не указано',
'activate' => 'Активировать', 'activate' => 'Активировать',
'short_day_format' => '%e %B', 'short_day_format' => '%e %B',
'long_day_format' => '%e %B %Y', 'long_day_format' => '%e %B %Y',
@ -80,6 +81,11 @@ $sm_lang = array(
'minutes' => 'минут', 'minutes' => 'минут',
'second' => 'секунда', 'second' => 'секунда',
'seconds' => 'секунд', 'seconds' => 'секунд',
'millisecond' => 'мс',
'milliseconds' => 'мс',
'current' => 'current',
'settings' => 'Настройки',
'search' => 'Поиск',
), ),
'menu' => array( 'menu' => array(
'config' => 'Параметры', 'config' => 'Параметры',
@ -100,50 +106,39 @@ $sm_lang = array(
'level' => 'Уровень', 'level' => 'Уровень',
'level_10' => 'Администратор', 'level_10' => 'Администратор',
'level_20' => 'Пользователь', 'level_20' => 'Пользователь',
'level_description' => '<b>Администраторы</b> имеют полный доступ: они 'level_30' => 'Анонимный',
могут управлять серверами, пользователями и 'level_description' => '<b>Администраторы</b> имеют полный доступ: они могут управлять серверами, пользователями и изменять общую конфигурацию.<br><b>Пользователи</b> могут только просматривать и запускать проверку для серверов, которые были к ним прикреплены.',
изменять общую
конфигурацию.<br><b>Пользователи</b> могут только
просматривать и запускать проверку для
серверов, которые были к ним прикреплены.',
'mobile' => 'Телефон', 'mobile' => 'Телефон',
'email' => 'E-mail', 'email' => 'E-mail',
'pushover' => 'Pushover', 'pushover' => 'Pushover',
'pushover_description' => 'Pushover - это сервис, который позволяет легко 'pushover_description' => 'Pushover - это сервис, который позволяет легко получать уведомления в режиме реального времени. Больше информации на <a href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
получать уведомления в режиме реального
времени. Больше информации на <a
href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
'pushover_key' => 'Pushover ключ', 'pushover_key' => 'Pushover ключ',
'pushover_device' => 'Pushover устройство', 'pushover_device' => 'Pushover устройство',
'pushover_device_description' => 'Имя устройства, на которое будут 'pushover_device_description' => 'Имя устройства, на которое будут отправляться уведомления. Оставьте пустым, что бы отправлять уведомления на все устройства.',
отправляться уведомления. Оставьте 'discord' => 'Discord',
пустым, что бы отправлять уведомления на 'discord_label' => 'Discord',
все устройства.', 'discord_description' => 'Укажите ваш <a href="https://discordjs.guide/popular-topics/webhooks.html" target="_blank">вебхук</a> здесь.',
'telegram' => 'Telegram', 'telegram' => 'Telegram',
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> удобный 'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> удобный мессенджер для получения уведомлений в
мессенджер для получения уведомлений в реальном времени. Посетите <a href="http://docs.phpservermonitor.org/" target="_blank">раздел
реальном времени. Посетите <a документации</a> для получения доп. информации и инструкций по установке.',
href="http://docs.phpservermonitor.org/" target="_blank">раздел
документации</a> для получения доп. информации
и инструкций по установке.',
'telegram_chat_id' => 'Telegram chat id', 'telegram_chat_id' => 'Telegram chat id',
'telegram_chat_id_description' => 'Сообщения будут отправляться на 'telegram_chat_id_description' => 'Сообщения будут отправляться на указанный идентификатор чата.',
указанный идентификатор чата.',
'telegram_get_chat_id' => 'Нажмите здесь чтобы получить ваш chat id', 'telegram_get_chat_id' => 'Нажмите здесь чтобы получить ваш chat id',
'activate_telegram' => 'Активировать уведомления в Telegram', 'activate_telegram' => 'Активировать уведомления в Telegram',
'activate_telegram_description' => 'Разрешить отправку уведомлений на 'activate_telegram_description' => 'Разрешить отправку уведомлений на указанный идентификатор чата. Без этого разрешения Telegram не позволит нам отправлять вам уведомления.',
указанный идентификатор чата. Без этого 'telegram_bot_username_found' => 'Бот обнаружен!<br><a href="%s" target="_blank" rel="noopener"><button class="btn btn-primary">Следующий шаг</button></a> <br>Откроется чат с ботом. Здесь вам нужно нажать кнопку Start или отправить команду /start.',
разрешения Telegram не позволит нам 'telegram_bot_username_error_token' => '401 - Unauthorized. Пожалуйста укажите действительный API токен.',
отправлять вам уведомления.', 'telegram_bot_error' => 'Произошла ошибка при активации уведомления Telegram: %s',
'telegram_bot_username_found' => 'Бот обнаружен!<br><a href="%s" target="_blank" 'jabber' => 'Jabber',
rel="noopener"><button class="btn btn-primary">Следующий 'jabber_label' => 'Jabber',
шаг</button></a> <br>Откроется чат с ботом. Здесь 'jabber_description' => 'Ваш Jabber аккаунт',
вам нужно нажать кнопку Start или отправить 'webhook' => 'Вебхук',
команду /start.', 'webhook_description' => 'Отправить JSON вебхук на указанный URL.',
'telegram_bot_username_error_token' => '401 - Unauthorized. Пожалуйста укажите 'webhook_url' => 'URL вебхука',
действительный API токен..', 'webhook_url_description' => 'Публичный URL вебхука, должен начинаться с https://',
'telegram_bot_error' => 'Произошла ошибка при активации уведомления 'webhook_json' => 'JSON сообщение',
Telegram: %s', 'webhook_json_description' => 'Указать пользовательский JSON, например: {"Любой текст": "servermon: #server_label" "любой текст": "#server_ip is **#status**"}.<br>Доступные переменные: #message, #server_error, #server_ip, #server_label, #server_last_offline_duration и #status',
'delete_title' => 'Удалить пользователя', 'delete_title' => 'Удалить пользователя',
'delete_message' => 'Вы уверены что хотите удалить пользователя \'%1\'?', 'delete_message' => 'Вы уверены что хотите удалить пользователя \'%1\'?',
'deleted' => 'Пользователь удален.', 'deleted' => 'Пользователь удален.',
@ -152,26 +147,28 @@ $sm_lang = array(
'profile' => 'Профиль', 'profile' => 'Профиль',
'profile_updated' => 'Ваш профиль был обновлен.', 'profile_updated' => 'Ваш профиль был обновлен.',
'error_user_name_bad_length' => 'Логин должен содержать от 2 до 64 знаков.', 'error_user_name_bad_length' => 'Логин должен содержать от 2 до 64 знаков.',
'error_user_name_invalid' => 'Имя пользователя может содержать только 'error_user_name_invalid' => 'Имя пользователя может содержать только латинские символы (a-z, A-Z), цифры (0-9), точки (.) и подчеркивание (_).',
латинские символы (a-z, A-Z), цифры (0-9), точки (.)
и подчеркивание (_).',
'error_user_name_exists' => 'Данный логин уже существует.', 'error_user_name_exists' => 'Данный логин уже существует.',
'error_user_email_bad_length' => 'E-mail может содержать от 5 до 255 знаков.', 'error_user_email_bad_length' => 'E-mail может содержать от 5 до 255 знаков.',
'error_user_email_invalid' => 'E-mail указан неверно.', 'error_user_email_invalid' => 'E-mail указан неверно.',
'error_user_level_invalid' => 'Данный уровень пользователя 'error_user_level_invalid' => 'Данный уровень пользователя недействителен.',
недействителен.',
'error_user_no_match' => 'Данного пользователя нет в базе данных.', 'error_user_no_match' => 'Данного пользователя нет в базе данных.',
'error_user_password_invalid' => 'Пароль указан неверно.', 'error_user_password_invalid' => 'Пароль указан неверно.',
'error_user_password_no_match' => 'Введенные пароли не совпадают.', 'error_user_password_no_match' => 'Введенные пароли не совпадают.',
'error_user_admin_cant_be_deleted' => 'Вы не можете удалить последнего администратора.',
'error_user_cant_be_anonymous' => 'Только пользователь \'__public__\' может иметь уровень Анонимный.'
), ),
'log' => array( 'log' => array(
'title' => 'Запись', 'title' => 'Логи',
'type' => 'Тип', 'type' => 'Тип',
'status' => 'Статус', 'status' => 'Статус',
'email' => 'E-mail', 'email' => 'E-mail',
'sms' => 'SMS', 'sms' => 'SMS',
'discord' => 'Discord',
'pushover' => 'Pushover', 'pushover' => 'Pushover',
'webhook' => 'Webhook',
'telegram' => 'Telegram', 'telegram' => 'Telegram',
'jabber' => 'Jabber',
'no_logs' => 'Записей нет', 'no_logs' => 'Записей нет',
'clear' => 'Очистить логи', 'clear' => 'Очистить логи',
'delete_title' => 'Удаление логов', 'delete_title' => 'Удаление логов',
@ -187,30 +184,33 @@ $sm_lang = array(
'authentication_settings' => 'Настройки аутентификации', 'authentication_settings' => 'Настройки аутентификации',
'optional' => 'необязательно', 'optional' => 'необязательно',
'website_username' => 'Имя пользователя', 'website_username' => 'Имя пользователя',
'website_username_description' => 'Имя пользователя для доступа к сайту. 'website_username_description' => 'Имя пользователя для доступа к сайту. (Поддерживается только Apache authentication.)',
(Поддерживается только Apache authentication.)',
'website_password' => 'Пароль', 'website_password' => 'Пароль',
'website_password_description' => 'пароль для доступа к сайту. Пароль будет 'website_password_description' => 'пароль для доступа к сайту. Пароль будет храниться в зашифрованном виде.',
храниться в зашифрованном виде.',
'fieldset_monitoring' => 'Мониторинг', 'fieldset_monitoring' => 'Мониторинг',
'fieldset_permissions' => 'Права доступа', 'fieldset_permissions' => 'Права доступа',
'permissions' => 'Сервер будет доступен для просмотра указанным пользователям',
'port' => 'Порт', 'port' => 'Порт',
'custom_port' => 'Указать порт', 'custom_port' => 'Указать порт',
'popular_ports' => 'Популярные порты', 'popular_ports' => 'Популярные порты',
'request_method' => 'Метод запроса',
'custom_request_method' => 'Пользовательский метод запроса',
'popular_request_methods' => 'Популярные методы запроса',
'post_field' => 'Параметры запроса',
'post_field_description' => 'Данные, которые будут отправлены, используя тип запроса, выбранный выше.',
'please_select' => 'Выберите', 'please_select' => 'Выберите',
'type' => 'Тип', 'type' => 'Тип',
'type_website' => 'Веб-сайт', 'type_website' => 'Веб-сайт',
'type_service' => 'Сервис', 'type_service' => 'Сервис',
'type_ping' => 'Пинг', 'type_ping' => 'Пинг',
'pattern' => 'Искать текст/шаблон', 'pattern' => 'Искать текст/шаблон',
'pattern_description' => 'Если текст по шаблону не найден на сайте, 'pattern_description' => 'Если текст по шаблону не найден на сайте, сервер будет помечен как Оффлайн. Регулярные выражения допустимы.',
сервер будет помечен как Оффлайн. Регулярные
выражения допустимы.',
'pattern_online' => 'Шаблон указывает что вебсайт:', 'pattern_online' => 'Шаблон указывает что вебсайт:',
'pattern_online_description' => 'Online: Если этот шаблон найден на веб-сайте, 'pattern_online_description' => 'Online: Если этот шаблон найден на веб-сайте, сервер будет отмечен Онлайн. Offline: Если этот шаблон не найден на веб-сайте, сервер будет отмечен как Оффлайн.',
сервер будет отмечен Онлайн. Offline: Если 'redirect_check' => 'Начичите редиректа на другой домен',
этот шаблон не найден на веб-сайте, сервер 'redirect_check_description' => 'Редирект на другой домен обычно является плохим знаком.',
будет отмечен как Оффлайн.', 'allow_http_status' => 'Разрешенные коды ответа HTTP',
'allow_http_status_description' => 'Сайт будет считаться айт как онлайн. Сайт с HTTP кодами ответа меньше 400 считается онлайн по умолчанию. Разделять знаком |.',
'header_name' => 'Название заголовка', 'header_name' => 'Название заголовка',
'header_value' => 'Значение заголовка', 'header_value' => 'Значение заголовка',
'header_name_description' => 'с учетом регистра.', 'header_name_description' => 'с учетом регистра.',
@ -220,14 +220,24 @@ $sm_lang = array(
'last_offline' => 'Был оффлайн', 'last_offline' => 'Был оффлайн',
'monitoring' => 'Мониторинг', 'monitoring' => 'Мониторинг',
'no_monitoring' => 'Нет мониторинга', 'no_monitoring' => 'Нет мониторинга',
'last_output' => 'Последний положительный вывод',
'last_error' => 'Последняя ошибка',
'last_error_output' => 'Последний вывод с ошибкой',
'output' => 'Результаты проверки',
'email' => 'E-mail', 'email' => 'E-mail',
'send_email' => 'Отправить E-mail', 'send_email' => 'Отправлять E-mail',
'sms' => 'CMC', 'sms' => 'CMC',
'send_sms' => 'Отправить CMC', 'send_sms' => 'Отправлять CMC',
'discord' => 'Discord',
'send_discord' => 'Отправлять уведомления в Discord',
'webhook' => 'Вебхук',
'send_webhook' => 'Отправлять уведомления на вебхук',
'pushover' => 'Pushover', 'pushover' => 'Pushover',
'send_pushover' => 'Отправлять уведомления в Pushover', 'send_pushover' => 'Отправлять уведомления в Pushover',
'telegram' => 'Telegram', 'telegram' => 'Telegram',
'send_telegram' => 'Отправлять уведомления в Telegram', 'send_telegram' => 'Отправлять уведомления в Telegram',
'jabber' => 'Jabber',
'send_jabber' => 'Отправлять Jabber уведомления',
'users' => 'Пользователи', 'users' => 'Пользователи',
'delete_title' => 'Удалить сервер', 'delete_title' => 'Удалить сервер',
'delete_message' => 'Вы уверены что хотите удалить сервер \'%1\'?', 'delete_message' => 'Вы уверены что хотите удалить сервер \'%1\'?',
@ -247,9 +257,11 @@ $sm_lang = array(
'day' => 'День', 'day' => 'День',
'hour' => 'Час', 'hour' => 'Час',
'warning_threshold' => 'Порог предупреждения', 'warning_threshold' => 'Порог предупреждения',
'warning_threshold_description' => 'Количество неудачных проверок, 'warning_threshold_description' => 'Количество неудачных проверок, требуемых чтобы сервер был помечен как Оффлайн.',
требуемых чтобы сервер был помечен как 'ssl_cert_expiry_days' => 'Валидность SSL сертификата',
Оффлайн.', 'ssl_cert_expiry_days_description' => 'Количество дней до истечения срока действия SSL-сертификата. Используйте 0 для отключения проверки.',
'ssl_cert_expired' => 'Срок действия SSL-сертификата истек с',
'ssl_cert_expiring' => 'SSL-сертификат истекает:',
'chart_last_week' => 'Прошлая неделя', 'chart_last_week' => 'Прошлая неделя',
'chart_history' => 'История', 'chart_history' => 'История',
'chart_day_format' => '%d.%m.%Y', 'chart_day_format' => '%d.%m.%Y',
@ -258,32 +270,33 @@ $sm_lang = array(
'chart_short_time_format' => '%H:%M', 'chart_short_time_format' => '%H:%M',
'warning_notifications_disabled_sms' => 'SMS уведомления отключены.', 'warning_notifications_disabled_sms' => 'SMS уведомления отключены.',
'warning_notifications_disabled_email' => 'E-mail уведомления отключены.', 'warning_notifications_disabled_email' => 'E-mail уведомления отключены.',
'warning_notifications_disabled_discord' => 'Уведомления в Discord отключены.',
'warning_notifications_disabled_webhook' => 'Уведомления на вебхук отключены',
'warning_notifications_disabled_pushover' => 'Pushover уведомления отключены.', 'warning_notifications_disabled_pushover' => 'Pushover уведомления отключены.',
'warning_notifications_disabled_telegram' => 'Уведомления в Telegram отключены.', 'warning_notifications_disabled_telegram' => 'Уведомления в Telegram отключены.',
'warning_notifications_disabled_jabber' => 'Jabber уведомления отключены.',
'error_server_no_match' => 'Сервер не найден.', 'error_server_no_match' => 'Сервер не найден.',
'error_server_label_bad_length' => 'Название должно содержать от 1 до 255 'error_server_label_bad_length' => 'Название должно содержать от 1 до 255 знаков.',
знаков.',
'error_server_ip_bad_length' => 'Домен/IP должен содержать от 1 до 255 знаков', 'error_server_ip_bad_length' => 'Домен/IP должен содержать от 1 до 255 знаков',
'error_server_ip_bad_service' => 'IP-адрес недействителен.', 'error_server_ip_bad_service' => 'IP-адрес недействителен.',
'error_server_ip_bad_website' => 'Ссылка веб-страницы недействительна.', 'error_server_ip_bad_website' => 'Ссылка веб-страницы недействительна.',
'error_server_type_invalid' => 'Выбраный тип сервера недействителен.', 'error_server_type_invalid' => 'Выбраный тип сервера недействителен.',
'error_server_warning_threshold_invalid' => 'Порог предупреждения должен иметь 'error_server_warning_threshold_invalid' => 'Порог предупреждения должен иметь значение больше 0',
значение больше 0', 'error_server_ssl_cert_expiry_days' => 'Оставшиеся дни срока действия сертификата SSL должны быть целым числом, большим или равным 0.',
), ),
'config' => array( 'config' => array(
'general' => 'Основные', 'general' => 'Основные',
'site_title' => 'Заголовок сайта',
'language' => 'Язык', 'language' => 'Язык',
'show_update' => 'Проверять обновления?', 'show_update' => 'Проверять обновления?',
'password_encrypt_key' => 'Ключ шифрования пароля', 'password_encrypt_key' => 'Ключ шифрования пароля',
'password_encrypt_key_note' => 'Этот ключ используется для шифрования 'password_encrypt_key_note' => 'Этот ключ используется для шифрования паролей, которые указаны на серверах (для доступа к веб-сайтам). Если ключ изменится, сохраненный пароль будет недействителен!',
паролей, которые указаны на серверах (для
доступа к веб-сайтам). Если ключ изменится,
сохраненный пароль будет недействителен!',
'proxy' => 'Использовать прокси', 'proxy' => 'Использовать прокси',
'proxy_url' => 'Адрес прокси', 'proxy_url' => 'Адрес прокси',
'proxy_user' => 'Имя пользователя прокси', 'proxy_user' => 'Имя пользователя прокси',
'proxy_password' => 'Пароль прокси', 'proxy_password' => 'Пароль прокси',
'email_status' => 'Разрешить отправку email', 'email_status' => 'Разрешить отправку email',
'email_add_url' => 'Добавлять ссылку на мониторинг в текст сообщения',
'email_from_email' => 'Отправлять от адреса', 'email_from_email' => 'Отправлять от адреса',
'email_from_name' => 'Отправлять от имени', 'email_from_name' => 'Отправлять от имени',
'email_smtp' => 'Использовать SMTP', 'email_smtp' => 'Использовать SMTP',
@ -299,87 +312,115 @@ $sm_lang = array(
'sms_gateway_username' => 'Пользователь', 'sms_gateway_username' => 'Пользователь',
'sms_gateway_password' => 'Пароль', 'sms_gateway_password' => 'Пароль',
'sms_from' => 'Номер отправителя', 'sms_from' => 'Номер отправителя',
'discord_status' => 'Разрешить отправку сообщений в Discord',
'discord_description' => 'Discord - это сервис, который позволяет легко получать уведомления в режиме реального времени. Посетите <a href="https://discord.com/" target="_blank">сайт Discord</a> для подробностей.',
'webhook_status' => 'Разрешить отправку сообщений на вебхук',
'webhook_description' => 'Разрешить отправку на вебхук различных сервисов, например slack. URL вебхука и формат сообщения указываются в профиле пользователя.',
'webhook_url' => 'URL вебхука',
'webhook_url_description' => 'URL вебхука',
'webhook_json' => 'JSON сообщение',
'webhook_json_description' => 'Указать пользовательский JSON. Доступные переменные: #message, #server_error, #server_ip, #server_label, #server_last_offline_duration и #status',
'pushover_status' => 'Разрешить отправку Pushover сообщений', 'pushover_status' => 'Разрешить отправку Pushover сообщений',
'pushover_description' => 'Pushover - это сервис, который позволяет легко 'pushover_description' => 'Pushover - это сервис, который позволяет легко получать уведомления в режиме реального времени. Больше информации на <a href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
получать уведомления в режиме реального
времени. Больше информации на <a
href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
'pushover_clone_app' => 'Нажмите здесь чтобы создать ваш Pushover app', 'pushover_clone_app' => 'Нажмите здесь чтобы создать ваш Pushover app',
'pushover_api_token' => 'Pushover App API Token', 'pushover_api_token' => 'Pushover App API Token',
'pushover_api_token_description' => 'Прежде чем вы сможете начать 'pushover_api_token_description' => 'Прежде чем вы сможете начать пользоваться Pushover, вам необходимо зарегистрировать <a href="%1$s" target="_blank" rel="noopener">"App"</a> на их веб-сайте и ввести "App API Token" сюда.',
пользоваться Pushover, вам необходимо
зарегистрировать <a href="%1$s" target="_blank"
rel="noopener">"App"</a> на их веб-сайте и ввести "App
API Token" сюда.',
'telegram_status' => 'Разрешить отправку уведомлений в Telegram', 'telegram_status' => 'Разрешить отправку уведомлений в Telegram',
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> удобный 'telegram_add_url' => 'Добавлять ссылку на мониторинг в текст сообщения',
мессенджер для получения уведомлений в 'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> удобный мессенджер для получения уведомлений в реальном времени. Посетите <a href="http://docs.phpservermonitor.org/" target="_blank">раздел документации</a> для получения доп. информации и инструкций по установке.',
реальном времени. Посетите <a
href="http://docs.phpservermonitor.org/" target="_blank">раздел
документации</a> для получения доп. информации
и инструкций по установке.',
'telegram_api_token' => 'Telegram API Token', 'telegram_api_token' => 'Telegram API Token',
'telegram_api_token_description' => 'Прежде чем вы сможете начать 'telegram_api_token_description' => 'Прежде чем вы сможете начать пользоваться Telegram, вам необходимо получить API Token. Посетите <a href="http://docs.phpservermonitor.org/" target="_blank">раздел документации</a> для получения помощи.',
пользоваться Telegram, вам необходимо 'jabber_status' => 'Разрешить отправку Jabber (XMPP) сообщений',
получить API Token. Посетите <a 'jabber_description' => 'Посетите <a href="http://docs.phpservermonitor.org/">страницу документации</a> для получения подробностей.',
href="http://docs.phpservermonitor.org/" target="_blank">раздел 'jabber_host' => 'Хост',
документации</a> для получения помощи.', 'jabber_host_description' => 'Сервер вашего Jabber провайдера. Для аккаунта Google используйте talk.google.com.',
'jabber_port' => 'Порт',
'jabber_port_description' => 'Порт вашего Jabber провайдера. По умолчанию 5222. Для аккаунта Google используйте 5223.',
'jabber_username' => 'Имя пользователя',
'jabber_username_description' => 'Для аккаунта Google указывайте вместе с доменом, например example@google.com.',
'jabber_domain' => 'Домен',
'jabber_domain_description' => 'Домен вашего Jabber провайдера. Оставьте пустым для Google аккаунта.',
'jabber_password' => 'Пароль',
'jabber_password_description' => 'Заполняйте только для установки или изменения пароля.',
'jabber_check' => 'Проверьте ваш аккаунт Jabber, если сообщение было получено.',
'dirauth_status' => 'Аутентифицироваться с помощью службы каталогов',
'authdir_host_locn' => 'Хост каталога',
'authdir_host_port' => 'Порт каталога',
'authdir_type' => 'Тип сервиса',
'authdir_type_description' => 'OpenLDAP: Directory - это служба OpenLDAP.<br>AD DS: Directory - это доменная служба Active Directory.<br>AD LDS: Directory - это упрощенная служба каталогов Active Directory.',
'authdir_type_openldap' => 'OpenLDAP',
'authdir_type_adds' => 'AD DS',
'authdir_type_adlds' => 'AD LDS',
'authdir_userdomain' => 'Домен Active Directory',
'authdir_userdomain_description' => 'Пользовательский домен для Active Directory. Обычно это домен NETBIOS для AD DS и домен DNS для AD LDS. Не используется для каталогов OpenLDAP.',
'authdir_ldapver' => 'Версия протокола LDAP',
'authdir_ldapver_description' => 'Версия спецификации LDAP. Обычно это Версия 3 (по умолчанию). Версия 2 устарела в 2003 году (RFC3494).',
'authdir_ldapfollowref' => 'Следовать ссылкам',
'authdir_ldapfollowref_description' => 'Следовать ссылкам, если указанный сервер обращается к другому серверу за необходимой информацией. Не устанавливайте флажок, если вы не знаете об этой функции.',
'authdir_basedn' => 'Базовый DN*',
'authdir_basedn_description' => 'Базовое отличительное имя (DN) службы каталогов. Например, dc=domain,dc=tld. Это обязательное поле.',
'authdir_usernameattrib' => 'Атрибут имени пользователя',
'authdir_usernameattrib_description' => 'Атрибут, используемый службой каталогов для ссылки на имя пользователя.',
'authdir_groupnameattrib' => 'Атрибут имени группы',
'authdir_groupnameattrib_description' => 'Атрибут, используемый службой каталогов для ссылки на имя группы в группе. Используется для проверки членства в группе.',
'authdir_groupmemattrib' => 'Атрибут члена группы',
'authdir_groupmemattrib_description' => 'Атрибут, используемый службой каталогов для ссылки на группу (группы), членом которых является пользователь. Используется для проверки членства в группе.',
'authdir_usercontainerrdn' => 'Контейнер RDN для пользователя',
'authdir_usercontainerrdn_description' => 'Относительное отличительное имя контейнера пользователей в каталоге. Например, ou=Users',
'authdir_groupcontainerrdn' => 'Контейнер RDN для группы',
'authdir_groupcontainerrdn_description' => 'Относительное отличительное имя контейнера групп в каталоге. Например, ou=Groups',
'authdir_groupname' => 'Авторизованная группа каталогов',
'authdir_groupname_description' => 'Группа каталогов, авторизованная для доступа к приложению. Пользователи каталога, не входящие в эту группу, не будут аутентифицированы (в настоящее время недоступно для AD).',
'authdir_defaultrole' => 'Роль по умолчанию',
'authdir_defaultrole_description' => 'Роль по умолчанию, назначаемая пользователям, входящим в систему в первый раз.',
'alert_type' => 'Тип уведомлений', 'alert_type' => 'Тип уведомлений',
'alert_type_description' => '<b>Изменение статуса:</b> Вы получите 'alert_type_description' => '<b>Изменение статуса:</b> Вы получите уведомление об изменение статуса. Для онлайн -> оффлайн или офлайн -> онлайн.<br><br /><b>Оффлайн:</b> Вы получите уведомление только когда сервер перейдет в статус оффлайн. Например, задание Cron выставлено на каждые 15 минут. Сервер перейдет в статус оффлайн в 1:00 и не измениться до 6:00. Вы получите 1 уведомление только в 1:00<br><br><b>Всегда:</b> Вы будете получать уведомление при каждом запуске скрипта проверки, как только сервер перейдет в статус оффлайн, даже если сервер находится в этом статусе несколько часов.',
уведомление об изменение статуса. Для
онлайн -> оффлайн или офлайн -> онлайн.<br><br
/><b>Оффлайн:</b> Вы получите уведомление
только когда сервер перейдет в статус
оффлайн. Например, задание Cron выставлено на
каждые 15 минут. Сервер перейдет в статус
оффлайн в 1:00 и не измениться до 6:00. Вы
получите 1 уведомление только в
1:00<br><br><b>Всегда:</b> Вы будете получать
уведомление при каждом запуске скрипта
проверки, как только сервер перейдет в
статус оффлайн, даже если сервер находится в
этом статусе несколько часов.',
'alert_type_status' => 'Изменение статуса', 'alert_type_status' => 'Изменение статуса',
'alert_type_offline' => 'Оффлайн', 'alert_type_offline' => 'Оффлайн',
'alert_type_always' => 'Всегда', 'alert_type_always' => 'Всегда',
'alert_proxy' => 'Даже если включено, прокси никогда не 'combine_notifications' => 'Комбинировать уведомления',
используется для сервисов', 'combine_notifications_description' => 'Уменьшит количество уведомлений, объединяя их в одно уведомление. (Это не влияет на SMS-уведомления.)',
'alert_proxy' => 'Даже если включено, прокси никогда не используется для сервисов',
'alert_proxy_url' => 'Формат: адрес:порт', 'alert_proxy_url' => 'Формат: адрес:порт',
'log_status' => 'Лог статусов', 'log_status' => 'Лог статусов',
'log_status_description' => 'Если лог статусов включен, монитор будет 'log_status_description' => 'Если лог статусов включен, монитор будет логировать все события выбранные в типе уведомлений.',
логировать все события выбранные в типе 'log_email' => 'Логировать E-mail уведомления',
уведомлений.', 'log_sms' => 'Логировать SMS уведомления',
'log_email' => 'Логировать уведомления отправленые по E-mail', 'log_discord' => 'Логировать Discord уведомления',
'log_sms' => 'Логировать уведомления отправленые по SMS',
'log_pushover' => 'Логировать Pushover уведомления', 'log_pushover' => 'Логировать Pushover уведомления',
'log_webhook' => 'Логировать вебхук уведомления',
'log_telegram' => 'Логировать Telegram уведомления', 'log_telegram' => 'Логировать Telegram уведомления',
'log_jabber' => 'Логировать Jabber уведомления',
'updated' => 'Настройки успешно сохранены.', 'updated' => 'Настройки успешно сохранены.',
'tab_email' => 'Email', 'tab_email' => 'Email',
'tab_sms' => 'SMS', 'tab_sms' => 'SMS',
'tab_discord' => 'Discord',
'tab_pushover' => 'Pushover', 'tab_pushover' => 'Pushover',
'tab_webhook' => 'Webhook',
'tab_telegram' => 'Telegram', 'tab_telegram' => 'Telegram',
'tab_jabber' => 'Jabber',
'tab_auth' => 'Аутентификация',
'settings_email' => 'Настройка E-mail', 'settings_email' => 'Настройка E-mail',
'settings_sms' => 'Настройка SMS', 'settings_sms' => 'Настройка SMS',
'settings_discord' => 'Настройка Discord',
'settings_pushover' => 'Настройка Pushover', 'settings_pushover' => 'Настройка Pushover',
'settings_webhook' => 'Настройка вебхука',
'settings_telegram' => 'Настройка Telegram', 'settings_telegram' => 'Настройка Telegram',
'settings_jabber' => 'Настройка Jabber',
'settings_notification' => 'Настройка уведомлений', 'settings_notification' => 'Настройка уведомлений',
'settings_log' => 'Настройка логирования', 'settings_log' => 'Настройка логирования',
'settings_proxy' => 'Настройка прокси', 'settings_proxy' => 'Настройка прокси',
'settings_dirauth' => 'Настройка LDAP',
'auto_refresh' => 'Авто-обновление', 'auto_refresh' => 'Авто-обновление',
'auto_refresh_description' => 'Авто-обновление страницы статуса 'auto_refresh_description' => 'Авто-обновление страницы статуса серверов.<br><span class="small">Время в секундах. Если указано 0, то страница не будет обновляться.</span>',
серверов.<br><span class="small">Время в секундах.
Если указано 0, то страница не будет
обновляться.</span>',
'test' => 'Проверка', 'test' => 'Проверка',
'test_email' => 'Сообщение будет отправлено на адрес указаный в 'test_email' => 'Сообщение будет отправлено на адрес указаный в профиле пользователя.',
профиле пользователя.', 'test_sms' => 'SMS будет отправлено на номер телефона, указаный в профиле пользователя.',
'test_sms' => 'SMS будет отправлено на номер телефона указаный в 'test_discord' => 'Уведомление Discord будет отправлено на вебхук, указанный в профиле пользователя.',
профиле пользователя.', 'test_pushover' => 'Pushover уведомление будет отправленно на устройство, указанное в профиле пользователя.',
'test_pushover' => 'Pushover уведомление будет отправленно на 'test_webhook' => 'Уведомление вебхука будет отправлено на URL, указанный в профиле пользователя',
устройство указанное в профиле пользователя.', 'test_telegram' => 'Уведомление Telegram будет отправлено на идентификатор чата, указанный в профиле пользователя.',
'test_telegram' => 'Уведомление Telegram будет отправлено на 'test_jabber' => 'Уведомление будет отправлено на учетную запись Jabber, указанную в профиле пользователя.',
идентификатор чата, указанный в профиле
пользователя.',
'send' => 'Отправить', 'send' => 'Отправить',
'test_subject' => 'Проверка', 'test_subject' => 'Проверка',
'test_message' => 'Тестовое сообщение', 'test_message' => 'Тестовое сообщение',
@ -387,57 +428,75 @@ $sm_lang = array(
'email_error' => 'Ошибка отправки email', 'email_error' => 'Ошибка отправки email',
'sms_sent' => 'SMS отправлено', 'sms_sent' => 'SMS отправлено',
'sms_error' => 'При отправке SMS произошла ошибка: %s', 'sms_error' => 'При отправке SMS произошла ошибка: %s',
'sms_error_nomobile' => 'Не удалось отправить тестовое SMS: 'sms_error_nomobile' => 'Не удалось отправить тестовое SMS: действительный номер телефона не найден в вашем профиле.',
действительный номер телефона не найден в 'discord_sent' => 'Уведомление Discord отправлено',
вашем профиле.', 'discord_error' => 'Произошла ошибка во время отправки Discord уведомления: %s',
'discord_error_nowebhook' => 'Произошла ошибка во время отправки Discord уведомления: валидный Discord вебхук не найден в вашем профиле.',
'webhook_sent' => 'Уведомление вебхук отправлено',
'webhook_error' => 'Произошла ошибка во время отправки вебхук уведомления: %s',
'webhook_error_nourl' => 'Не удалось отправить тестовое уведомление: URL вебхука не найден в вашем профиле.',
'webhook_error_nojson' => 'Не удалось отправить тестовое уведомление: JSON не найден в вашем профиле',
'pushover_sent' => 'Pushover уведомление отправлено', 'pushover_sent' => 'Pushover уведомление отправлено',
'pushover_error' => 'Произошла ошибка во время отправки Pushover 'pushover_error' => 'Произошла ошибка во время отправки Pushover уведомления: %s',
уведомления: %s', 'pushover_error_noapp' => 'Не удалось отправить тестовое уведомление: Pushover "App API token" не найден в основных настройках.',
'pushover_error_noapp' => 'Не удалось отправить тестовое уведомление: 'pushover_error_nokey' => 'Не удалось отправить тестовое уведомление: Pushover ключ не найден в вашем профиле.',
Pushover "App API token" не найден в основных
настройках.',
'pushover_error_nokey' => 'Не удалось отправить тестовое уведомление:
Pushover ключ не найден в вашем профиле.',
'telegram_sent' => 'Уведомление в Telegram отправлено', 'telegram_sent' => 'Уведомление в Telegram отправлено',
'telegram_error' => 'Произошла ошибка при отправке уведомления в 'telegram_error' => 'Произошла ошибка при отправке уведомления в Telegram: %s',
Telegram: %s', 'telegram_error_notoken' => 'Не удалось отправить тестовое уведомление: Telegram API token не найден в основных настройках.',
'telegram_error_notoken' => 'Не удалось отправить тестовое уведомление: 'telegram_error_noid' => 'Не удалось отправить тестовое уведомление: идентификатор чата не найден в вашем профиле.',
Telegram API token не найден в основных настройках.', 'jabber_sent' => 'Уведомление Jabber отправлено',
'telegram_error_noid' => 'Не удалось отправить тестовое уведомление: 'jabber_error' => 'Произошла ошибка при отправке Jabber уведомления: %s',
идентификатор чата не найден в вашем профиле.', 'jabber_error_noconfig' => 'Не удалось отправить тестовое уведомление: аккаунт Jabber не найден в основных настройках',
'jabber_error_noaccount' => 'Не удалось отправить тестовое уведомление: аккаунт Jabber не найден в вашем профиле.',
'log_retention_period' => 'Период хранения логов', 'log_retention_period' => 'Период хранения логов',
'log_retention_period_description' => 'Количество дней хранения логов 'log_retention_period_description' => 'Количество дней хранения логов уведомлений и архива аптайма серверов. Введите 0 для выключения очистки логов.',
уведомлений и архива аптайма серверов.
Введите 0 для выключения очистки логов.',
'log_retention_days' => 'дней', 'log_retention_days' => 'дней',
'user_agent' => 'User Agent',
'user_agent_key_note' => 'Пользовательский user agent, используемый мониторингом при взаимодействии с внешними службами.',
), ),
'notifications' => array( 'notifications' => array(
'off_sms' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН: IP=%IP%, Порт=%PORT%. 'off_sms' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН: IP=%IP%, Порт=%PORT%. Ошибка=%ERROR%',
Ошибка=%ERROR%',
'off_email_subject' => 'ВАЖНО: сервер \'%LABEL%\' сейчас НЕДОСТУПЕН', 'off_email_subject' => 'ВАЖНО: сервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
'off_email_body' => 'Невозможно подключиться к следующему 'off_email_body' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: 'off_discord_message' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
%PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%', 'off_webhook_title' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
'off_pushover_title' => 'Cервер \'%LABEL%\' сейчас НЕДОСТУПЕН', 'off_webhook_message' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP:
'off_pushover_message' => 'Невозможно подключиться к следующему %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: 'off_pushover_title' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
%PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%', 'off_pushover_message' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
'off_telegram_message' => 'Невозможно подключиться к следующему 'off_telegram_message' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: 'off_jabber_message' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
%PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%', 'on_sms' => 'Сервер \'%LABEL%\' снова ДОСТУПЕН: IP=%IP%, Порт=%PORT%. Был недоступен: %LAST_OFFLINE_DURATION%',
'on_sms' => 'Сервер \'%LABEL%\' снова ДОСТУПЕН: IP=%IP%, Порт=%PORT%. Был 'on_email_subject' => 'ВАЖНО: Сервер \'%LABEL%\' снова ДОСТУПЕН',
недоступен: %LAST_OFFLINE_DURATION%', 'on_email_body' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'on_email_subject' => 'ВАЖНО: Сервер \'%LABEL%\' сейчас ДОСТУПЕН', 'on_discord_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'on_email_body' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: 'on_webhook_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
%LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: 'on_webhook_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
%PORT%<br>Дата: %DATE%',
'on_pushover_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН', 'on_pushover_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
'on_pushover_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был 'on_pushover_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: 'on_telegram_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
%IP%<br>Порт: %PORT%<br>Дата: %DATE%', 'on_jabber_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'on_telegram_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был 'combi_off_email_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт: %PORT%</li><li>Ошибка: %ERROR%</li><li>Дата: %DATE%</li></ul>',
недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: 'combi_off_discord_message' => '- Сервер: %LABEL%<br>- IP: %IP%<br>- Порт: %PORT%<br>- Ошибка: %ERROR%<br>- Дата: %DATE%<br><br>',
%IP%<br>Порт: %PORT%<br>Дата: %DATE%', 'combi_off_webhook_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт: %PORT%</li><li>Ошибка: %ERROR%</li><li>Дата: %DATE%</li></ul>',
'combi_off_pushover_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт: %PORT%</li><li>Ошибка: %ERROR%</li><li>Дата: %DATE%</li></ul>',
'combi_off_telegram_message' => '- Сервер: %LABEL%<br>- IP: %IP%<br>- Порт: %PORT%<br>- Ошибка: %ERROR%<br>- Дата: %DATE%<br><br>',
'combi_off_jabber_message' => '- Сервер: %LABEL%<br>- IP: %IP%<br>- Порт: %PORT%<br>- Ошибка: %ERROR%<br>- Дата: %DATE%<br><br>',
'combi_on_email_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт: %PORT%</li><li>Упал: %LAST_OFFLINE_DURATION%</li><li>Дата: %DATE%</li></ul>',
'combi_on_webhook_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт: %PORT%</li><li>Упал: %LAST_OFFLINE_DURATION%</li><li>Дата: %DATE%</li></ul>',
'combi_on_discord_message' => '- Сервер: %LABEL%<br>- IP: %IP%<br>- Порт: %PORT%<br>- Упал: %LAST_OFFLINE_DURATION%<br>- Дата: %DATE%<br><br>',
'combi_on_pushover_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт: %PORT%</li><li>Упал: %LAST_OFFLINE_DURATION%</li><li>Дата: %DATE%</li></ul>',
'combi_on_telegram_message' => '- Сервер: %LABEL%<br>- IP: %IP%<br>- Порт: %PORT%<br>- Упал: %LAST_OFFLINE_DURATION%<br>- Дата: %DATE%<br><br>',
'combi_on_jabber_message' => '- Сервер: %LABEL%<br>- IP: %IP%<br>- Порт: %PORT%<br>- Упал: %LAST_OFFLINE_DURATION%<br>- Дата: %DATE%<br><br>',
'combi_email_subject' => 'ВАЖНО: \'%UP%\' сервера снова ДОСТУПНЫ, \'%DOWN%\' сервера НЕДОСТУПНЫ',
'combi_webhook_subject' => '\'%UP%\' сервера снова ДОСТУПНЫ, \'%DOWN%\' сервера НЕДОСТУПНЫ',
'combi_pushover_subject' => '\'%UP%\' сервера снова ДОСТУПНЫ, \'%DOWN%\' сервера НЕДОСТУПНЫ',
'combi_email_message' => '<b>Следующие сервера ушли в ОФФЛАЙН:</b><br>%DOWN_SERVERS%<br><b>Следующие сервера снова ОНЛАЙН:</b><br>%UP_SERVERS%',
'combi_discord_message' => '<b>Следующие сервера ушли в ОФФЛАЙН:</b><br>%DOWN_SERVERS%<br><b>Следующие сервера снова ОНЛАЙН:</b><br>%UP_SERVERS%',
'combi_webhook_message' => '<b>Следующие сервера ушли в ОФФЛАЙН:</b><br>%DOWN_SERVERS%<br><b>Следующие сервера снова ОНЛАЙН:</b><br>%UP_SERVERS%',
'combi_pushover_message' => '<b>Следующие сервера ушли в ОФФЛАЙН:</b><br>%DOWN_SERVERS%<br><b>Следующие сервера снова ОНЛАЙН:</b><br>%UP_SERVERS%',
'combi_telegram_message' => '<b>Следующие сервера ушли в ОФФЛАЙН:</b><br>%DOWN_SERVERS%<br><b>Следующие сервера снова ОНЛАЙН:</b><br>%UP_SERVERS%',
'combi_jabber_message' => '<b>Следующие сервера ушли в ОФФЛАЙН:</b><br>%DOWN_SERVERS%<br><b>Следующие сервера снова ОНЛАЙН:</b><br>%UP_SERVERS%',
), ),
'login' => array( 'login' => array(
'welcome_usermenu' => 'Здравствуйте, %user_name%', 'welcome_usermenu' => 'Здравствуйте, %user_name%',
@ -454,17 +513,13 @@ $sm_lang = array(
'password_forgot' => 'Забыли пароль?', 'password_forgot' => 'Забыли пароль?',
'password_reset' => 'Сбросить пароль', 'password_reset' => 'Сбросить пароль',
'password_reset_email_subject' => 'Сброс пароля для PHP Server Monitor', 'password_reset_email_subject' => 'Сброс пароля для PHP Server Monitor',
'password_reset_email_body' => 'Пожалуйста, используйте следующую ссылку 'password_reset_email_body' => 'Пожалуйста, используйте следующую ссылку для сброса пароля. Ссылка действительна 1 час.<br><br>%link%',
для сброса пароля. Ссылка действительна 1
час.<br><br>%link%',
'error_user_incorrect' => 'Пользователь с указаными данными не найден.', 'error_user_incorrect' => 'Пользователь с указаными данными не найден.',
'error_login_incorrect' => 'Информация указана неверно.', 'error_login_incorrect' => 'Информация указана неверно.',
'error_login_passwords_nomatch' => 'Пароль указан неверно.', 'error_login_passwords_nomatch' => 'Пароль указан неверно.',
'error_reset_invalid_link' => 'Ссылка для сброса пароля недействительна.', 'error_reset_invalid_link' => 'Ссылка для сброса пароля недействительна.',
'success_password_forgot' => 'Вам был отправлен email, с инструкциями по 'success_password_forgot' => 'Вам был отправлен email, с инструкциями по сбросу пароля.',
сбросу пароля.', 'success_password_reset' => 'Ваш пароль был сброшен. Пожалуйста авторизуйтесь.',
'success_password_reset' => 'Ваш пароль был сброшен. Пожалуйста
авторизуйтесь.',
), ),
'error' => array( 'error' => array(
'401_unauthorized' => 'Доступ закрыт', '401_unauthorized' => 'Доступ закрыт',

126
src/lang/th_TH.lang.php Normal file
View File

@ -0,0 +1,126 @@
<?php
/**
* PHP Server Monitor
* Monitor your servers and websites.
*
* This file is part of PHP Server Monitor.
* PHP Server Monitor is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PHP Server Monitor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PHP Server Monitor. If not, see <http://www.gnu.org/licenses/>.
*
* @package phpservermon
* @author Pepijn Over <pep@mailbox.org>
* @copyright Copyright (c) 2008-2017 Pepijn Over <pep@mailbox.org>
* @license http://www.gnu.org/licenses/gpl.txt GNU GPL v3
* @version Release: @package_version@
* @link http://www.phpservermonitor.org/
**/
$sm_lang = array(
'name' => 'Thai',
'locale' => array(
'0' => 'th_TH.UTF-8',
'1' => 'th_TH',
'2' => 'thai',
'3' => 'thai-th',
),
'locale_tag' => 'th',
'locale_dir' => 'ltr',
'system' => array(
'title' => 'Server Monitor',
'install' => 'ติดตั้ง',
'action' => 'Action',
'save' => 'บันทึก',
'edit' => 'แก้ไข',
'delete' => 'ลบ',
'view' => 'ดู',
'date' => 'วันที่',
'message' => 'ข้อความ',
'yes' => 'ใช่',
'no' => 'ไม่ใช่',
'insert' => 'แทรก',
'add_new' => 'เพิ่มใหม่',
'update_available' => 'มีเวอร์ชันใหม่ ({version}) ให้ดาวน์โหลดแล้ว คลิก <a href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank" rel="noopener">ที่นี่</a> เพื่อดาวน์โหลดการอัปเดต',
'back_to_top' => 'กลับไปยังด้านบน',
'go_back' => 'ถอยกลับ',
'ok' => 'ตกลง',
'bad' => 'ล้มเหลว',
'cancel' => 'ยกเลิก',
'none' => 'ไม่มี',
'activate' => 'เปิดใช้งาน',
'short_day_format' => '%B %e',
'long_day_format' => '%B %e, %Y',
'yesterday_format' => 'Yเมื่อวานตอน %k:%M',
'other_day_format' => '%A ตอน %k:%M',
'never' => 'ไม่มี',
'hours_ago' => '%d ชั่วโมงก่อน',
'an_hour_ago' => 'ประมาณหนึ่งชั่วโมงที่แล้ว',
'minutes_ago' => '%d นาทีที่แล้ว',
'a_minute_ago' => 'ประมาณหนึ่งนาทีที่แล้ว',
'seconds_ago' => '%d วินาทีที่แล้ว',
'a_second_ago' => 'เมื่อวินาทีที่แล้ว',
'year' => 'ปี',
'years' => 'ปี',
'month' => 'เดือน',
'months' => 'เดือน',
'day' => 'วัน',
'days' => 'วัน',
'hour' => 'ชั่วโมง',
'hours' => 'ชั่วโมง',
'minute' => 'นาที',
'minutes' => 'นาที',
'second' => 'วินาที',
'seconds' => 'วินาที',
'millisecond' => 'มิลลิวินาที',
'milliseconds' => 'มิลลิวินาที',
'current' => 'ปัจจุบัน',
'settings' => 'การตั้งค่า',
'search' => 'ค้นหา',
),
'menu' => array(
'config' => 'การกำหนดค่า',
'server' => 'เซิร์ฟเวอร์',
'server_log' => 'Log',
'server_status' => 'สถานะ',
'server_update' => 'อัปเดต',
'user' => 'ผู้ใช้',
'help' => 'ช่วยเหลือ',
),
'users' => array(
'user' => 'ผู้ใช้',
'name' => 'ชื่อ',
'user_name' => 'ชื่อผู้ใช้',
'password' => 'รหัสผ่าน',
'password_repeat' => 'รหัสผ่านอีกครั้ง',
'password_leave_blank' => 'ปล่อยว่างไว้เพื่อไม่ให้เปลี่ยนแปลง',
'level' => 'ระดับ',
'level_10' => 'ผู้ดูแลระบบ',
'level_20' => 'ผู้ใช้',
'level_30' => 'ไม่ระบุตัวตน',
'level_description' => '<b>ผู้ดูแลระบบ</b>มีสิทธิ์เข้าถึงเต็มรูปแบบ: พวกเขาสามารถจัดการเซิร์ฟเวอร์ ผู้ใช้ และแก้ไขการกำหนดค่าทั่วโลกได้ <br><b>ผู้ใช้</b>สามารถดูและเรียกใช้โปรแกรมอัปเดตสำหรับเซิร์ฟเวอร์ที่ได้รับมอบหมายให้เท่านั้น',
'mobile' => 'มือถือ',
'email' => 'อีเมล',
'pushover' => 'Pushover',
'pushover_description' => 'Pushover เป็นบริการที่ช่วยให้รับการแจ้งเตือนแบบเรียลไทม์ได้อย่างง่ายดาย ดูข้อมูลเพิ่มเติมได้ที่ <a href="https://pushover.net/" target="_blank">เว็บไซต์</a>',
'pushover_device_description' => 'ชื่ออุปกรณ์ที่จะส่งข้อความถึง ปล่อยว่างไว้หากต้องการส่งไปยังอุปกรณ์ทั้งหมด.',
'discord' => 'Discord',
'discord_label' => 'Discord',
'discord_description' => 'วาง <a href="https://discordjs.guide/popular-topics/webhooks.html" target="_blank">webhook</a> ของคุณไว้ที่นี่',
'telegram' => 'Telegram',
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> คือแอปแชทที่ทำให้การรับการแจ้งเตือนแบบเรียลไทม์เป็นเรื่องง่าย เยี่ยมชม <a href="http://docs.phpservermonitor.org/" target="_blank">เอกสาร</a> เพื่อดูข้อมูลเพิ่มเติมและคำแนะนำในการติดตั้ง',
'telegram_chat_id' => 'Telegram chat id',
'telegram_chat_id_description' => 'ข้อความจะถูกส่งไปยังห้องแชทที่เกี่ยวข้อง',
'telegram_get_chat_id' => 'คลิกที่นี่เพื่อรับ chat id ของคุณ',
'activate_telegram_description' => 'อนุญาตให้ส่งการแจ้งเตือนของ Telegram ไปยัง ID แชทที่ระบุ หากไม่ได้รับอนุญาต Telegram จะไม่อนุญาตให้เราส่งการแจ้งเตือนถึงคุณ',
),
);

View File

@ -470,7 +470,7 @@ class ConfigController extends AbstractController
$webhook = psm_build_webhook(); $webhook = psm_build_webhook();
$webhook->setUrl($user->webhook_url); $webhook->setUrl($user->webhook_url);
$webhook->setJson($user->webhook_json); $webhook->setJson($user->webhook_json);
$message = (psm_get_lang('config', 'test_message')); $message = ['#message' => (psm_get_lang('config', 'test_message'))];
$result = $webhook->sendWebhook($message); $result = $webhook->sendWebhook($message);
if ($result==1) { if ($result==1) {
$this->addMessage(psm_get_lang('config', 'webhook_sent'), 'success'); $this->addMessage(psm_get_lang('config', 'webhook_sent'), 'success');

View File

@ -84,7 +84,7 @@ class InstallController extends AbstractController
} else { } else {
$this->addMessage('PHP version: ' . $phpv, 'success'); $this->addMessage('PHP version: ' . $phpv, 'success');
} }
if (version_compare(PHP_RELEASE_VERSION, '7', '<')) { if (version_compare(PHP_MAJOR_VERSION, '7', '<')) {
$this->addMessage( $this->addMessage(
'PHP 5 reaches the end of life (January 1, 2019), please update to PHP 7. 'PHP 5 reaches the end of life (January 1, 2019), please update to PHP 7.
PHP supported versions can be found PHP supported versions can be found

View File

@ -140,6 +140,19 @@ class ServerController extends AbstractServerController
return $this->twig->render('module/server/server/list.tpl.html', $tpl_data); return $this->twig->render('module/server/server/list.tpl.html', $tpl_data);
} }
/**
* Set default monitoring dropdown selections to configured values.
*/
private static function setDefaultMonitoringNotificationsToConfiguredValues( array &$tpl_data ): void {
$tpl_data['edit_email_selected'] = psm_get_conf('email_status') ? 'yes' : 'no';
$tpl_data['edit_sms_selected'] = psm_get_conf('sms_status') ? 'yes' : 'no';
$tpl_data['edit_pushover_selected'] = psm_get_conf('pushover_status') ? 'yes' : 'no';
$tpl_data['edit_telegram_selected'] = psm_get_conf('telegram_status') ? 'yes' : 'no';
$tpl_data['edit_jabber_selected'] = psm_get_conf('jabber_status') ? 'yes' : 'no';
$tpl_data['edit_discord_selected'] = psm_get_conf('discord_status') ? 'yes' : 'no';
$tpl_data['edit_webhook_selected'] = psm_get_conf('webhook_status') ? 'yes' : 'no';
}
/** /**
* Prepare the template to show the update screen for a single server * Prepare the template to show the update screen for a single server
*/ */
@ -154,6 +167,8 @@ class ServerController extends AbstractServerController
$modal->setOKButtonLabel(psm_get_lang('system', 'delete')); $modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
$tpl_data = $this->getLabels(); $tpl_data = $this->getLabels();
self::setDefaultMonitoringNotificationsToConfiguredValues( $tpl_data );
$tpl_data['edit_server_id'] = $this->server_id; $tpl_data['edit_server_id'] = $this->server_id;
$tpl_data['url_save'] = psm_build_url(array( $tpl_data['url_save'] = psm_build_url(array(
'mod' => 'server', 'mod' => 'server',

View File

@ -93,6 +93,7 @@ class LoginController extends AbstractController
{ {
if (isset($_POST['user_name'])) { if (isset($_POST['user_name'])) {
$user = $this->getUser()->getUserByUsername($_POST['user_name']); $user = $this->getUser()->getUserByUsername($_POST['user_name']);
$this->addMessage(psm_get_lang('login', 'success_password_forgot'), 'success');
if (!empty($user)) { if (!empty($user)) {
$token = $this->getUser()->generatePasswordResetToken($user->user_id); $token = $this->getUser()->generatePasswordResetToken($user->user_id);
@ -103,10 +104,7 @@ class LoginController extends AbstractController
$token $token
); );
$this->addMessage(psm_get_lang('login', 'success_password_forgot'), 'success');
return $this->executeLogin(); return $this->executeLogin();
} else {
$this->addMessage(psm_get_lang('login', 'error_user_incorrect'), 'error');
} }
} }

View File

@ -207,7 +207,7 @@ class Installer
`key` varchar(255) NOT NULL, `key` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL, `value` varchar(255) NOT NULL,
PRIMARY KEY (`key`) PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;", ) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'users' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "users` ( PSM_DB_PREFIX . 'users' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "users` (
`user_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(64) NOT NULL COMMENT 'user''s name, unique', `user_name` varchar(64) NOT NULL COMMENT 'user''s name, unique',
@ -228,19 +228,19 @@ class Installer
`email` varchar(255) NOT NULL, `email` varchar(255) NOT NULL,
PRIMARY KEY (`user_id`), PRIMARY KEY (`user_id`),
UNIQUE KEY `unique_username` (`user_name`) UNIQUE KEY `unique_username` (`user_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;", ) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . PSM_DB_PREFIX .
'users_preferences' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "users_preferences` ( 'users_preferences' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "users_preferences` (
`user_id` int(11) unsigned NOT NULL, `user_id` int(11) unsigned NOT NULL,
`key` varchar(255) NOT NULL, `key` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL, `value` varchar(255) NOT NULL,
PRIMARY KEY (`user_id`, `key`) PRIMARY KEY (`user_id`, `key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;", ) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'users_servers' => "CREATE TABLE `" . PSM_DB_PREFIX . "users_servers` ( PSM_DB_PREFIX . 'users_servers' => "CREATE TABLE `" . PSM_DB_PREFIX . "users_servers` (
`user_id` INT( 11 ) UNSIGNED NOT NULL , `user_id` INT( 11 ) UNSIGNED NOT NULL ,
`server_id` INT( 11 ) UNSIGNED NOT NULL , `server_id` INT( 11 ) UNSIGNED NOT NULL ,
PRIMARY KEY ( `user_id` , `server_id` ) PRIMARY KEY ( `user_id` , `server_id` )
) ENGINE = MyISAM DEFAULT CHARSET=utf8;", ) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'log' => "CREATE TABLE `" . PSM_DB_PREFIX . "log` ( PSM_DB_PREFIX . 'log' => "CREATE TABLE `" . PSM_DB_PREFIX . "log` (
`log_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `log_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`server_id` int(11) unsigned NOT NULL, `server_id` int(11) unsigned NOT NULL,
@ -248,12 +248,12 @@ class Installer
`message` TEXT NOT NULL, `message` TEXT NOT NULL,
`datetime` timestamp NOT NULL default CURRENT_TIMESTAMP, `datetime` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`log_id`) PRIMARY KEY (`log_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;", ) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'log_users' => "CREATE TABLE `" . PSM_DB_PREFIX . "log_users` ( PSM_DB_PREFIX . 'log_users' => "CREATE TABLE `" . PSM_DB_PREFIX . "log_users` (
`log_id` int(11) UNSIGNED NOT NULL , `log_id` int(11) UNSIGNED NOT NULL ,
`user_id` int(11) UNSIGNED NOT NULL , `user_id` int(11) UNSIGNED NOT NULL ,
PRIMARY KEY (`log_id`, `user_id`) PRIMARY KEY (`log_id`, `user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;", ) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'servers' => "CREATE TABLE `" . PSM_DB_PREFIX . "servers` ( PSM_DB_PREFIX . 'servers' => "CREATE TABLE `" . PSM_DB_PREFIX . "servers` (
`server_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `server_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ip` varchar(500) NOT NULL, `ip` varchar(500) NOT NULL,
@ -294,7 +294,7 @@ class Installer
`last_error_output` TEXT, `last_error_output` TEXT,
`last_output` TEXT, `last_output` TEXT,
PRIMARY KEY (`server_id`) PRIMARY KEY (`server_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;", ) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'servers_uptime' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "servers_uptime` ( PSM_DB_PREFIX . 'servers_uptime' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "servers_uptime` (
`servers_uptime_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `servers_uptime_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`server_id` int(11) unsigned NOT NULL, `server_id` int(11) unsigned NOT NULL,
@ -303,7 +303,7 @@ class Installer
`latency` float(9,7) DEFAULT NULL, `latency` float(9,7) DEFAULT NULL,
PRIMARY KEY (`servers_uptime_id`), PRIMARY KEY (`servers_uptime_id`),
KEY `server_id` (`server_id`) KEY `server_id` (`server_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;", ) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'servers_history' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "servers_history` ( PSM_DB_PREFIX . 'servers_history' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "servers_history` (
`servers_history_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `servers_history_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`server_id` int(11) unsigned NOT NULL, `server_id` int(11) unsigned NOT NULL,
@ -315,7 +315,7 @@ class Installer
`checks_failed` int(11) unsigned NOT NULL, `checks_failed` int(11) unsigned NOT NULL,
PRIMARY KEY (`servers_history_id`), PRIMARY KEY (`servers_history_id`),
UNIQUE KEY `server_id_date` (`server_id`,`date`) UNIQUE KEY `server_id_date` (`server_id`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;", ) DEFAULT CHARSET=utf8;",
); );
foreach ($tables as $name => $sql) { foreach ($tables as $name => $sql) {
@ -468,7 +468,7 @@ class Installer
`latency` float(9,7) DEFAULT NULL, `latency` float(9,7) DEFAULT NULL,
PRIMARY KEY (`servers_uptime_id`), PRIMARY KEY (`servers_uptime_id`),
KEY `server_id` (`server_id`) KEY `server_id` (`server_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; ) DEFAULT CHARSET=utf8;";
$queries[] = "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "servers_history` ( $queries[] = "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "servers_history` (
`servers_history_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `servers_history_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
@ -481,7 +481,7 @@ class Installer
`checks_failed` int(11) unsigned NOT NULL, `checks_failed` int(11) unsigned NOT NULL,
PRIMARY KEY (`servers_history_id`), PRIMARY KEY (`servers_history_id`),
UNIQUE KEY `server_id_date` (`server_id`,`date`) UNIQUE KEY `server_id_date` (`server_id`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; ) DEFAULT CHARSET=utf8;";
$queries[] = "CREATE TABLE `" . PSM_DB_PREFIX . "users_servers` ( $queries[] = "CREATE TABLE `" . PSM_DB_PREFIX . "users_servers` (
`user_id` INT( 11 ) UNSIGNED NOT NULL , `user_id` INT( 11 ) UNSIGNED NOT NULL ,
@ -543,7 +543,7 @@ class Installer
`key` varchar(255) NOT NULL, `key` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL, `value` varchar(255) NOT NULL,
PRIMARY KEY (`user_id`, `key`) PRIMARY KEY (`user_id`, `key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;"; ) DEFAULT CHARSET=utf8;";
$this->execSQL($queries); $this->execSQL($queries);
} }
@ -572,7 +572,7 @@ class Installer
`log_id` int(11) UNSIGNED NOT NULL , `log_id` int(11) UNSIGNED NOT NULL ,
`user_id` int(11) UNSIGNED NOT NULL , `user_id` int(11) UNSIGNED NOT NULL ,
PRIMARY KEY (`log_id`, `user_id`) PRIMARY KEY (`log_id`, `user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;"); ) DEFAULT CHARSET=utf8;");
// Migrate the data // Migrate the data
$logs = $this->db->select(PSM_DB_PREFIX . 'log', null, array('log_id', 'user_id')); $logs = $this->db->select(PSM_DB_PREFIX . 'log', null, array('log_id', 'user_id'));

View File

@ -424,10 +424,12 @@ class StatusNotifier
psm_parse_msg($this->status_new, 'email_subject', $this->server); psm_parse_msg($this->status_new, 'email_subject', $this->server);
$mail->Priority = 1; $mail->Priority = 1;
$publicUrl = PSM_BASE_URL.'/public.php';
$body = key_exists('message', $combi) ? $body = key_exists('message', $combi) ?
$combi['message'] : $combi['message'] :
psm_parse_msg($this->status_new, 'email_body', $this->server); psm_parse_msg($this->status_new, 'email_body', $this->server);
if ((bool)psm_get_conf('email_add_url')) $body .= PHP_EOL.PHP_EOL.'<a href="'.PSM_BASE_URL.'">'.PSM_BASE_URL.'</a>'; if ((bool)psm_get_conf('email_add_url')) $body .= PHP_EOL.PHP_EOL.'<a href="'.$publicUrl.'">'.$publicUrl.'</a>';
$mail->Body = $body; $mail->Body = $body;
$mail->AltBody = str_replace('<br/>', "\n", $body); $mail->AltBody = str_replace('<br/>', "\n", $body);
@ -609,6 +611,7 @@ class StatusNotifier
} }
$webhook = psm_build_webhook(); $webhook = psm_build_webhook();
$subject = key_exists('subject', $combi) ? $combi['subject'] : psm_parse_msg($this->status_new, 'email_subject', $this->server);
$message = key_exists('message', $combi) ? $message = key_exists('message', $combi) ?
$combi['message'] : $combi['message'] :
@ -638,7 +641,8 @@ class StatusNotifier
'#server_label' => $this->server['label'], '#server_label' => $this->server['label'],
'#server_error' => $this->server['error'], '#server_error' => $this->server['error'],
'#server_last_offline_duration' => $this->status_new ? $this->server['last_offline_duration'] : '', '#server_last_offline_duration' => $this->status_new ? $this->server['last_offline_duration'] : '',
'#status' => $this->status_new ? 'online' : 'offline' '#status' => $this->status_new ? 'online' : 'offline',
'#subject' => $subject
]); ]);
} }
} }

View File

@ -16,7 +16,7 @@
<meta name="msapplication-TileImage" content="phpservermon.png"> <meta name="msapplication-TileImage" content="phpservermon.png">
<meta name="msapplication-TileColor" content="#424242"> <meta name="msapplication-TileColor" content="#424242">
<!-- TODO add base url --> <!-- TODO add base url -->
<!-- <link rel="canonical" href=""> --> <!-- <link rel="canonical" href=""> -->
<meta name="theme-color" content="#424242"> <meta name="theme-color" content="#424242">
<link rel="icon" type="image/x-icon" href="favicon.ico" /> <link rel="icon" type="image/x-icon" href="favicon.ico" />
<link rel="icon" type="image/png" href="favicon.png" /> <link rel="icon" type="image/png" href="favicon.png" />
@ -24,8 +24,9 @@
<link href="src/templates/default/static/css/bootstrap.min.css" rel="stylesheet"> <link href="src/templates/default/static/css/bootstrap.min.css" rel="stylesheet">
<link href="src/templates/default/static/plugin/bootstrap-select/dist/css/bootstrap-select.min.css" rel="stylesheet"> <link href="src/templates/default/static/plugin/bootstrap-select/dist/css/bootstrap-select.min.css" rel="stylesheet">
<link href="src/templates/default/static/css/style.min.css" rel="stylesheet"> <link href="src/templates/default/static/css/style.min.css" rel="stylesheet">
<link href="src/templates/default/static/css/custom.css" rel="stylesheet">
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--> <![endif]-->
</head> </head>

View File

@ -0,0 +1,4 @@
/*# Used to override main styles for custom layout adjustments and colors. */
.container-fluid {
max-width: 100%;
}