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
.settings/
/.vscode
/.vs

5
composer.lock generated
View File

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

View File

@ -41,7 +41,7 @@ namespace {
// 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)
$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;
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
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
- name: ensure percona-server-57 is installed

View File

@ -1150,7 +1150,7 @@ namespace {
* Send Webhook
*
* @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 = "";
$success = 1;
$jsonMessage = $this->json;
$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_setopt($curl, CURLOPT_POST, 1);

View File

@ -21,9 +21,10 @@
* @package phpservermon
* @author Simon Berka <berka@berkasimon.com>
* @author Pavel Laupe Dvorak <pavel@pavel-dvorak.cz>
* @author OUBRECHT.com
* @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@
* @version Release: v3.5.2
* @link http://www.phpservermonitor.org/
**/
@ -68,13 +69,27 @@ $sm_lang = array(
'a_minute_ago' => 'cca před minutou',
'seconds_ago' => 'před %d vteřinami',
'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(
'config' => 'Konfigurace',
'server' => 'Servery',
'server_log' => 'Log',
'server_status' => 'Status',
'server_status' => 'Stav',
'server_update' => 'Aktualizace',
'user' => 'Uživatelé',
'help' => 'Nápověda',
@ -127,7 +142,7 @@ $sm_lang = array(
'sms' => 'SMS',
'pushover' => 'Pushover',
'no_logs' => 'Žádné záznamy',
'clear' => 'Jasný protokol',
'clear' => 'Smazat log',
'delete_title' => 'Odstranit protokol',
'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é.',
'fieldset_monitoring' => 'Monitoring',
'fieldset_permissions' => 'Oprávnění',
'permissions' => 'Servery budou viditelné pro tyto uživatele',
'port' => 'Port',
'custom_port' => 'Uživatelský Port',
'popular_ports' => 'Populární Porty',
@ -160,13 +176,22 @@ $sm_lang = array(
'last_check' => 'Poslední kontrola',
'last_online' => 'Naposledy online',
'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',
'no_monitoring' => 'Žádné monitorované služby',
'email' => 'E-mail',
'send_email' => 'Odeslat e-mail',
'sms' => 'SMS',
'send_sms' => 'Odeslat SMS',
'send_sms' => 'Odeslat SMS upozornění',
'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é',
'delete_title' => 'Smazat server',
'delete_message' => 'Opravdu si přejete smazat \'%1\'?',
@ -205,6 +230,10 @@ $sm_lang = array(
'config' => array(
'general' => 'Obecné',
'language' => 'Jazyk',
'proxy' => 'Zapnout proxy',
'proxy_url' => 'Proxy URL',
'proxy_user' => 'Proxy uživatelské jméno',
'proxy_password' => 'Proxy heslo',
'show_update' => 'Kontrolovat aktualizace?',
'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
@ -243,6 +272,11 @@ $sm_lang = array(
'alert_type_status' => 'Změna stavu',
'alert_type_offline' => 'Offline',
'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_description' => 'Pokud je Log nastaven na hodnotu TRUE, systém do něj zapíše veškerá
provedená upozornění.',
@ -258,9 +292,11 @@ $sm_lang = array(
'settings_pushover' => 'Nastavení Pushover',
'settings_notification' => 'Nastavení upozornění',
'settings_log' => 'Nastavení logu',
'settings_proxy' => 'Proxy nastavení',
'auto_refresh' => 'Automaticky obnovit',
'auto_refresh_description' => 'Automaticky obnovit stránku Servery.<br><span class="small">Čas v sekundách,
0 pro vypnutí automatického obnovení.</span>',
'seconds' => 'sekund',
'test' => 'Test',
'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.',
@ -289,16 +325,14 @@ $sm_lang = array(
'notifications' => array(
'off_sms' => 'Server \'%LABEL%\' je offline: ip=%IP%, port=%PORT%. Chyba=%ERROR%',
'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:
%PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%',
'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%',
'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:
%PORT%<br>Chyba: %ERROR%<br>Datum: %DATE%',
'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%',
'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_email_subject' => 'DŮLEŽITÉ: Server \'%LABEL%\' je online',
'on_email_body' => 'Server \'%LABEL%\' je opět online, it was down for
%LAST_OFFLINE_DURATION%:<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Datum:
%DATE%',
'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%',
'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%',
'on_pushover_title' => 'Server \'%LABEL%\' je online',
'on_pushover_message' => 'Server \'%LABEL%\' je znovu online, it was down for
%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.',
'fieldset_monitoring' => 'Monitoring',
'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',
'custom_port' => 'Custom Port',
'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_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_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_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_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_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_message' => 'Failed to connect to the following server:<br><br>Server: %LABEL%<br>IP:
%IP%<br>Port: %PORT%<br>Error: %ERROR%<br>Date: %DATE%',

View File

@ -43,19 +43,20 @@ $sm_lang = array(
'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">http://www.phpservermonitor.org</a>.',
'add_new' => 'Добавить',
'update_available' => 'Новая версия ({version}) доступна по адресу <a href="https://github.com/phpservermon/phpservermon/releases/latest" target="_blank" rel="noopener">http://www.phpservermonitor.org</a>.',
'back_to_top' => 'Наверх',
'go_back' => 'Вернуться',
'ok' => 'OK',
'ok' => 'Норма (не уведомлять)',
'bad' => 'Не норма (уведомлять)',
'cancel' => 'Отмена',
'none' => 'Не указано',
'activate' => 'Активировать',
'short_day_format' => '%e %B',
'long_day_format' => '%e %B %Y',
@ -80,6 +81,11 @@ $sm_lang = array(
'minutes' => 'минут',
'second' => 'секунда',
'seconds' => 'секунд',
'millisecond' => 'мс',
'milliseconds' => 'мс',
'current' => 'current',
'settings' => 'Настройки',
'search' => 'Поиск',
),
'menu' => array(
'config' => 'Параметры',
@ -100,50 +106,39 @@ $sm_lang = array(
'level' => 'Уровень',
'level_10' => 'Администратор',
'level_20' => 'Пользователь',
'level_description' => '<b>Администраторы</b> имеют полный доступ: они
могут управлять серверами, пользователями и
изменять общую
конфигурацию.<br><b>Пользователи</b> могут только
просматривать и запускать проверку для
серверов, которые были к ним прикреплены.',
'level_30' => 'Анонимный',
'level_description' => '<b>Администраторы</b> имеют полный доступ: они могут управлять серверами, пользователями и изменять общую конфигурацию.<br><b>Пользователи</b> могут только просматривать и запускать проверку для серверов, которые были к ним прикреплены.',
'mobile' => 'Телефон',
'email' => 'E-mail',
'pushover' => 'Pushover',
'pushover_description' => 'Pushover - это сервис, который позволяет легко
получать уведомления в режиме реального
времени. Больше информации на <a
href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
'pushover_description' => 'Pushover - это сервис, который позволяет легко получать уведомления в режиме реального времени. Больше информации на <a href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
'pushover_key' => '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_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> удобный
мессенджер для получения уведомлений в
реальном времени. Посетите <a
href="http://docs.phpservermonitor.org/" target="_blank">раздел
документации</a> для получения доп. информации
и инструкций по установке.',
'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_chat_id_description' => 'Сообщения будут отправляться на указанный идентификатор чата.',
'telegram_get_chat_id' => 'Нажмите здесь чтобы получить ваш chat id',
'activate_telegram' => 'Активировать уведомления в Telegram',
'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_bot_username_error_token' => '401 - Unauthorized. Пожалуйста укажите
действительный API токен..',
'telegram_bot_error' => 'Произошла ошибка при активации уведомления
Telegram: %s',
'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_bot_username_error_token' => '401 - Unauthorized. Пожалуйста укажите действительный API токен.',
'telegram_bot_error' => 'Произошла ошибка при активации уведомления Telegram: %s',
'jabber' => 'Jabber',
'jabber_label' => 'Jabber',
'jabber_description' => 'Ваш Jabber аккаунт',
'webhook' => 'Вебхук',
'webhook_description' => 'Отправить JSON вебхук на указанный URL.',
'webhook_url' => 'URL вебхука',
'webhook_url_description' => 'Публичный URL вебхука, должен начинаться с https://',
'webhook_json' => 'JSON сообщение',
'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_message' => 'Вы уверены что хотите удалить пользователя \'%1\'?',
'deleted' => 'Пользователь удален.',
@ -152,26 +147,28 @@ $sm_lang = array(
'profile' => 'Профиль',
'profile_updated' => 'Ваш профиль был обновлен.',
'error_user_name_bad_length' => 'Логин должен содержать от 2 до 64 знаков.',
'error_user_name_invalid' => 'Имя пользователя может содержать только
латинские символы (a-z, A-Z), цифры (0-9), точки (.)
и подчеркивание (_).',
'error_user_name_invalid' => 'Имя пользователя может содержать только латинские символы (a-z, A-Z), цифры (0-9), точки (.) и подчеркивание (_).',
'error_user_name_exists' => 'Данный логин уже существует.',
'error_user_email_bad_length' => 'E-mail может содержать от 5 до 255 знаков.',
'error_user_email_invalid' => 'E-mail указан неверно.',
'error_user_level_invalid' => 'Данный уровень пользователя
недействителен.',
'error_user_level_invalid' => 'Данный уровень пользователя недействителен.',
'error_user_no_match' => 'Данного пользователя нет в базе данных.',
'error_user_password_invalid' => 'Пароль указан неверно.',
'error_user_password_no_match' => 'Введенные пароли не совпадают.',
'error_user_admin_cant_be_deleted' => 'Вы не можете удалить последнего администратора.',
'error_user_cant_be_anonymous' => 'Только пользователь \'__public__\' может иметь уровень Анонимный.'
),
'log' => array(
'title' => 'Запись',
'title' => 'Логи',
'type' => 'Тип',
'status' => 'Статус',
'email' => 'E-mail',
'sms' => 'SMS',
'discord' => 'Discord',
'pushover' => 'Pushover',
'webhook' => 'Webhook',
'telegram' => 'Telegram',
'jabber' => 'Jabber',
'no_logs' => 'Записей нет',
'clear' => 'Очистить логи',
'delete_title' => 'Удаление логов',
@ -187,30 +184,33 @@ $sm_lang = array(
'authentication_settings' => 'Настройки аутентификации',
'optional' => 'необязательно',
'website_username' => 'Имя пользователя',
'website_username_description' => 'Имя пользователя для доступа к сайту.
(Поддерживается только Apache authentication.)',
'website_username_description' => 'Имя пользователя для доступа к сайту. (Поддерживается только Apache authentication.)',
'website_password' => 'Пароль',
'website_password_description' => 'пароль для доступа к сайту. Пароль будет
храниться в зашифрованном виде.',
'website_password_description' => 'пароль для доступа к сайту. Пароль будет храниться в зашифрованном виде.',
'fieldset_monitoring' => 'Мониторинг',
'fieldset_permissions' => 'Права доступа',
'permissions' => 'Сервер будет доступен для просмотра указанным пользователям',
'port' => 'Порт',
'custom_port' => 'Указать порт',
'popular_ports' => 'Популярные порты',
'request_method' => 'Метод запроса',
'custom_request_method' => 'Пользовательский метод запроса',
'popular_request_methods' => 'Популярные методы запроса',
'post_field' => 'Параметры запроса',
'post_field_description' => 'Данные, которые будут отправлены, используя тип запроса, выбранный выше.',
'please_select' => 'Выберите',
'type' => 'Тип',
'type_website' => 'Веб-сайт',
'type_service' => 'Сервис',
'type_ping' => 'Пинг',
'pattern' => 'Искать текст/шаблон',
'pattern_description' => 'Если текст по шаблону не найден на сайте,
сервер будет помечен как Оффлайн. Регулярные
выражения допустимы.',
'pattern_description' => 'Если текст по шаблону не найден на сайте, сервер будет помечен как Оффлайн. Регулярные выражения допустимы.',
'pattern_online' => 'Шаблон указывает что вебсайт:',
'pattern_online_description' => 'Online: Если этот шаблон найден на веб-сайте,
сервер будет отмечен Онлайн. Offline: Если
этот шаблон не найден на веб-сайте, сервер
будет отмечен как Оффлайн.',
'pattern_online_description' => 'Online: Если этот шаблон найден на веб-сайте, сервер будет отмечен Онлайн. Offline: Если этот шаблон не найден на веб-сайте, сервер будет отмечен как Оффлайн.',
'redirect_check' => 'Начичите редиректа на другой домен',
'redirect_check_description' => 'Редирект на другой домен обычно является плохим знаком.',
'allow_http_status' => 'Разрешенные коды ответа HTTP',
'allow_http_status_description' => 'Сайт будет считаться айт как онлайн. Сайт с HTTP кодами ответа меньше 400 считается онлайн по умолчанию. Разделять знаком |.',
'header_name' => 'Название заголовка',
'header_value' => 'Значение заголовка',
'header_name_description' => 'с учетом регистра.',
@ -220,14 +220,24 @@ $sm_lang = array(
'last_offline' => 'Был оффлайн',
'monitoring' => 'Мониторинг',
'no_monitoring' => 'Нет мониторинга',
'last_output' => 'Последний положительный вывод',
'last_error' => 'Последняя ошибка',
'last_error_output' => 'Последний вывод с ошибкой',
'output' => 'Результаты проверки',
'email' => 'E-mail',
'send_email' => 'Отправить E-mail',
'send_email' => 'Отправлять E-mail',
'sms' => 'CMC',
'send_sms' => 'Отправить CMC',
'send_sms' => 'Отправлять CMC',
'discord' => 'Discord',
'send_discord' => 'Отправлять уведомления в Discord',
'webhook' => 'Вебхук',
'send_webhook' => 'Отправлять уведомления на вебхук',
'pushover' => 'Pushover',
'send_pushover' => 'Отправлять уведомления в Pushover',
'telegram' => 'Telegram',
'send_telegram' => 'Отправлять уведомления в Telegram',
'jabber' => 'Jabber',
'send_jabber' => 'Отправлять Jabber уведомления',
'users' => 'Пользователи',
'delete_title' => 'Удалить сервер',
'delete_message' => 'Вы уверены что хотите удалить сервер \'%1\'?',
@ -247,9 +257,11 @@ $sm_lang = array(
'day' => 'День',
'hour' => 'Час',
'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_history' => 'История',
'chart_day_format' => '%d.%m.%Y',
@ -258,32 +270,33 @@ $sm_lang = array(
'chart_short_time_format' => '%H:%M',
'warning_notifications_disabled_sms' => 'SMS уведомления отключены.',
'warning_notifications_disabled_email' => 'E-mail уведомления отключены.',
'warning_notifications_disabled_discord' => 'Уведомления в Discord отключены.',
'warning_notifications_disabled_webhook' => 'Уведомления на вебхук отключены',
'warning_notifications_disabled_pushover' => 'Pushover уведомления отключены.',
'warning_notifications_disabled_telegram' => 'Уведомления в Telegram отключены.',
'warning_notifications_disabled_jabber' => 'Jabber уведомления отключены.',
'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_service' => 'IP-адрес недействителен.',
'error_server_ip_bad_website' => 'Ссылка веб-страницы недействительна.',
'error_server_type_invalid' => 'Выбраный тип сервера недействителен.',
'error_server_warning_threshold_invalid' => 'Порог предупреждения должен иметь
значение больше 0',
'error_server_warning_threshold_invalid' => 'Порог предупреждения должен иметь значение больше 0',
'error_server_ssl_cert_expiry_days' => 'Оставшиеся дни срока действия сертификата SSL должны быть целым числом, большим или равным 0.',
),
'config' => array(
'general' => 'Основные',
'site_title' => 'Заголовок сайта',
'language' => 'Язык',
'show_update' => 'Проверять обновления?',
'password_encrypt_key' => 'Ключ шифрования пароля',
'password_encrypt_key_note' => 'Этот ключ используется для шифрования
паролей, которые указаны на серверах (для
доступа к веб-сайтам). Если ключ изменится,
сохраненный пароль будет недействителен!',
'password_encrypt_key_note' => 'Этот ключ используется для шифрования паролей, которые указаны на серверах (для доступа к веб-сайтам). Если ключ изменится, сохраненный пароль будет недействителен!',
'proxy' => 'Использовать прокси',
'proxy_url' => 'Адрес прокси',
'proxy_user' => 'Имя пользователя прокси',
'proxy_password' => 'Пароль прокси',
'email_status' => 'Разрешить отправку email',
'email_add_url' => 'Добавлять ссылку на мониторинг в текст сообщения',
'email_from_email' => 'Отправлять от адреса',
'email_from_name' => 'Отправлять от имени',
'email_smtp' => 'Использовать SMTP',
@ -299,87 +312,115 @@ $sm_lang = array(
'sms_gateway_username' => 'Пользователь',
'sms_gateway_password' => 'Пароль',
'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_description' => 'Pushover - это сервис, который позволяет легко
получать уведомления в режиме реального
времени. Больше информации на <a
href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
'pushover_description' => 'Pushover - это сервис, который позволяет легко получать уведомления в режиме реального времени. Больше информации на <a href="https://pushover.net/" target="_blank">их веб-сайте</a>.',
'pushover_clone_app' => 'Нажмите здесь чтобы создать ваш Pushover app',
'pushover_api_token' => 'Pushover App API Token',
'pushover_api_token_description' => 'Прежде чем вы сможете начать
пользоваться Pushover, вам необходимо
зарегистрировать <a href="%1$s" target="_blank"
rel="noopener">"App"</a> на их веб-сайте и ввести "App
API Token" сюда.',
'pushover_api_token_description' => 'Прежде чем вы сможете начать пользоваться Pushover, вам необходимо зарегистрировать <a href="%1$s" target="_blank" rel="noopener">"App"</a> на их веб-сайте и ввести "App API Token" сюда.',
'telegram_status' => 'Разрешить отправку уведомлений в Telegram',
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> удобный
мессенджер для получения уведомлений в
реальном времени. Посетите <a
href="http://docs.phpservermonitor.org/" target="_blank">раздел
документации</a> для получения доп. информации
и инструкций по установке.',
'telegram_add_url' => 'Добавлять ссылку на мониторинг в текст сообщения',
'telegram_description' => '<a href="https://telegram.org/" target="_blank">Telegram</a> удобный мессенджер для получения уведомлений в реальном времени. Посетите <a href="http://docs.phpservermonitor.org/" target="_blank">раздел документации</a> для получения доп. информации и инструкций по установке.',
'telegram_api_token' => 'Telegram API Token',
'telegram_api_token_description' => 'Прежде чем вы сможете начать
пользоваться Telegram, вам необходимо
получить API Token. Посетите <a
href="http://docs.phpservermonitor.org/" target="_blank">раздел
документации</a> для получения помощи.',
'telegram_api_token_description' => 'Прежде чем вы сможете начать пользоваться Telegram, вам необходимо получить API Token. Посетите <a href="http://docs.phpservermonitor.org/" target="_blank">раздел документации</a> для получения помощи.',
'jabber_status' => 'Разрешить отправку Jabber (XMPP) сообщений',
'jabber_description' => 'Посетите <a href="http://docs.phpservermonitor.org/">страницу документации</a> для получения подробностей.',
'jabber_host' => 'Хост',
'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_description' => '<b>Изменение статуса:</b> Вы получите
уведомление об изменение статуса. Для
онлайн -> оффлайн или офлайн -> онлайн.<br><br
/><b>Оффлайн:</b> Вы получите уведомление
только когда сервер перейдет в статус
оффлайн. Например, задание Cron выставлено на
каждые 15 минут. Сервер перейдет в статус
оффлайн в 1:00 и не измениться до 6:00. Вы
получите 1 уведомление только в
1:00<br><br><b>Всегда:</b> Вы будете получать
уведомление при каждом запуске скрипта
проверки, как только сервер перейдет в
статус оффлайн, даже если сервер находится в
этом статусе несколько часов.',
'alert_type_description' => '<b>Изменение статуса:</b> Вы получите уведомление об изменение статуса. Для онлайн -> оффлайн или офлайн -> онлайн.<br><br /><b>Оффлайн:</b> Вы получите уведомление только когда сервер перейдет в статус оффлайн. Например, задание Cron выставлено на каждые 15 минут. Сервер перейдет в статус оффлайн в 1:00 и не измениться до 6:00. Вы получите 1 уведомление только в 1:00<br><br><b>Всегда:</b> Вы будете получать уведомление при каждом запуске скрипта проверки, как только сервер перейдет в статус оффлайн, даже если сервер находится в этом статусе несколько часов.',
'alert_type_status' => 'Изменение статуса',
'alert_type_offline' => 'Оффлайн',
'alert_type_always' => 'Всегда',
'alert_proxy' => 'Даже если включено, прокси никогда не
используется для сервисов',
'combine_notifications' => 'Комбинировать уведомления',
'combine_notifications_description' => 'Уменьшит количество уведомлений, объединяя их в одно уведомление. (Это не влияет на SMS-уведомления.)',
'alert_proxy' => 'Даже если включено, прокси никогда не используется для сервисов',
'alert_proxy_url' => 'Формат: адрес:порт',
'log_status' => 'Лог статусов',
'log_status_description' => 'Если лог статусов включен, монитор будет
логировать все события выбранные в типе
уведомлений.',
'log_email' => 'Логировать уведомления отправленые по E-mail',
'log_sms' => 'Логировать уведомления отправленые по SMS',
'log_status_description' => 'Если лог статусов включен, монитор будет логировать все события выбранные в типе уведомлений.',
'log_email' => 'Логировать E-mail уведомления',
'log_sms' => 'Логировать SMS уведомления',
'log_discord' => 'Логировать Discord уведомления',
'log_pushover' => 'Логировать Pushover уведомления',
'log_webhook' => 'Логировать вебхук уведомления',
'log_telegram' => 'Логировать Telegram уведомления',
'log_jabber' => 'Логировать Jabber уведомления',
'updated' => 'Настройки успешно сохранены.',
'tab_email' => 'Email',
'tab_sms' => 'SMS',
'tab_discord' => 'Discord',
'tab_pushover' => 'Pushover',
'tab_webhook' => 'Webhook',
'tab_telegram' => 'Telegram',
'tab_jabber' => 'Jabber',
'tab_auth' => 'Аутентификация',
'settings_email' => 'Настройка E-mail',
'settings_sms' => 'Настройка SMS',
'settings_discord' => 'Настройка Discord',
'settings_pushover' => 'Настройка Pushover',
'settings_webhook' => 'Настройка вебхука',
'settings_telegram' => 'Настройка Telegram',
'settings_jabber' => 'Настройка Jabber',
'settings_notification' => 'Настройка уведомлений',
'settings_log' => 'Настройка логирования',
'settings_proxy' => 'Настройка прокси',
'settings_dirauth' => 'Настройка LDAP',
'auto_refresh' => 'Авто-обновление',
'auto_refresh_description' => 'Авто-обновление страницы статуса
серверов.<br><span class="small">Время в секундах.
Если указано 0, то страница не будет
обновляться.</span>',
'auto_refresh_description' => 'Авто-обновление страницы статуса серверов.<br><span class="small">Время в секундах. Если указано 0, то страница не будет обновляться.</span>',
'test' => 'Проверка',
'test_email' => 'Сообщение будет отправлено на адрес указаный в
профиле пользователя.',
'test_sms' => 'SMS будет отправлено на номер телефона указаный в
профиле пользователя.',
'test_pushover' => 'Pushover уведомление будет отправленно на
устройство указанное в профиле пользователя.',
'test_telegram' => 'Уведомление Telegram будет отправлено на
идентификатор чата, указанный в профиле
пользователя.',
'test_email' => 'Сообщение будет отправлено на адрес указаный в профиле пользователя.',
'test_sms' => 'SMS будет отправлено на номер телефона, указаный в профиле пользователя.',
'test_discord' => 'Уведомление Discord будет отправлено на вебхук, указанный в профиле пользователя.',
'test_pushover' => 'Pushover уведомление будет отправленно на устройство, указанное в профиле пользователя.',
'test_webhook' => 'Уведомление вебхука будет отправлено на URL, указанный в профиле пользователя',
'test_telegram' => 'Уведомление Telegram будет отправлено на идентификатор чата, указанный в профиле пользователя.',
'test_jabber' => 'Уведомление будет отправлено на учетную запись Jabber, указанную в профиле пользователя.',
'send' => 'Отправить',
'test_subject' => 'Проверка',
'test_message' => 'Тестовое сообщение',
@ -387,57 +428,75 @@ $sm_lang = array(
'email_error' => 'Ошибка отправки email',
'sms_sent' => 'SMS отправлено',
'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_error' => 'Произошла ошибка во время отправки Pushover
уведомления: %s',
'pushover_error_noapp' => 'Не удалось отправить тестовое уведомление:
Pushover "App API token" не найден в основных
настройках.',
'pushover_error_nokey' => 'Не удалось отправить тестовое уведомление:
Pushover ключ не найден в вашем профиле.',
'pushover_error' => 'Произошла ошибка во время отправки Pushover уведомления: %s',
'pushover_error_noapp' => 'Не удалось отправить тестовое уведомление: Pushover "App API token" не найден в основных настройках.',
'pushover_error_nokey' => 'Не удалось отправить тестовое уведомление: Pushover ключ не найден в вашем профиле.',
'telegram_sent' => 'Уведомление в Telegram отправлено',
'telegram_error' => 'Произошла ошибка при отправке уведомления в
Telegram: %s',
'telegram_error_notoken' => 'Не удалось отправить тестовое уведомление:
Telegram API token не найден в основных настройках.',
'telegram_error_noid' => 'Не удалось отправить тестовое уведомление:
идентификатор чата не найден в вашем профиле.',
'telegram_error' => 'Произошла ошибка при отправке уведомления в Telegram: %s',
'telegram_error_notoken' => 'Не удалось отправить тестовое уведомление: Telegram API token не найден в основных настройках.',
'telegram_error_noid' => 'Не удалось отправить тестовое уведомление: идентификатор чата не найден в вашем профиле.',
'jabber_sent' => 'Уведомление Jabber отправлено',
'jabber_error' => 'Произошла ошибка при отправке Jabber уведомления: %s',
'jabber_error_noconfig' => 'Не удалось отправить тестовое уведомление: аккаунт Jabber не найден в основных настройках',
'jabber_error_noaccount' => 'Не удалось отправить тестовое уведомление: аккаунт Jabber не найден в вашем профиле.',
'log_retention_period' => 'Период хранения логов',
'log_retention_period_description' => 'Количество дней хранения логов
уведомлений и архива аптайма серверов.
Введите 0 для выключения очистки логов.',
'log_retention_period_description' => 'Количество дней хранения логов уведомлений и архива аптайма серверов. Введите 0 для выключения очистки логов.',
'log_retention_days' => 'дней',
'user_agent' => 'User Agent',
'user_agent_key_note' => 'Пользовательский user agent, используемый мониторингом при взаимодействии с внешними службами.',
),
'notifications' => array(
'off_sms' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН: IP=%IP%, Порт=%PORT%.
Ошибка=%ERROR%',
'off_sms' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН: IP=%IP%, Порт=%PORT%. Ошибка=%ERROR%',
'off_email_subject' => 'ВАЖНО: сервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
'off_email_body' => 'Невозможно подключиться к следующему
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
%PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
'off_pushover_title' => 'Cервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
'off_pushover_message' => 'Невозможно подключиться к следующему
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
%PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
'off_telegram_message' => 'Невозможно подключиться к следующему
серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
%PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
'on_sms' => 'Сервер \'%LABEL%\' снова ДОСТУПЕН: IP=%IP%, Порт=%PORT%. Был
недоступен: %LAST_OFFLINE_DURATION%',
'on_email_subject' => 'ВАЖНО: Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
'on_email_body' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен:
%LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт:
%PORT%<br>Дата: %DATE%',
'off_email_body' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
'off_discord_message' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
'off_webhook_title' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
'off_webhook_message' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP:
%IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
'off_pushover_title' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН',
'off_pushover_message' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
'off_telegram_message' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
'off_jabber_message' => 'Невозможно подключиться к следующему серверу:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Ошибка: %ERROR%<br>Дата: %DATE%',
'on_sms' => 'Сервер \'%LABEL%\' снова ДОСТУПЕН: IP=%IP%, Порт=%PORT%. Был недоступен: %LAST_OFFLINE_DURATION%',
'on_email_subject' => 'ВАЖНО: Сервер \'%LABEL%\' снова ДОСТУПЕН',
'on_email_body' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'on_discord_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'on_webhook_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
'on_webhook_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%:<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'on_pushover_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН',
'on_pushover_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был
недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP:
%IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'on_telegram_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был
недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP:
%IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'on_pushover_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'on_telegram_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'on_jabber_message' => 'Сервер \'%LABEL%\' снова доступен.<br>Был недоступен: %LAST_OFFLINE_DURATION%<br><br>Сервер: %LABEL%<br>IP: %IP%<br>Порт: %PORT%<br>Дата: %DATE%',
'combi_off_email_message' => '<ul><li>Сервер: %LABEL%</li><li>IP: %IP%</li><li>Порт: %PORT%</li><li>Ошибка: %ERROR%</li><li>Дата: %DATE%</li></ul>',
'combi_off_discord_message' => '- Сервер: %LABEL%<br>- IP: %IP%<br>- Порт: %PORT%<br>- Ошибка: %ERROR%<br>- Дата: %DATE%<br><br>',
'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(
'welcome_usermenu' => 'Здравствуйте, %user_name%',
@ -454,17 +513,13 @@ $sm_lang = array(
'password_forgot' => 'Забыли пароль?',
'password_reset' => 'Сбросить пароль',
'password_reset_email_subject' => 'Сброс пароля для PHP Server Monitor',
'password_reset_email_body' => 'Пожалуйста, используйте следующую ссылку
для сброса пароля. Ссылка действительна 1
час.<br><br>%link%',
'password_reset_email_body' => 'Пожалуйста, используйте следующую ссылку для сброса пароля. Ссылка действительна 1 час.<br><br>%link%',
'error_user_incorrect' => 'Пользователь с указаными данными не найден.',
'error_login_incorrect' => 'Информация указана неверно.',
'error_login_passwords_nomatch' => 'Пароль указан неверно.',
'error_reset_invalid_link' => 'Ссылка для сброса пароля недействительна.',
'success_password_forgot' => 'Вам был отправлен email, с инструкциями по
сбросу пароля.',
'success_password_reset' => 'Ваш пароль был сброшен. Пожалуйста
авторизуйтесь.',
'success_password_forgot' => 'Вам был отправлен email, с инструкциями по сбросу пароля.',
'success_password_reset' => 'Ваш пароль был сброшен. Пожалуйста авторизуйтесь.',
),
'error' => array(
'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->setUrl($user->webhook_url);
$webhook->setJson($user->webhook_json);
$message = (psm_get_lang('config', 'test_message'));
$message = ['#message' => (psm_get_lang('config', 'test_message'))];
$result = $webhook->sendWebhook($message);
if ($result==1) {
$this->addMessage(psm_get_lang('config', 'webhook_sent'), 'success');

View File

@ -84,7 +84,7 @@ class InstallController extends AbstractController
} else {
$this->addMessage('PHP version: ' . $phpv, 'success');
}
if (version_compare(PHP_RELEASE_VERSION, '7', '<')) {
if (version_compare(PHP_MAJOR_VERSION, '7', '<')) {
$this->addMessage(
'PHP 5 reaches the end of life (January 1, 2019), please update to PHP 7.
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);
}
/**
* 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
*/
@ -154,6 +167,8 @@ class ServerController extends AbstractServerController
$modal->setOKButtonLabel(psm_get_lang('system', 'delete'));
$tpl_data = $this->getLabels();
self::setDefaultMonitoringNotificationsToConfiguredValues( $tpl_data );
$tpl_data['edit_server_id'] = $this->server_id;
$tpl_data['url_save'] = psm_build_url(array(
'mod' => 'server',

View File

@ -93,7 +93,8 @@ class LoginController extends AbstractController
{
if (isset($_POST['user_name'])) {
$user = $this->getUser()->getUserByUsername($_POST['user_name']);
$this->addMessage(psm_get_lang('login', 'success_password_forgot'), 'success');
if (!empty($user)) {
$token = $this->getUser()->generatePasswordResetToken($user->user_id);
// we have a token, send it along
@ -102,11 +103,8 @@ class LoginController extends AbstractController
$user->email,
$token
);
$this->addMessage(psm_get_lang('login', 'success_password_forgot'), 'success');
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,
`value` varchar(255) NOT NULL,
PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'users' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "users` (
`user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_name` varchar(64) NOT NULL COMMENT 'user''s name, unique',
@ -228,19 +228,19 @@ class Installer
`email` varchar(255) NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `unique_username` (`user_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX .
'users_preferences' => "CREATE TABLE IF NOT EXISTS `" . PSM_DB_PREFIX . "users_preferences` (
`user_id` int(11) unsigned NOT NULL,
`key` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL,
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` (
`user_id` INT( 11 ) UNSIGNED NOT NULL ,
`server_id` INT( 11 ) UNSIGNED NOT NULL ,
PRIMARY KEY ( `user_id` , `server_id` )
) ENGINE = MyISAM DEFAULT CHARSET=utf8;",
) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'log' => "CREATE TABLE `" . PSM_DB_PREFIX . "log` (
`log_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`server_id` int(11) unsigned NOT NULL,
@ -248,12 +248,12 @@ class Installer
`message` TEXT NOT NULL,
`datetime` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`log_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'log_users' => "CREATE TABLE `" . PSM_DB_PREFIX . "log_users` (
`log_id` int(11) UNSIGNED NOT NULL ,
`user_id` int(11) UNSIGNED NOT NULL ,
PRIMARY KEY (`log_id`, `user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
) DEFAULT CHARSET=utf8;",
PSM_DB_PREFIX . 'servers' => "CREATE TABLE `" . PSM_DB_PREFIX . "servers` (
`server_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`ip` varchar(500) NOT NULL,
@ -294,7 +294,7 @@ class Installer
`last_error_output` TEXT,
`last_output` TEXT,
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` (
`servers_uptime_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`server_id` int(11) unsigned NOT NULL,
@ -303,7 +303,7 @@ class Installer
`latency` float(9,7) DEFAULT NULL,
PRIMARY KEY (`servers_uptime_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` (
`servers_history_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`server_id` int(11) unsigned NOT NULL,
@ -315,7 +315,7 @@ class Installer
`checks_failed` int(11) unsigned NOT NULL,
PRIMARY KEY (`servers_history_id`),
UNIQUE KEY `server_id_date` (`server_id`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;",
) DEFAULT CHARSET=utf8;",
);
foreach ($tables as $name => $sql) {
@ -468,7 +468,7 @@ class Installer
`latency` float(9,7) DEFAULT NULL,
PRIMARY KEY (`servers_uptime_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` (
`servers_history_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
@ -481,7 +481,7 @@ class Installer
`checks_failed` int(11) unsigned NOT NULL,
PRIMARY KEY (`servers_history_id`),
UNIQUE KEY `server_id_date` (`server_id`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
) DEFAULT CHARSET=utf8;";
$queries[] = "CREATE TABLE `" . PSM_DB_PREFIX . "users_servers` (
`user_id` INT( 11 ) UNSIGNED NOT NULL ,
@ -543,7 +543,7 @@ class Installer
`key` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL,
PRIMARY KEY (`user_id`, `key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
) DEFAULT CHARSET=utf8;";
$this->execSQL($queries);
}
@ -572,7 +572,7 @@ class Installer
`log_id` int(11) UNSIGNED NOT NULL ,
`user_id` int(11) UNSIGNED NOT NULL ,
PRIMARY KEY (`log_id`, `user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;");
) DEFAULT CHARSET=utf8;");
// Migrate the data
$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);
$mail->Priority = 1;
$publicUrl = PSM_BASE_URL.'/public.php';
$body = key_exists('message', $combi) ?
$combi['message'] :
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->AltBody = str_replace('<br/>', "\n", $body);
@ -609,6 +611,7 @@ class StatusNotifier
}
$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) ?
$combi['message'] :
@ -638,7 +641,8 @@ class StatusNotifier
'#server_label' => $this->server['label'],
'#server_error' => $this->server['error'],
'#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-TileColor" content="#424242">
<!-- TODO add base url -->
<!-- <link rel="canonical" href=""> -->
<!-- <link rel="canonical" href=""> -->
<meta name="theme-color" content="#424242">
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<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/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/custom.css" rel="stylesheet">
<!--[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]-->
</head>

View File

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