From 1ce34c1e3dd8f380e6d0b4aba0324c915ab83987 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Apr 2022 19:00:53 +0000 Subject: [PATCH 01/21] Bump symfony/dependency-injection from 3.4.47 to 4.0.15 Bumps [symfony/dependency-injection](https://github.com/symfony/dependency-injection) from 3.4.47 to 4.0.15. - [Release notes](https://github.com/symfony/dependency-injection/releases) - [Changelog](https://github.com/symfony/dependency-injection/blob/5.4/CHANGELOG.md) - [Commits](https://github.com/symfony/dependency-injection/compare/v3.4.47...v4.0.15) --- updated-dependencies: - dependency-name: symfony/dependency-injection dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- composer.json | 2 +- composer.lock | 45 ++++++++++++++++++--------------------------- 2 files changed, 19 insertions(+), 28 deletions(-) diff --git a/composer.json b/composer.json index 511ec417..16f85a06 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ "ext-xml": "*", "phpmailer/phpmailer": ">=6.5.0 ~6.0", "symfony/config": "~3.4", - "symfony/dependency-injection": "~3.4", + "symfony/dependency-injection": "~4.0", "symfony/event-dispatcher": "~3.4", "symfony/http-foundation": ">=3.4.35 ~3.4", "symfony/filesystem": "~3.4", diff --git a/composer.lock b/composer.lock index 0ac4f53c..a9b5bc8a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c967e1466fd2a2effd7f76650bba60d7", + "content-hash": "71aa157e0edf3be693eb3e676c88ee5e", "packages": [ { "name": "jaxl/jaxl", @@ -431,25 +431,25 @@ }, { "name": "symfony/dependency-injection", - "version": "v3.4.47", + "version": "v4.0.15", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "51d2a2708c6ceadad84393f8581df1dcf9e5e84b" + "reference": "36401d55d9be1fddd4e8be983b2a7e0b9a5f29ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/51d2a2708c6ceadad84393f8581df1dcf9e5e84b", - "reference": "51d2a2708c6ceadad84393f8581df1dcf9e5e84b", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/36401d55d9be1fddd4e8be983b2a7e0b9a5f29ac", + "reference": "36401d55d9be1fddd4e8be983b2a7e0b9a5f29ac", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "psr/container": "^1.0" }, "conflict": { - "symfony/config": "<3.3.7", - "symfony/finder": "<3.3", + "symfony/config": "<3.4", + "symfony/finder": "<3.4", "symfony/proxy-manager-bridge": "<3.4", "symfony/yaml": "<3.4" }, @@ -457,8 +457,8 @@ "psr/container-implementation": "1.0" }, "require-dev": { - "symfony/config": "~3.3|~4.0", - "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", "symfony/yaml": "~3.4|~4.0" }, "suggest": { @@ -469,6 +469,11 @@ "symfony/yaml": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, "autoload": { "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" @@ -494,23 +499,9 @@ "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v3.4.47" + "source": "https://github.com/symfony/dependency-injection/tree/4.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-24T10:57:07+00:00" + "time": "2018-08-01T08:23:45+00:00" }, { "name": "symfony/event-dispatcher", @@ -1232,5 +1223,5 @@ "ext-xml": "*" }, "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.3.0" } From 3ee7a7380d6dd166ff35a3e12702a3a6abd95658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Uls=C3=B8=20Kristensen?= Date: Fri, 10 Jun 2022 07:16:42 +0200 Subject: [PATCH 02/21] Fix Uncaught TypeError: Cannot access offset of type string on string in PHP8 in sendWebHook method. --- .gitignore | 1 + src/includes/functions.inc.php | 9 +++++++-- src/psm/Module/Config/Controller/ConfigController.php | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 7ac59805..abc62ecc 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ __MACOSX/ .buildpath .settings/ /.vscode +/.vs diff --git a/src/includes/functions.inc.php b/src/includes/functions.inc.php index 85e11b3c..a879d74f 100644 --- a/src/includes/functions.inc.php +++ b/src/includes/functions.inc.php @@ -1087,7 +1087,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 * */ @@ -1096,8 +1096,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); diff --git a/src/psm/Module/Config/Controller/ConfigController.php b/src/psm/Module/Config/Controller/ConfigController.php index 5285ea70..b86931b2 100644 --- a/src/psm/Module/Config/Controller/ConfigController.php +++ b/src/psm/Module/Config/Controller/ConfigController.php @@ -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'); From 106a96b0877dd0397048d78e3a184c1ddcdb4360 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Uls=C3=B8=20Kristensen?= Date: Fri, 10 Jun 2022 08:03:07 +0200 Subject: [PATCH 03/21] Added custom styles. --- src/templates/default/main/body.tpl.html | 5 +++-- src/templates/default/static/css/custom.css | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 src/templates/default/static/css/custom.css diff --git a/src/templates/default/main/body.tpl.html b/src/templates/default/main/body.tpl.html index 31b96f98..516e3f47 100644 --- a/src/templates/default/main/body.tpl.html +++ b/src/templates/default/main/body.tpl.html @@ -16,7 +16,7 @@ - + @@ -24,8 +24,9 @@ + diff --git a/src/templates/default/static/css/custom.css b/src/templates/default/static/css/custom.css new file mode 100644 index 00000000..12da06f6 --- /dev/null +++ b/src/templates/default/static/css/custom.css @@ -0,0 +1,4 @@ +/*# Used to override main styles for custom layout adjustments and colors. */ +.container-fluid { + max-width: 100%; +} \ No newline at end of file From 2c32c4adee0d8541fb9e146ba5c477bab50edbd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Uls=C3=B8=20Kristensen?= Date: Mon, 13 Jun 2022 08:26:18 +0200 Subject: [PATCH 04/21] Added subject to web hook same as used for e-mail. --- src/psm/Util/Server/Updater/StatusNotifier.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/psm/Util/Server/Updater/StatusNotifier.php b/src/psm/Util/Server/Updater/StatusNotifier.php index 6951efea..4081b860 100644 --- a/src/psm/Util/Server/Updater/StatusNotifier.php +++ b/src/psm/Util/Server/Updater/StatusNotifier.php @@ -609,6 +609,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 +639,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 ]); } } From d56b2856e52675fdfd5d462aa4db2839fdb2d901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Uls=C3=B8=20Kristensen?= Date: Thu, 16 Jun 2022 13:26:14 +0200 Subject: [PATCH 05/21] Changed mail footer to public url. --- src/psm/Util/Server/Updater/StatusNotifier.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/psm/Util/Server/Updater/StatusNotifier.php b/src/psm/Util/Server/Updater/StatusNotifier.php index 4081b860..e21b1acb 100644 --- a/src/psm/Util/Server/Updater/StatusNotifier.php +++ b/src/psm/Util/Server/Updater/StatusNotifier.php @@ -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.''.PSM_BASE_URL.''; + if ((bool)psm_get_conf('email_add_url')) $body .= PHP_EOL.PHP_EOL.''.$publicUrl.''; $mail->Body = $body; $mail->AltBody = str_replace('
', "\n", $body); From dba78bc7f37e2b6f87307bd39ed0c765a07cc4db Mon Sep 17 00:00:00 2001 From: Alexell Date: Sat, 30 Jul 2022 00:56:12 +0300 Subject: [PATCH 06/21] Remove double locale strings (en_US) --- src/lang/en_US.lang.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/lang/en_US.lang.php b/src/lang/en_US.lang.php index 25adb2c6..f414f964 100644 --- a/src/lang/en_US.lang.php +++ b/src/lang/en_US.lang.php @@ -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:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', 'off_discord_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', - 'off_email_body' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: - %PORT%
Error: %ERROR%
Date: %DATE%', 'off_webhook_title' => 'Server \'%LABEL%\' is DOWN', 'off_webhook_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', From e1c61abb1564a2c7e10bb8441ded8795e267c68a Mon Sep 17 00:00:00 2001 From: Alexell Date: Sat, 30 Jul 2022 00:57:47 +0300 Subject: [PATCH 07/21] Update Russian language --- src/lang/ru_RU.lang.php | 403 +++++++++++++++++++++++----------------- 1 file changed, 229 insertions(+), 174 deletions(-) diff --git a/src/lang/ru_RU.lang.php b/src/lang/ru_RU.lang.php index a055003a..40dd6137 100644 --- a/src/lang/ru_RU.lang.php +++ b/src/lang/ru_RU.lang.php @@ -43,19 +43,20 @@ $sm_lang = array( 'save' => 'Сохранить', 'edit' => 'Редактировать', 'delete' => 'Удалить', + 'view' => 'Просмотр', 'date' => 'Дата', 'message' => 'Сообщение', 'yes' => 'Да', 'no' => 'Нет', 'insert' => 'Добавить', - 'add_new' => 'Добавить новый', - 'update_available' => 'Новая версия ({version}) доступна по адресу http://www.phpservermonitor.org.', + 'add_new' => 'Добавить', + 'update_available' => 'Новая версия ({version}) доступна по адресу http://www.phpservermonitor.org.', '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' => 'Администраторы имеют полный доступ: они - могут управлять серверами, пользователями и - изменять общую - конфигурацию.
Пользователи могут только - просматривать и запускать проверку для - серверов, которые были к ним прикреплены.', + 'level_30' => 'Анонимный', + 'level_description' => 'Администраторы имеют полный доступ: они могут управлять серверами, пользователями и изменять общую конфигурацию.
Пользователи могут только просматривать и запускать проверку для серверов, которые были к ним прикреплены.', 'mobile' => 'Телефон', 'email' => 'E-mail', 'pushover' => 'Pushover', - 'pushover_description' => 'Pushover - это сервис, который позволяет легко - получать уведомления в режиме реального - времени. Больше информации на их веб-сайте.', + 'pushover_description' => 'Pushover - это сервис, который позволяет легко получать уведомления в режиме реального времени. Больше информации на их веб-сайте.', 'pushover_key' => 'Pushover ключ', 'pushover_device' => 'Pushover устройство', - 'pushover_device_description' => 'Имя устройства, на которое будут - отправляться уведомления. Оставьте - пустым, что бы отправлять уведомления на - все устройства.', + 'pushover_device_description' => 'Имя устройства, на которое будут отправляться уведомления. Оставьте пустым, что бы отправлять уведомления на все устройства.', + 'discord' => 'Discord', + 'discord_label' => 'Discord', + 'discord_description' => 'Укажите ваш вебхук здесь.', 'telegram' => 'Telegram', - 'telegram_description' => 'Telegram удобный - мессенджер для получения уведомлений в - реальном времени. Посетите раздел - документации для получения доп. информации - и инструкций по установке.', + 'telegram_description' => 'Telegram удобный мессенджер для получения уведомлений в + реальном времени. Посетите раздел + документации для получения доп. информации и инструкций по установке.', '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' => 'Бот обнаружен!

Откроется чат с ботом. Здесь - вам нужно нажать кнопку Start или отправить - команду /start.', - 'telegram_bot_username_error_token' => '401 - Unauthorized. Пожалуйста укажите - действительный API токен..', - 'telegram_bot_error' => 'Произошла ошибка при активации уведомления - Telegram: %s', + 'activate_telegram_description' => 'Разрешить отправку уведомлений на указанный идентификатор чата. Без этого разрешения Telegram не позволит нам отправлять вам уведомления.', + 'telegram_bot_username_found' => 'Бот обнаружен!

Откроется чат с ботом. Здесь вам нужно нажать кнопку 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**"}.
Доступные переменные: #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 - это сервис, который позволяет легко получать уведомления в режиме реального времени. Посетите сайт Discord для подробностей.', + '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 - это сервис, который позволяет легко - получать уведомления в режиме реального - времени. Больше информации на их веб-сайте.', + 'pushover_description' => 'Pushover - это сервис, который позволяет легко получать уведомления в режиме реального времени. Больше информации на их веб-сайте.', 'pushover_clone_app' => 'Нажмите здесь чтобы создать ваш Pushover app', 'pushover_api_token' => 'Pushover App API Token', - 'pushover_api_token_description' => 'Прежде чем вы сможете начать - пользоваться Pushover, вам необходимо - зарегистрировать "App" на их веб-сайте и ввести "App - API Token" сюда.', + 'pushover_api_token_description' => 'Прежде чем вы сможете начать пользоваться Pushover, вам необходимо зарегистрировать "App" на их веб-сайте и ввести "App API Token" сюда.', 'telegram_status' => 'Разрешить отправку уведомлений в Telegram', - 'telegram_description' => 'Telegram удобный - мессенджер для получения уведомлений в - реальном времени. Посетите раздел - документации для получения доп. информации - и инструкций по установке.', + 'telegram_add_url' => 'Добавлять ссылку на мониторинг в текст сообщения', + 'telegram_description' => 'Telegram удобный мессенджер для получения уведомлений в реальном времени. Посетите раздел документации для получения доп. информации и инструкций по установке.', 'telegram_api_token' => 'Telegram API Token', - 'telegram_api_token_description' => 'Прежде чем вы сможете начать - пользоваться Telegram, вам необходимо - получить API Token. Посетите раздел - документации для получения помощи.', + 'telegram_api_token_description' => 'Прежде чем вы сможете начать пользоваться Telegram, вам необходимо получить API Token. Посетите раздел документации для получения помощи.', + 'jabber_status' => 'Разрешить отправку Jabber (XMPP) сообщений', + 'jabber_description' => 'Посетите страницу документации для получения подробностей.', + '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.
AD DS: Directory - это доменная служба Active Directory.
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' => 'Изменение статуса: Вы получите - уведомление об изменение статуса. Для - онлайн -> оффлайн или офлайн -> онлайн.

Оффлайн: Вы получите уведомление - только когда сервер перейдет в статус - оффлайн. Например, задание Cron выставлено на - каждые 15 минут. Сервер перейдет в статус - оффлайн в 1:00 и не измениться до 6:00. Вы - получите 1 уведомление только в - 1:00

Всегда: Вы будете получать - уведомление при каждом запуске скрипта - проверки, как только сервер перейдет в - статус оффлайн, даже если сервер находится в - этом статусе несколько часов.', + 'alert_type_description' => 'Изменение статуса: Вы получите уведомление об изменение статуса. Для онлайн -> оффлайн или офлайн -> онлайн.

Оффлайн: Вы получите уведомление только когда сервер перейдет в статус оффлайн. Например, задание Cron выставлено на каждые 15 минут. Сервер перейдет в статус оффлайн в 1:00 и не измениться до 6:00. Вы получите 1 уведомление только в 1:00

Всегда: Вы будете получать уведомление при каждом запуске скрипта проверки, как только сервер перейдет в статус оффлайн, даже если сервер находится в этом статусе несколько часов.', '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' => 'Авто-обновление страницы статуса - серверов.
Время в секундах. - Если указано 0, то страница не будет - обновляться.', + 'auto_refresh_description' => 'Авто-обновление страницы статуса серверов.
Время в секундах. Если указано 0, то страница не будет обновляться.', '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' => 'Невозможно подключиться к следующему - серверу:

Сервер: %LABEL%
IP: %IP%
Порт: - %PORT%
Ошибка: %ERROR%
Дата: %DATE%', - 'off_pushover_title' => 'Cервер \'%LABEL%\' сейчас НЕДОСТУПЕН', - 'off_pushover_message' => 'Невозможно подключиться к следующему - серверу:

Сервер: %LABEL%
IP: %IP%
Порт: - %PORT%
Ошибка: %ERROR%
Дата: %DATE%', - 'off_telegram_message' => 'Невозможно подключиться к следующему - серверу:

Сервер: %LABEL%
IP: %IP%
Порт: - %PORT%
Ошибка: %ERROR%
Дата: %DATE%', - 'on_sms' => 'Сервер \'%LABEL%\' снова ДОСТУПЕН: IP=%IP%, Порт=%PORT%. Был - недоступен: %LAST_OFFLINE_DURATION%', - 'on_email_subject' => 'ВАЖНО: Сервер \'%LABEL%\' сейчас ДОСТУПЕН', - 'on_email_body' => 'Сервер \'%LABEL%\' снова доступен.
Был недоступен: - %LAST_OFFLINE_DURATION%

Сервер: %LABEL%
IP: %IP%
Порт: - %PORT%
Дата: %DATE%', + 'off_email_body' => 'Невозможно подключиться к следующему серверу:

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Ошибка: %ERROR%
Дата: %DATE%', + 'off_discord_message' => 'Невозможно подключиться к следующему серверу:

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Ошибка: %ERROR%
Дата: %DATE%', + 'off_webhook_title' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН', + 'off_webhook_message' => 'Невозможно подключиться к следующему серверу:

Сервер: %LABEL%
IP: + %IP%
Порт: %PORT%
Ошибка: %ERROR%
Дата: %DATE%', + 'off_pushover_title' => 'Сервер \'%LABEL%\' сейчас НЕДОСТУПЕН', + 'off_pushover_message' => 'Невозможно подключиться к следующему серверу:

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Ошибка: %ERROR%
Дата: %DATE%', + 'off_telegram_message' => 'Невозможно подключиться к следующему серверу:

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Ошибка: %ERROR%
Дата: %DATE%', + 'off_jabber_message' => 'Невозможно подключиться к следующему серверу:

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Ошибка: %ERROR%
Дата: %DATE%', + 'on_sms' => 'Сервер \'%LABEL%\' снова ДОСТУПЕН: IP=%IP%, Порт=%PORT%. Был недоступен: %LAST_OFFLINE_DURATION%', + 'on_email_subject' => 'ВАЖНО: Сервер \'%LABEL%\' снова ДОСТУПЕН', + 'on_email_body' => 'Сервер \'%LABEL%\' снова доступен.
Был недоступен: %LAST_OFFLINE_DURATION%

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Дата: %DATE%', + 'on_discord_message' => 'Сервер \'%LABEL%\' снова доступен.
Был недоступен: %LAST_OFFLINE_DURATION%

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Дата: %DATE%', + 'on_webhook_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН', + 'on_webhook_message' => 'Сервер \'%LABEL%\' снова доступен.
Был недоступен: %LAST_OFFLINE_DURATION%:

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Дата: %DATE%', 'on_pushover_title' => 'Сервер \'%LABEL%\' сейчас ДОСТУПЕН', - 'on_pushover_message' => 'Сервер \'%LABEL%\' снова доступен.
Был - недоступен: %LAST_OFFLINE_DURATION%

Сервер: %LABEL%
IP: - %IP%
Порт: %PORT%
Дата: %DATE%', - 'on_telegram_message' => 'Сервер \'%LABEL%\' снова доступен.
Был - недоступен: %LAST_OFFLINE_DURATION%

Сервер: %LABEL%
IP: - %IP%
Порт: %PORT%
Дата: %DATE%', + 'on_pushover_message' => 'Сервер \'%LABEL%\' снова доступен.
Был недоступен: %LAST_OFFLINE_DURATION%

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Дата: %DATE%', + 'on_telegram_message' => 'Сервер \'%LABEL%\' снова доступен.
Был недоступен: %LAST_OFFLINE_DURATION%

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Дата: %DATE%', + 'on_jabber_message' => 'Сервер \'%LABEL%\' снова доступен.
Был недоступен: %LAST_OFFLINE_DURATION%

Сервер: %LABEL%
IP: %IP%
Порт: %PORT%
Дата: %DATE%', + 'combi_off_email_message' => '
  • Сервер: %LABEL%
  • IP: %IP%
  • Порт: %PORT%
  • Ошибка: %ERROR%
  • Дата: %DATE%
', + 'combi_off_discord_message' => '- Сервер: %LABEL%
- IP: %IP%
- Порт: %PORT%
- Ошибка: %ERROR%
- Дата: %DATE%

', + 'combi_off_webhook_message' => '
  • Сервер: %LABEL%
  • IP: %IP%
  • Порт: %PORT%
  • Ошибка: %ERROR%
  • Дата: %DATE%
', + 'combi_off_pushover_message' => '
  • Сервер: %LABEL%
  • IP: %IP%
  • Порт: %PORT%
  • Ошибка: %ERROR%
  • Дата: %DATE%
', + 'combi_off_telegram_message' => '- Сервер: %LABEL%
- IP: %IP%
- Порт: %PORT%
- Ошибка: %ERROR%
- Дата: %DATE%

', + 'combi_off_jabber_message' => '- Сервер: %LABEL%
- IP: %IP%
- Порт: %PORT%
- Ошибка: %ERROR%
- Дата: %DATE%

', + 'combi_on_email_message' => '
  • Сервер: %LABEL%
  • IP: %IP%
  • Порт: %PORT%
  • Упал: %LAST_OFFLINE_DURATION%
  • Дата: %DATE%
', + 'combi_on_webhook_message' => '
  • Сервер: %LABEL%
  • IP: %IP%
  • Порт: %PORT%
  • Упал: %LAST_OFFLINE_DURATION%
  • Дата: %DATE%
', + 'combi_on_discord_message' => '- Сервер: %LABEL%
- IP: %IP%
- Порт: %PORT%
- Упал: %LAST_OFFLINE_DURATION%
- Дата: %DATE%

', + 'combi_on_pushover_message' => '
  • Сервер: %LABEL%
  • IP: %IP%
  • Порт: %PORT%
  • Упал: %LAST_OFFLINE_DURATION%
  • Дата: %DATE%
', + 'combi_on_telegram_message' => '- Сервер: %LABEL%
- IP: %IP%
- Порт: %PORT%
- Упал: %LAST_OFFLINE_DURATION%
- Дата: %DATE%

', + 'combi_on_jabber_message' => '- Сервер: %LABEL%
- IP: %IP%
- Порт: %PORT%
- Упал: %LAST_OFFLINE_DURATION%
- Дата: %DATE%

', + 'combi_email_subject' => 'ВАЖНО: \'%UP%\' сервера снова ДОСТУПНЫ, \'%DOWN%\' сервера НЕДОСТУПНЫ', + 'combi_webhook_subject' => '\'%UP%\' сервера снова ДОСТУПНЫ, \'%DOWN%\' сервера НЕДОСТУПНЫ', + 'combi_pushover_subject' => '\'%UP%\' сервера снова ДОСТУПНЫ, \'%DOWN%\' сервера НЕДОСТУПНЫ', + 'combi_email_message' => 'Следующие сервера ушли в ОФФЛАЙН:
%DOWN_SERVERS%
Следующие сервера снова ОНЛАЙН:
%UP_SERVERS%', + 'combi_discord_message' => 'Следующие сервера ушли в ОФФЛАЙН:
%DOWN_SERVERS%
Следующие сервера снова ОНЛАЙН:
%UP_SERVERS%', + 'combi_webhook_message' => 'Следующие сервера ушли в ОФФЛАЙН:
%DOWN_SERVERS%
Следующие сервера снова ОНЛАЙН:
%UP_SERVERS%', + 'combi_pushover_message' => 'Следующие сервера ушли в ОФФЛАЙН:
%DOWN_SERVERS%
Следующие сервера снова ОНЛАЙН:
%UP_SERVERS%', + 'combi_telegram_message' => 'Следующие сервера ушли в ОФФЛАЙН:
%DOWN_SERVERS%
Следующие сервера снова ОНЛАЙН:
%UP_SERVERS%', + 'combi_jabber_message' => 'Следующие сервера ушли в ОФФЛАЙН:
%DOWN_SERVERS%
Следующие сервера снова ОНЛАЙН:
%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 - час.

%link%', + 'password_reset_email_body' => 'Пожалуйста, используйте следующую ссылку для сброса пароля. Ссылка действительна 1 час.

%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' => 'Доступ закрыт', From 56b992609c5c1f007e98e1976402e92f0ec26664 Mon Sep 17 00:00:00 2001 From: Martijn Engler Date: Sun, 2 Oct 2022 11:57:59 +0200 Subject: [PATCH 08/21] Fix version check during install. Fixes #1224 --- src/psm/Module/Install/Controller/InstallController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/psm/Module/Install/Controller/InstallController.php b/src/psm/Module/Install/Controller/InstallController.php index 7afd97f1..34f85818 100644 --- a/src/psm/Module/Install/Controller/InstallController.php +++ b/src/psm/Module/Install/Controller/InstallController.php @@ -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 From 85a6e6ae710dfabd9893ad7e58f25526fab16840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20R=C3=BCggeberg?= Date: Fri, 31 Mar 2023 16:50:39 +0200 Subject: [PATCH 09/21] Update status.cron.php In my enviroment ( Apache + PHP 8 ) the script breaks at this line. With this Version check it works well. --- cron/status.cron.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cron/status.cron.php b/cron/status.cron.php index 0151d202..e4fac525 100644 --- a/cron/status.cron.php +++ b/cron/status.cron.php @@ -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) From afba6640b792e5043096baa8aff5dc4ffa577d81 Mon Sep 17 00:00:00 2001 From: "OUBRECHT.com" <50730162+oubrecht-com@users.noreply.github.com> Date: Wed, 28 Jun 2023 09:53:41 +0200 Subject: [PATCH 10/21] Update cs_CZ.lang.php --- src/lang/cs_CZ.lang.php | 58 ++++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/src/lang/cs_CZ.lang.php b/src/lang/cs_CZ.lang.php index fff3a945..e644d8d9 100644 --- a/src/lang/cs_CZ.lang.php +++ b/src/lang/cs_CZ.lang.php @@ -21,9 +21,10 @@ * @package phpservermon * @author Simon Berka * @author Pavel Laupe Dvorak + * @author OUBRECHT.com * @copyright Copyright (c) 2008-2017 Pepijn Over * @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 všechny?', ), @@ -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.
Čas v sekundách, 0 pro vypnutí automatického obnovení.', + '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:

Server: %LABEL%
IP: %IP%
Port: - %PORT%
Chyba: %ERROR%
Datum: %DATE%', + 'off_email_body' => 'Nebylo možné se spojit se serverem:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Chyba: %ERROR%
Datum: %DATE%', 'off_pushover_title' => 'Server \'%LABEL%\' je offline', - 'off_pushover_message' => 'Nebylo možné spojit se se serverem:

Server: %LABEL%
IP: %IP%
Port: - %PORT%
Chyba: %ERROR%
Datum: %DATE%', + 'off_pushover_message' => 'Nebylo možné se spojit se serverem:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Chyba: %ERROR%
Datum: %DATE%', + 'off_telegram_message' => 'Nebylo možné se spojit se serverem:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Chyba: %ERROR%
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%:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Datum: - %DATE%', + 'on_email_body' => 'Server \'%LABEL%\' je opět online, byl nedostupný %LAST_OFFLINE_DURATION%:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Datum: %DATE%', + 'on_telegram_message' => 'Server \'%LABEL%\' je opět online, byl nedostupný %LAST_OFFLINE_DURATION%:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Datum: %DATE%', 'on_pushover_title' => 'Server \'%LABEL%\' je online', 'on_pushover_message' => 'Server \'%LABEL%\' je znovu online, it was down for %LAST_OFFLINE_DURATION%:

Server: %LABEL%
IP: %IP%
Port: From fdc458d7471172195f7ff694426f60000e6a4475 Mon Sep 17 00:00:00 2001 From: David Bonnell Date: Tue, 5 Mar 2024 13:04:03 +1000 Subject: [PATCH 11/21] Fix typo in provision.yaml --- provision.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provision.yaml b/provision.yaml index e67df7e2..d90c7fb4 100644 --- a/provision.yaml +++ b/provision.yaml @@ -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 From 8e1d6d9e5968593c051ff14337bcfd40d30650fb Mon Sep 17 00:00:00 2001 From: cm <7zh6dj9f9@mozmail.com> Date: Thu, 7 Nov 2024 15:02:46 +0000 Subject: [PATCH 12/21] Remove hard dep on MyISAM storage engine --- src/psm/Util/Install/Installer.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/psm/Util/Install/Installer.php b/src/psm/Util/Install/Installer.php index 5728007e..828e042a 100644 --- a/src/psm/Util/Install/Installer.php +++ b/src/psm/Util/Install/Installer.php @@ -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,14 +228,14 @@ 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 , @@ -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')); From 16c9fddc5403cbd2f14a46da2a01b1fb31a3dceb Mon Sep 17 00:00:00 2001 From: cm <7zh6dj9f9@mozmail.com> Date: Thu, 7 Nov 2024 15:02:46 +0000 Subject: [PATCH 13/21] Server monitoring notification defaults to obey configuration --- .../Module/Server/Controller/ServerController.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/psm/Module/Server/Controller/ServerController.php b/src/psm/Module/Server/Controller/ServerController.php index cb08e5fc..3df16fe4 100644 --- a/src/psm/Module/Server/Controller/ServerController.php +++ b/src/psm/Module/Server/Controller/ServerController.php @@ -140,6 +140,17 @@ 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'; + } + /** * Prepare the template to show the update screen for a single server */ @@ -154,6 +165,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', From 53116645397e4692f31987f6eaffefbe4c691dee Mon Sep 17 00:00:00 2001 From: cm <7zh6dj9f9@mozmail.com> Date: Thu, 7 Nov 2024 17:08:11 +0000 Subject: [PATCH 14/21] removed missed MyISAM --- src/psm/Util/Install/Installer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/psm/Util/Install/Installer.php b/src/psm/Util/Install/Installer.php index 828e042a..0cc91a83 100644 --- a/src/psm/Util/Install/Installer.php +++ b/src/psm/Util/Install/Installer.php @@ -240,7 +240,7 @@ class Installer `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, From e4ef7fdb65ac4f0acb0abe5b88533ba5f7d7f74e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 17:03:20 +0000 Subject: [PATCH 15/21] Bump phpmailer/phpmailer from 6.5.0 to 6.9.3 Bumps [phpmailer/phpmailer](https://github.com/PHPMailer/PHPMailer) from 6.5.0 to 6.9.3. - [Release notes](https://github.com/PHPMailer/PHPMailer/releases) - [Changelog](https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md) - [Commits](https://github.com/PHPMailer/PHPMailer/compare/v6.5.0...v6.9.3) --- updated-dependencies: - dependency-name: phpmailer/phpmailer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- composer.lock | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/composer.lock b/composer.lock index a9b5bc8a..df41e743 100644 --- a/composer.lock +++ b/composer.lock @@ -231,16 +231,16 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.5.0", + "version": "v6.9.3", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "a5b5c43e50b7fba655f793ad27303cd74c57363c" + "reference": "2f5c94fe7493efc213f643c23b1b1c249d40f47e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a5b5c43e50b7fba655f793ad27303cd74c57363c", - "reference": "a5b5c43e50b7fba655f793ad27303cd74c57363c", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/2f5c94fe7493efc213f643c23b1b1c249d40f47e", + "reference": "2f5c94fe7493efc213f643c23b1b1c249d40f47e", "shasum": "" }, "require": { @@ -250,20 +250,25 @@ "php": ">=5.5.0" }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.2", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "doctrine/annotations": "^1.2.6 || ^1.13.3", + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", "phpcompatibility/php-compatibility": "^9.3.5", "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.5.6", - "yoast/phpunit-polyfills": "^0.2.0" + "squizlabs/php_codesniffer": "^3.7.2", + "yoast/phpunit-polyfills": "^1.0.4" }, "suggest": { + "decomplexity/SendOauth2": "Adapter for using XOAUTH2 authentication", "ext-mbstring": "Needed to send email in multibyte encoding charset or decode encoded addresses", + "ext-openssl": "Needed for secure SMTP sending and DKIM signing", + "greew/oauth2-azure-provider": "Needed for Microsoft Azure XOAUTH2 authentication", "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", "league/oauth2-google": "Needed for Google XOAUTH2 authentication", "psr/log": "For optional PSR-3 debug logging", - "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" + "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)", + "thenetworg/oauth2-azure": "Needed for Microsoft XOAUTH2 authentication" }, "type": "library", "autoload": { @@ -295,7 +300,7 @@ "description": "PHPMailer is a full-featured email creation and transfer class for PHP", "support": { "issues": "https://github.com/PHPMailer/PHPMailer/issues", - "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.5.0" + "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.9.3" }, "funding": [ { @@ -303,7 +308,7 @@ "type": "github" } ], - "time": "2021-06-16T14:33:43+00:00" + "time": "2024-11-24T18:04:13+00:00" }, { "name": "psr/container", @@ -1223,5 +1228,5 @@ "ext-xml": "*" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From fa0723c74d1e0894c69f70f091e777a247de464b Mon Sep 17 00:00:00 2001 From: Tim Zandbergen Date: Sun, 5 Jan 2025 02:39:22 +0100 Subject: [PATCH 16/21] Update ServerController.php Added discord and webhook to function. Adding to #1286 --- src/psm/Module/Server/Controller/ServerController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/psm/Module/Server/Controller/ServerController.php b/src/psm/Module/Server/Controller/ServerController.php index 3df16fe4..d81ba0b9 100644 --- a/src/psm/Module/Server/Controller/ServerController.php +++ b/src/psm/Module/Server/Controller/ServerController.php @@ -149,6 +149,8 @@ class ServerController extends AbstractServerController $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'; } /** From 25abdd61ec7a20f4a2f3418f25b8394f84512097 Mon Sep 17 00:00:00 2001 From: Suthep Yonphimai Date: Mon, 6 Jan 2025 11:50:26 +0700 Subject: [PATCH 17/21] Create th_TH.lang.php Create th_TH.lang.php and translation some word. --- src/lang/th_TH.lang.php | 591 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 591 insertions(+) create mode 100644 src/lang/th_TH.lang.php diff --git a/src/lang/th_TH.lang.php b/src/lang/th_TH.lang.php new file mode 100644 index 00000000..8d115dc8 --- /dev/null +++ b/src/lang/th_TH.lang.php @@ -0,0 +1,591 @@ +. + + * PHP Server Monitor + * ตรวจสอบเซิร์ฟเวอร์และเว็บไซต์ของคุณ + * + * ไฟล์นี้เป็นส่วนหนึ่งของ PHP Server Monitor + * PHP Server Monitor เป็นซอฟต์แวร์ฟรี: คุณสามารถเผยแพร่ซ้ำและ/หรือแก้ไข + * ได้ภายใต้เงื่อนไขของใบอนุญาตสาธารณะทั่วไป GNU ซึ่งเผยแพร่โดย + * มูลนิธิซอฟต์แวร์เสรี ไม่ว่าจะเป็นใบอนุญาตเวอร์ชัน 3 หรือ + * (ตามตัวเลือกของคุณ) เวอร์ชันที่ใหม่กว่า + * + * PHP Server Monitor เผยแพร่ด้วยความหวังว่าจะเป็นประโยชน์ + * แต่ไม่มีการรับประกันใดๆ ทั้งสิ้น ไม่แม้แต่การรับประกันโดยนัยว่า + * สามารถขายได้หรือเหมาะสมสำหรับจุดประสงค์เฉพาะ ดู + * ใบอนุญาตสาธารณะทั่วไป GNU สำหรับรายละเอียดเพิ่มเติม + * + * คุณควรได้รับสำเนาใบอนุญาตสาธารณะทั่วไป GNU + * พร้อมกับ PHP Server Monitor หากไม่ได้รับ โปรดดูที่ + * + * @package phpservermon + * @author Pepijn Over + * @copyright Copyright (c) 2008-2017 Pepijn Over + * @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}) ให้ดาวน์โหลดแล้ว คลิก ที่นี่ เพื่อดาวน์โหลดการอัปเดต', + 'back_to_top' => 'กลับไปยังด้านบน', + 'go_back' => 'ถอยกลับ', + 'ok' => 'ตกลง', + 'bad' => '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' => 'ผู้ดูแลระบบมีสิทธิ์เข้าถึงเต็มรูปแบบ: พวกเขาสามารถจัดการเซิร์ฟเวอร์ ผู้ใช้ และแก้ไขการกำหนดค่าทั่วโลกได้
ผู้ใช้สามารถดูและเรียกใช้โปรแกรมอัปเดตสำหรับเซิร์ฟเวอร์ที่ได้รับมอบหมายให้เท่านั้น', + 'mobile' => 'มือถือ', + 'email' => 'อีเมล', + 'pushover' => 'Pushover', + 'pushover_description' => 'Pushover เป็นบริการที่ช่วยให้รับการแจ้งเตือนแบบเรียลไทม์ได้อย่างง่ายดาย ดูข้อมูลเพิ่มเติมได้ที่ เว็บไซต์', + 'pushover_key' => 'Pushover Key', + 'pushover_device' => 'Pushover Device', + 'pushover_device_description' => 'ชื่ออุปกรณ์ที่จะส่งข้อความถึง ปล่อยว่างไว้หากต้องการส่งไปยังอุปกรณ์ทั้งหมด.', + 'discord' => 'Discord', + 'discord_label' => 'Discord', + 'discord_description' => 'วาง webhook ของคุณไว้ที่นี่', + 'telegram' => 'Telegram', + 'telegram_description' => 'Telegram คือแอปแชทที่ทำให้การรับการแจ้งเตือนแบบเรียลไทม์เป็นเรื่องง่าย เยี่ยมชม เอกสาร เพื่อดูข้อมูลเพิ่มเติมและคำแนะนำในการติดตั้ง', + 'telegram_chat_id' => 'Telegram chat id', + 'telegram_chat_id_description' => 'ข้อความจะถูกส่งไปยังห้องแชทที่เกี่ยวข้อง', + 'telegram_get_chat_id' => 'คลิกที่นี่เพื่อรับ chat id ของคุณ', + 'activate_telegram' => 'Activate Telegram notifications', + 'activate_telegram_description' => 'อนุญาตให้ส่งการแจ้งเตือนของ Telegram ไปยัง ID แชทที่ระบุ หากไม่ได้รับอนุญาต Telegram จะไม่อนุญาตให้เราส่งการแจ้งเตือนถึงคุณ', + 'telegram_bot_username_found' => 'The bot was found!

This will open a chat with the bot. Here you need to press start or type /start.', + 'telegram_bot_username_error_token' => '401 - Unauthorized. Please make sure that the API token is valid.', + 'telegram_bot_error' => 'An error has occurred while activating Telegram notification: %s', + 'jabber' => 'Jabber', + 'jabber_label' => 'Jabber', + 'jabber_description' => 'You Jabber account', + 'webhook' => 'Webhook', + 'webhook_description' => 'Send a json webhook to a certain endpoint.', + 'webhook_url' => 'Webhook Url', + 'webhook_url_description' => 'Webhook public endpoint url, should start with https://.', + 'webhook_json' => 'Webhook JSON', + 'webhook_json_description' => 'Define a custom json, e.g. {"username": "servermon: #server_label" "text": "#server_ip is **#status**"}.
Available variables: #message, #server_error, #server_ip, #server_label, #server_last_offline_duration and #status', + 'delete_title' => 'Delete User', + 'delete_message' => 'Are you sure you want to delete user \'%1\'?', + 'deleted' => 'User deleted.', + 'updated' => 'User updated.', + 'inserted' => 'User added.', + 'profile' => 'Profile', + 'profile_updated' => 'Your profile has been updated.', + 'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.', + 'error_user_name_invalid' => 'The username may only contain alphabetic characters (a-z, A-Z), digits (0-9), dots (.) and underscores (_).', + 'error_user_name_exists' => 'The given username already exists in the database.', + 'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.', + 'error_user_email_invalid' => 'The email address is invalid.', + 'error_user_level_invalid' => 'The given user level is invalid.', + 'error_user_no_match' => 'The user could not be found in the database.', + 'error_user_password_invalid' => 'The entered password is invalid.', + 'error_user_password_no_match' => 'The entered passwords do not match.', + 'error_user_admin_cant_be_deleted' => 'You can\'t remove the last administrator.', + 'error_user_cant_be_anonymous' => 'Only user \'__public__\' can have the level anonymous.' + ), + 'log' => array( + 'title' => 'Log entries', + 'type' => 'Type', + 'status' => 'Status', + 'email' => 'Email', + 'sms' => 'SMS', + 'discord' => 'Discord', + 'pushover' => 'Pushover', + 'webhook' => 'Webhook', + 'telegram' => 'Telegram', + 'jabber' => 'Jabber', + 'no_logs' => 'No logs', + 'clear' => 'Clear log', + 'delete_title' => 'Delete log', + 'delete_message' => 'Are you sure you want to delete all logs?', + ), + 'servers' => array( + 'server' => 'Server', + 'status' => 'Status', + 'label' => 'Label', + 'domain' => 'Domain/IP', + 'timeout' => 'Timeout', + 'timeout_description' => 'Number of seconds to wait for the server to respond.', + 'authentication_settings' => 'Authentication Settings', + 'optional' => 'Optional', + 'website_username' => 'Username', + 'website_username_description' => 'Username to access the site. (Only Apache authentication is supported.)', + 'website_password' => 'Password', + 'website_password_description' => 'Password to access the site. The password is encrypted in the database.', + 'fieldset_monitoring' => 'Monitoring', + 'fieldset_permissions' => 'Permissions', + 'permissions' => 'Server will be visible for the following users', + 'port' => 'Port', + 'custom_port' => 'Custom Port', + 'popular_ports' => 'Popular Ports', + 'request_method' => 'Request method', + 'custom_request_method' => 'Custom request method', + 'popular_request_methods' => 'Popular request methods', + 'post_field' => 'Post field', + 'post_field_description' => 'The data that will be send using the request method above.', + 'please_select' => 'Please select', + 'type' => 'Type', + 'type_website' => 'Website', + 'type_service' => 'Service', + 'type_ping' => 'Ping', + 'pattern' => 'Search string/pattern', + 'pattern_description' => 'If this pattern is not found on the website, the server will be marked online/offline. Regular expressions are allowed.', + 'pattern_online' => 'Pattern indicates website is', + 'pattern_online_description' => 'Online: If this pattern was found on the website, the server will be marked online. Offline: If this pattern was not found on the website, the server will be marked offline.', + 'redirect_check' => 'Redirecting to another domain is', + 'redirect_check_description' => 'Redirect to another domain is usually a bad sign.', + 'allow_http_status' => 'Allow HTTP status code', + 'allow_http_status_description' => 'Mark website as online. HTTP Status codes lower then 400 are marked as online by default. Seperate with |.', + 'header_name' => 'Header name', + 'header_value' => 'Header value', + 'header_name_description' => 'Case-sensitive.', + 'header_value_description' => 'Regular expressions are allowed.', + 'last_check' => 'Last check', + 'last_online' => 'Last online', + 'last_offline' => 'Last offline', + 'last_output' => 'Last positive output', + 'last_error' => 'Last error', + 'last_error_output' => 'Last error output', + 'output' => 'Output', + 'monitoring' => 'Monitoring', + 'no_monitoring' => 'No monitoring', + 'email' => 'Email', + 'send_email' => 'Send Email', + 'sms' => 'SMS', + 'send_sms' => 'Send SMS', + 'discord' => 'Discord', + 'send_discord' => 'Send Discord notification', + 'webhook' => 'Webhook', + 'send_webhook' => 'Send Webhook notification', + 'pushover' => 'Pushover', + 'send_pushover' => 'Send Pushover notification', + 'telegram' => 'Telegram', + 'send_telegram' => 'Send Telegram notification', + 'jabber' => 'Jabber', + 'send_jabber' => 'Send Jabber notification', + 'users' => 'Users', + 'delete_title' => 'Delete server', + 'delete_message' => 'Are you sure you want to delete server \'%1\'?', + 'deleted' => 'Server deleted.', + 'updated' => 'Server updated.', + 'inserted' => 'Server added.', + 'latency' => 'Latency', + 'latency_max' => 'Latency (maximum)', + 'latency_min' => 'Latency (minimum)', + 'latency_avg' => 'Latency (average)', + 'online' => 'online', + 'offline' => 'offline', + 'uptime' => 'Uptime', + 'year' => 'Year', + 'month' => 'Month', + 'week' => 'Week', + 'day' => 'Day', + 'hour' => 'Hour', + 'warning_threshold' => 'Warning threshold', + 'warning_threshold_description' => 'Number of failed checks required before it is marked offline.', + 'ssl_cert_expiry_days' => 'SSL Certificate Validity', + 'ssl_cert_expiry_days_description' => 'The minimum remaining days the SSL certificate is still valid. Use 0 to disable check.', + 'ssl_cert_expired' => 'SSL certificate expired since', + 'ssl_cert_expiring' => 'SSL certificate expiring:', + 'chart_last_week' => 'Last week', + 'chart_history' => 'History', + 'chart_day_format' => '%Y-%m-%d', + 'chart_long_date_format' => '%Y-%m-%d %H:%M:%S', + 'chart_short_date_format' => '%m/%d %H:%M', + 'chart_short_time_format' => '%H:%M', + 'warning_notifications_disabled_sms' => 'SMS notifications are disabled.', + 'warning_notifications_disabled_email' => 'Email notifications are disabled.', + 'warning_notifications_disabled_discord' => 'Discord notifications are disabled.', + 'warning_notifications_disabled_webhook' => 'Webhook notifications are disabled.', + 'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.', + 'warning_notifications_disabled_telegram' => 'Telegram notifications are disabled.', + 'warning_notifications_disabled_jabber' => 'Jabber notifications are disabled.', + 'error_server_no_match' => 'Server not found.', + 'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.', + 'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.', + 'error_server_ip_bad_service' => 'The IP address is not valid.', + 'error_server_ip_bad_website' => 'The website URL is not valid.', + 'error_server_type_invalid' => 'The selected server type is invalid.', + 'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.', + 'error_server_ssl_cert_expiry_days' => 'The remaining days for SSL certificate validity must be a valid integer greater than or equal to 0.', + ), + 'config' => array( + 'general' => 'General', + 'site_title' => 'Site title', + 'language' => 'Language', + 'show_update' => 'Check for updates?', + 'password_encrypt_key' => 'The encryption key password', + 'password_encrypt_key_note' => 'This key is used to encrypt passwords that are stored on servers for access to websites. If the key will change the stored password is invalid!', + 'proxy' => 'Enable proxy', + 'proxy_url' => 'Proxy URL', + 'proxy_user' => 'Proxy username', + 'proxy_password' => 'Proxy password', + 'email_status' => 'Allow sending email', + 'email_add_url' => 'Add url to the monitor in email', + 'email_from_email' => 'Email from address', + 'email_from_name' => 'Email from name', + 'email_smtp' => 'Enable SMTP', + 'email_smtp_host' => 'SMTP host', + 'email_smtp_port' => 'SMTP port', + 'email_smtp_security' => 'SMTP security', + 'email_smtp_security_none' => 'None', + 'email_smtp_username' => 'SMTP username', + 'email_smtp_password' => 'SMTP password', + 'email_smtp_noauth' => 'Leave blank for no authentication', + 'sms_status' => 'Allow sending text messages', + 'sms_gateway' => 'Gateway to use for sending messages', + 'sms_gateway_username' => 'Gateway username', + 'sms_gateway_password' => 'Gateway password', + 'sms_from' => 'Sender\'s phone number', + 'discord_status' => 'Allow sending Discord messages', + 'discord_description' => 'Discord is a service that makes it easy to get real-time notifications. See their website for more info.', + 'webhook_status' => 'Allow sending webhooks', + 'webhook_description' => 'Allow sending webhooks to services like slack. The message payload end endpoint are defined in the profile settings.', + 'webhook_url' => 'Webhook Url', + 'webhook_url_description' => 'Url to webhook endpoint', + 'webhook_json' => 'Webhook Json', + 'webhook_json_description' => 'Define a custom json. Available variables: #message, #server_error, #server_ip, #server_label, #server_last_offline_duration and #status', + 'pushover_status' => 'Allow sending Pushover messages', + 'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See their website for more info.', + 'pushover_clone_app' => 'Click here to create your Pushover app', + 'pushover_api_token' => 'Pushover App API Token', + 'pushover_api_token_description' => 'Before you can use Pushover, you need to register an App at their website and enter the App API Token here.', + 'telegram_status' => 'Allow sending Telegram messages', + 'telegram_add_url' => 'Add url to the monitor in the message', + 'telegram_description' => 'Telegram is a chat app that makes it easy to get real-time notifications. Visit the documentation for more info and an install guide.', + 'telegram_api_token' => 'Telegram API Token', + 'telegram_api_token_description' => 'Before you can use Telegram, you need to get a API token. Visit the documentation for help.', + 'jabber_status' => 'Allow sending Jabber (XMPP) messages', + 'jabber_description' => 'Visit the documentation for more info and an install guide.', + 'jabber_host' => 'Host', + 'jabber_host_description' => 'Host of your Jabber account provider. For Google Account use talk.google.com.', + 'jabber_port' => 'Port', + 'jabber_port_description' => 'Port of your Jabber provider. Default 5222. For Google Account use 5223.', + 'jabber_username' => 'Username', + 'jabber_username_description' => 'For Google Account use incl. domain so for example example@google.com.', + 'jabber_domain' => 'Domain', + 'jabber_domain_description' => 'Domain of your Jabber provider. Left empty for Google Account.', + 'jabber_password' => 'Password', + 'jabber_password_description' => 'Fill only to set or change.', + 'jabber_check' => 'Check your Jabber account if message was received.', + 'dirauth_status' => 'Authenticate with directory service', + 'authdir_host_locn' => 'Directory host', + 'authdir_host_port' => 'Directory port', + 'authdir_type' => 'Service type', + 'authdir_type_description' => 'OpenLDAP: Directory is an OpenLDAP service.
AD + DS: Directory is an Active Directory Domain Service.
AD + LDS: Directory is an Active Directory Lightweight Directory + Service.', + 'authdir_type_openldap' => 'OpenLDAP', + 'authdir_type_adds' => 'AD DS', + 'authdir_type_adlds' => 'AD LDS', + 'authdir_userdomain' => 'Active Directory domain', + 'authdir_userdomain_description' => 'User domain for Active Directory. This is typically the NETBIOS domain + for AD DS and the DNS domain for AD LDS. Not used for OpenLDAP + directories.', + 'authdir_ldapver' => 'LDAP protocol version', + 'authdir_ldapver_description' => 'Version of the LDAP specification. This is typically Version 3 (default). + Version 2 was deprecated in 2003 (RFC3494).', + 'authdir_ldapfollowref' => 'Follow referrals', + 'authdir_ldapfollowref_description' => 'Follow referrals if the specified server refers to another server for + the required information. Leave unchecked if you are unaware of this + functionality.', + 'authdir_basedn' => 'Base DN*', + 'authdir_basedn_description' => 'Base distinguished name (DN) of the directory service. E.g., + dc=domain,dc=tld. This is a required field.', + 'authdir_usernameattrib' => 'Username attribute', + 'authdir_usernameattrib_description' => 'Attribute used by the directory service to refer to the username of + the user.', + 'authdir_groupnameattrib' => 'Group name attribute', + 'authdir_groupnameattrib_description' => 'Attribute used by the directory service to refer to the group name + of a group. This is used to check for group membership.', + 'authdir_groupmemattrib' => 'Group member attribute', + 'authdir_groupmemattrib_description' => 'Attribute used by the directory service to refer to the group(s) of + which the user is a member. This is used to check for group + membership.', + 'authdir_usercontainerrdn' => 'User container RDN', + 'authdir_usercontainerrdn_description' => 'Relative distinguished name of the users container in the + directory. E.g., ou=Users', + 'authdir_groupcontainerrdn' => 'Group container RDN', + 'authdir_groupcontainerrdn_description' => 'Relative distinguished name of the groups container in the + directory. E.g., ou=Groups', + 'authdir_groupname' => 'Authorised directory group', + 'authdir_groupname_description' => 'Directory group authorised to access application. Directory users not + members of this group will not be authenticated (currently not available + for AD).', + 'authdir_defaultrole' => 'Default role', + 'authdir_defaultrole_description' => 'Default role to be assigned to users logging in for the first time.', + 'alert_type' => 'Select when you\'d like to be notified.', + 'alert_type_description' => 'Status change: You will receive a notification when a server has a change in status. So from online -> offline or offline -> online.

Offline: You will receive a notification when a server goes offline for the *FIRST TIME ONLY*. For example, your cronjob is every 15 minutes and your server goes down at 1 am and stays down till 6 am. You will get 1 notification at 1 am and that\'s it.

Always: You will receive a notification every time the script runs and a site is down, even if the site has been offline for hours.', + 'alert_type_status' => 'Status change', + 'alert_type_offline' => 'Offline', + 'alert_type_always' => 'Always', + 'combine_notifications' => 'Combine notifications', + 'combine_notifications_description' => 'Reduces the amount of notification by combining the notifications into 1 single notification. (This does not affect SMS notifications.)', + 'alert_proxy' => 'Even if enabled, proxy is never used for services', + 'alert_proxy_url' => 'Format: host:port', + 'log_status' => 'Log status', + 'log_status_description' => 'If log status is set to TRUE, the monitor will log the event whenever the notification settings are passed.', + 'log_email' => 'Log emails sent by the script', + 'log_sms' => 'Log text messages sent by the script', + 'log_discord' => 'Log Discord messages sent by the script', + 'log_pushover' => 'Log pushover messages sent by the script', + 'log_webhook' => 'Log webhook messages sent by the script', + 'log_telegram' => 'Log Telegram messages sent by the script', + 'log_jabber' => 'Log Jabber messages sent by the script', + 'updated' => 'The configuration has been updated.', + 'tab_email' => 'Email', + 'tab_sms' => 'SMS', + 'tab_discord' => 'Discord', + 'tab_pushover' => 'Pushover', + 'tab_webhook' => 'Webhook', + 'tab_telegram' => 'Telegram', + 'tab_jabber' => 'Jabber', + 'tab_auth' => 'Authentication', + 'settings_email' => 'Email settings', + 'settings_sms' => 'Text message settings', + 'settings_discord' => 'Discord settings', + 'settings_pushover' => 'Pushover settings', + 'settings_webhook' => 'Webhook settings', + 'settings_telegram' => 'Telegram settings', + 'settings_jabber' => 'Jabber settings', + 'settings_notification' => 'Notification settings', + 'settings_log' => 'Log settings', + 'settings_proxy' => 'Proxy settings', + 'settings_dirauth' => 'LDAP settings', + 'auto_refresh' => 'Auto-refresh', + 'auto_refresh_description' => 'Auto-refresh servers page.
Time in seconds, if 0 the page won\'t refresh.', + 'test' => 'Test', + 'test_email' => 'An email will be sent to the address 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_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.', + 'send' => 'Send', + 'test_subject' => 'Test', + 'test_message' => 'Test message', + 'email_sent' => 'Email sent', + 'email_error' => 'Error in email sending', + 'sms_sent' => 'SMS sent', + 'sms_error' => 'An error has occurred while sending the SMS: %s', + 'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.', + 'discord_sent' => 'Discord notification sent', + 'discord_error' => 'An error has occurred while sending the Discord notification: %s', + 'discord_error_nowebhook' => 'Unable to send test Discord notification: no valid Discord webhook found in your user profile.', + 'webhook_sent' => 'Webhook notification sent', + 'webhook_error' => 'An error has occurred while sending the webhook notification: %s', + 'webhook_error_nourl' => 'Unable to send test notification: no url found in user profile.', + 'webhook_error_nojson' => 'Unable to send test notification: no json found in user profile.', + 'pushover_sent' => 'Pushover notification sent', + 'pushover_error' => 'An error has occurred while sending the Pushover notification: %s', + 'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.', + 'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.', + 'telegram_sent' => 'Telegram notification sent', + 'telegram_error' => 'An error has occurred while sending the Telegram notification: %s', + 'telegram_error_notoken' => 'Unable to send test notification: no Telegram API token found in the global configuration.', + 'telegram_error_noid' => 'Unable to send test notification: no chat id found in your profile.', + 'jabber_sent' => 'Jabber notification sent', + 'jabber_error' => 'An error has occurred while sending the Jabber notification: %s', + 'jabber_error_noconfig' => 'Unable to send test notification: no Jabber account set in the global configuration.', + 'jabber_error_noaccount' => 'Unable to send test notification: no Jabber account found in your profile.', + 'log_retention_period' => 'Log retention period', + 'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.', + 'log_retention_days' => 'days', + 'user_agent' => 'User Agent', + 'user_agent_key_note' => 'Custom user agent used by monitor within communication with external services.', + ), + 'notifications' => array( + 'off_sms' => 'Server \'%LABEL%\' is DOWN: ip=%IP%, port=%PORT%. Error=%ERROR%', + 'off_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is DOWN', + 'off_email_body' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', + 'off_discord_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', + 'off_webhook_title' => 'Server \'%LABEL%\' is DOWN', + 'off_webhook_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: + %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', + 'off_pushover_title' => 'Server \'%LABEL%\' is DOWN', + 'off_pushover_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', + 'off_telegram_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', + 'off_jabber_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', + 'on_sms' => 'Server \'%LABEL%\' is RUNNING: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%', + 'on_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is RUNNING', + 'on_email_body' => 'Server \'%LABEL%\' is running again, it was down for + %LAST_OFFLINE_DURATION%:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: + %DATE%', + 'on_discord_message' => 'Server \'%LABEL%\' is running again, it was down for: + %LAST_OFFLINE_DURATION%

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: %DATE%', + 'on_webhook_title' => 'Server \'%LABEL%\' is RUNNING', + 'on_webhook_message' => 'Server \'%LABEL%\' is running again, it was down for + %LAST_OFFLINE_DURATION%:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: + %DATE%', + 'on_pushover_title' => 'Server \'%LABEL%\' is RUNNING', + 'on_pushover_message' => 'Server \'%LABEL%\' is running again, it was down for + %LAST_OFFLINE_DURATION%:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: + %DATE%', + 'on_telegram_message' => 'Server \'%LABEL%\' is running again, it was down for: + %LAST_OFFLINE_DURATION%

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: + %DATE%', + 'on_jabber_message' => 'Server \'%LABEL%\' is running again, it was down for: + %LAST_OFFLINE_DURATION%

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: + %DATE%', + 'combi_off_email_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: %PORT%
  • Error: + %ERROR%
  • Date: %DATE%
', + 'combi_off_discord_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- Error: %ERROR%
- + Date: %DATE%

', + 'combi_off_webhook_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: %PORT%
  • Error: + %ERROR%
  • Date: %DATE%
', + 'combi_off_pushover_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: %PORT%
  • Error: + %ERROR%
  • Date: %DATE%
', + 'combi_off_telegram_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- Error: %ERROR%
- + Date: %DATE%

', + 'combi_off_jabber_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- Error: %ERROR%
- + Date: %DATE%

', + 'combi_on_email_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: %PORT%
  • Downtime: + %LAST_OFFLINE_DURATION%
  • Date: %DATE%
', + 'combi_on_webhook_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: + %PORT%
  • Downtime: %LAST_OFFLINE_DURATION%
  • Date: + %DATE%
', + 'combi_on_discord_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- + Downtime: %LAST_OFFLINE_DURATION%
- Date: %DATE%

', + 'combi_on_pushover_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: + %PORT%
  • Downtime: %LAST_OFFLINE_DURATION%
  • Date: + %DATE%
', + 'combi_on_telegram_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- Downtime: + %LAST_OFFLINE_DURATION%
- Date: %DATE%

', + 'combi_on_jabber_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- Downtime: + %LAST_OFFLINE_DURATION%
- Date: %DATE%

', + 'combi_email_subject' => 'IMPORTANT: \'%UP%\' servers UP again, \'%DOWN%\' servers DOWN', + 'combi_webhook_subject' => '\'%UP%\' servers UP again, \'%DOWN%\' servers DOWN', + 'combi_pushover_subject' => '\'%UP%\' servers UP again, \'%DOWN%\' servers DOWN', + 'combi_email_message' => 'The following servers went down:
%DOWN_SERVERS%
The following + servers are up again:
%UP_SERVERS%', + 'combi_discord_message' => 'The following servers went down:
%DOWN_SERVERS%
The following + servers are up again:
%UP_SERVERS%', + 'combi_webhook_message' => 'The following servers went down:
%DOWN_SERVERS%
The following + servers are up again:
%UP_SERVERS%', + 'combi_pushover_message' => 'The following servers went down:
%DOWN_SERVERS%
The following + servers are up again:
%UP_SERVERS%', + 'combi_telegram_message' => 'The following servers went down:
%DOWN_SERVERS%
The following + servers are up again:
%UP_SERVERS%', + 'combi_jabber_message' => 'The following servers went down:
%DOWN_SERVERS%
The following + servers are up again:
%UP_SERVERS%', + ), + 'login' => array( + 'welcome_usermenu' => 'Welcome, %user_name%', + 'title_sign_in' => 'Please sign in', + 'title_forgot' => 'Forgot your password?', + 'title_reset' => 'Reset your password', + 'submit' => 'Submit', + 'remember_me' => 'Remember me', + 'login' => 'Login', + 'logout' => 'Logout', + 'username' => 'Username', + 'password' => 'Password', + 'password_repeat' => 'Repeat password', + 'password_forgot' => 'Forgot password?', + 'password_reset' => 'Reset password', + 'password_reset_email_subject' => 'Reset your password for PHP Server Monitor', + 'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.

%link%', + 'error_user_incorrect' => 'The provided username could not be found.', + 'error_login_incorrect' => 'The information is incorrect.', + 'error_login_passwords_nomatch' => 'The provided passwords do not match.', + 'error_reset_invalid_link' => 'The reset link you provided is invalid.', + 'success_password_forgot' => 'An email has been sent to you with information how to reset your password.', + 'success_password_reset' => 'Your password has been reset successfully. Please login.', + ), + 'error' => array( + '401_unauthorized' => 'Unauthorized', + '401_unauthorized_description' => 'You do not have the privileges to view this page.', + ), +); From deefc45847f69cce7ac8d6537604dccbb35d52aa Mon Sep 17 00:00:00 2001 From: Tim Zandbergen Date: Mon, 6 Jan 2025 17:44:57 +0100 Subject: [PATCH 18/21] Removed English translations If there is no translation available for a word, the system defaults to English. Removed the translation of the license part for legal reasons. --- src/lang/th_TH.lang.php | 465 ---------------------------------------- 1 file changed, 465 deletions(-) diff --git a/src/lang/th_TH.lang.php b/src/lang/th_TH.lang.php index 8d115dc8..fb692d46 100644 --- a/src/lang/th_TH.lang.php +++ b/src/lang/th_TH.lang.php @@ -17,23 +17,6 @@ * * You should have received a copy of the GNU General Public License * along with PHP Server Monitor. If not, see . - - * PHP Server Monitor - * ตรวจสอบเซิร์ฟเวอร์และเว็บไซต์ของคุณ - * - * ไฟล์นี้เป็นส่วนหนึ่งของ PHP Server Monitor - * PHP Server Monitor เป็นซอฟต์แวร์ฟรี: คุณสามารถเผยแพร่ซ้ำและ/หรือแก้ไข - * ได้ภายใต้เงื่อนไขของใบอนุญาตสาธารณะทั่วไป GNU ซึ่งเผยแพร่โดย - * มูลนิธิซอฟต์แวร์เสรี ไม่ว่าจะเป็นใบอนุญาตเวอร์ชัน 3 หรือ - * (ตามตัวเลือกของคุณ) เวอร์ชันที่ใหม่กว่า - * - * PHP Server Monitor เผยแพร่ด้วยความหวังว่าจะเป็นประโยชน์ - * แต่ไม่มีการรับประกันใดๆ ทั้งสิ้น ไม่แม้แต่การรับประกันโดยนัยว่า - * สามารถขายได้หรือเหมาะสมสำหรับจุดประสงค์เฉพาะ ดู - * ใบอนุญาตสาธารณะทั่วไป GNU สำหรับรายละเอียดเพิ่มเติม - * - * คุณควรได้รับสำเนาใบอนุญาตสาธารณะทั่วไป GNU - * พร้อมกับ PHP Server Monitor หากไม่ได้รับ โปรดดูที่ * * @package phpservermon * @author Pepijn Over @@ -129,8 +112,6 @@ $sm_lang = array( 'email' => 'อีเมล', 'pushover' => 'Pushover', 'pushover_description' => 'Pushover เป็นบริการที่ช่วยให้รับการแจ้งเตือนแบบเรียลไทม์ได้อย่างง่ายดาย ดูข้อมูลเพิ่มเติมได้ที่ เว็บไซต์', - 'pushover_key' => 'Pushover Key', - 'pushover_device' => 'Pushover Device', 'pushover_device_description' => 'ชื่ออุปกรณ์ที่จะส่งข้อความถึง ปล่อยว่างไว้หากต้องการส่งไปยังอุปกรณ์ทั้งหมด.', 'discord' => 'Discord', 'discord_label' => 'Discord', @@ -140,452 +121,6 @@ $sm_lang = array( 'telegram_chat_id' => 'Telegram chat id', 'telegram_chat_id_description' => 'ข้อความจะถูกส่งไปยังห้องแชทที่เกี่ยวข้อง', 'telegram_get_chat_id' => 'คลิกที่นี่เพื่อรับ chat id ของคุณ', - 'activate_telegram' => 'Activate Telegram notifications', 'activate_telegram_description' => 'อนุญาตให้ส่งการแจ้งเตือนของ Telegram ไปยัง ID แชทที่ระบุ หากไม่ได้รับอนุญาต Telegram จะไม่อนุญาตให้เราส่งการแจ้งเตือนถึงคุณ', - 'telegram_bot_username_found' => 'The bot was found!

This will open a chat with the bot. Here you need to press start or type /start.', - 'telegram_bot_username_error_token' => '401 - Unauthorized. Please make sure that the API token is valid.', - 'telegram_bot_error' => 'An error has occurred while activating Telegram notification: %s', - 'jabber' => 'Jabber', - 'jabber_label' => 'Jabber', - 'jabber_description' => 'You Jabber account', - 'webhook' => 'Webhook', - 'webhook_description' => 'Send a json webhook to a certain endpoint.', - 'webhook_url' => 'Webhook Url', - 'webhook_url_description' => 'Webhook public endpoint url, should start with https://.', - 'webhook_json' => 'Webhook JSON', - 'webhook_json_description' => 'Define a custom json, e.g. {"username": "servermon: #server_label" "text": "#server_ip is **#status**"}.
Available variables: #message, #server_error, #server_ip, #server_label, #server_last_offline_duration and #status', - 'delete_title' => 'Delete User', - 'delete_message' => 'Are you sure you want to delete user \'%1\'?', - 'deleted' => 'User deleted.', - 'updated' => 'User updated.', - 'inserted' => 'User added.', - 'profile' => 'Profile', - 'profile_updated' => 'Your profile has been updated.', - 'error_user_name_bad_length' => 'Usernames must be between 2 and 64 characters.', - 'error_user_name_invalid' => 'The username may only contain alphabetic characters (a-z, A-Z), digits (0-9), dots (.) and underscores (_).', - 'error_user_name_exists' => 'The given username already exists in the database.', - 'error_user_email_bad_length' => 'Email addresses must be between 5 and 255 characters.', - 'error_user_email_invalid' => 'The email address is invalid.', - 'error_user_level_invalid' => 'The given user level is invalid.', - 'error_user_no_match' => 'The user could not be found in the database.', - 'error_user_password_invalid' => 'The entered password is invalid.', - 'error_user_password_no_match' => 'The entered passwords do not match.', - 'error_user_admin_cant_be_deleted' => 'You can\'t remove the last administrator.', - 'error_user_cant_be_anonymous' => 'Only user \'__public__\' can have the level anonymous.' - ), - 'log' => array( - 'title' => 'Log entries', - 'type' => 'Type', - 'status' => 'Status', - 'email' => 'Email', - 'sms' => 'SMS', - 'discord' => 'Discord', - 'pushover' => 'Pushover', - 'webhook' => 'Webhook', - 'telegram' => 'Telegram', - 'jabber' => 'Jabber', - 'no_logs' => 'No logs', - 'clear' => 'Clear log', - 'delete_title' => 'Delete log', - 'delete_message' => 'Are you sure you want to delete all logs?', - ), - 'servers' => array( - 'server' => 'Server', - 'status' => 'Status', - 'label' => 'Label', - 'domain' => 'Domain/IP', - 'timeout' => 'Timeout', - 'timeout_description' => 'Number of seconds to wait for the server to respond.', - 'authentication_settings' => 'Authentication Settings', - 'optional' => 'Optional', - 'website_username' => 'Username', - 'website_username_description' => 'Username to access the site. (Only Apache authentication is supported.)', - 'website_password' => 'Password', - 'website_password_description' => 'Password to access the site. The password is encrypted in the database.', - 'fieldset_monitoring' => 'Monitoring', - 'fieldset_permissions' => 'Permissions', - 'permissions' => 'Server will be visible for the following users', - 'port' => 'Port', - 'custom_port' => 'Custom Port', - 'popular_ports' => 'Popular Ports', - 'request_method' => 'Request method', - 'custom_request_method' => 'Custom request method', - 'popular_request_methods' => 'Popular request methods', - 'post_field' => 'Post field', - 'post_field_description' => 'The data that will be send using the request method above.', - 'please_select' => 'Please select', - 'type' => 'Type', - 'type_website' => 'Website', - 'type_service' => 'Service', - 'type_ping' => 'Ping', - 'pattern' => 'Search string/pattern', - 'pattern_description' => 'If this pattern is not found on the website, the server will be marked online/offline. Regular expressions are allowed.', - 'pattern_online' => 'Pattern indicates website is', - 'pattern_online_description' => 'Online: If this pattern was found on the website, the server will be marked online. Offline: If this pattern was not found on the website, the server will be marked offline.', - 'redirect_check' => 'Redirecting to another domain is', - 'redirect_check_description' => 'Redirect to another domain is usually a bad sign.', - 'allow_http_status' => 'Allow HTTP status code', - 'allow_http_status_description' => 'Mark website as online. HTTP Status codes lower then 400 are marked as online by default. Seperate with |.', - 'header_name' => 'Header name', - 'header_value' => 'Header value', - 'header_name_description' => 'Case-sensitive.', - 'header_value_description' => 'Regular expressions are allowed.', - 'last_check' => 'Last check', - 'last_online' => 'Last online', - 'last_offline' => 'Last offline', - 'last_output' => 'Last positive output', - 'last_error' => 'Last error', - 'last_error_output' => 'Last error output', - 'output' => 'Output', - 'monitoring' => 'Monitoring', - 'no_monitoring' => 'No monitoring', - 'email' => 'Email', - 'send_email' => 'Send Email', - 'sms' => 'SMS', - 'send_sms' => 'Send SMS', - 'discord' => 'Discord', - 'send_discord' => 'Send Discord notification', - 'webhook' => 'Webhook', - 'send_webhook' => 'Send Webhook notification', - 'pushover' => 'Pushover', - 'send_pushover' => 'Send Pushover notification', - 'telegram' => 'Telegram', - 'send_telegram' => 'Send Telegram notification', - 'jabber' => 'Jabber', - 'send_jabber' => 'Send Jabber notification', - 'users' => 'Users', - 'delete_title' => 'Delete server', - 'delete_message' => 'Are you sure you want to delete server \'%1\'?', - 'deleted' => 'Server deleted.', - 'updated' => 'Server updated.', - 'inserted' => 'Server added.', - 'latency' => 'Latency', - 'latency_max' => 'Latency (maximum)', - 'latency_min' => 'Latency (minimum)', - 'latency_avg' => 'Latency (average)', - 'online' => 'online', - 'offline' => 'offline', - 'uptime' => 'Uptime', - 'year' => 'Year', - 'month' => 'Month', - 'week' => 'Week', - 'day' => 'Day', - 'hour' => 'Hour', - 'warning_threshold' => 'Warning threshold', - 'warning_threshold_description' => 'Number of failed checks required before it is marked offline.', - 'ssl_cert_expiry_days' => 'SSL Certificate Validity', - 'ssl_cert_expiry_days_description' => 'The minimum remaining days the SSL certificate is still valid. Use 0 to disable check.', - 'ssl_cert_expired' => 'SSL certificate expired since', - 'ssl_cert_expiring' => 'SSL certificate expiring:', - 'chart_last_week' => 'Last week', - 'chart_history' => 'History', - 'chart_day_format' => '%Y-%m-%d', - 'chart_long_date_format' => '%Y-%m-%d %H:%M:%S', - 'chart_short_date_format' => '%m/%d %H:%M', - 'chart_short_time_format' => '%H:%M', - 'warning_notifications_disabled_sms' => 'SMS notifications are disabled.', - 'warning_notifications_disabled_email' => 'Email notifications are disabled.', - 'warning_notifications_disabled_discord' => 'Discord notifications are disabled.', - 'warning_notifications_disabled_webhook' => 'Webhook notifications are disabled.', - 'warning_notifications_disabled_pushover' => 'Pushover notifications are disabled.', - 'warning_notifications_disabled_telegram' => 'Telegram notifications are disabled.', - 'warning_notifications_disabled_jabber' => 'Jabber notifications are disabled.', - 'error_server_no_match' => 'Server not found.', - 'error_server_label_bad_length' => 'The label must be between 1 and 255 characters.', - 'error_server_ip_bad_length' => 'The domain / IP must be between 1 and 255 characters.', - 'error_server_ip_bad_service' => 'The IP address is not valid.', - 'error_server_ip_bad_website' => 'The website URL is not valid.', - 'error_server_type_invalid' => 'The selected server type is invalid.', - 'error_server_warning_threshold_invalid' => 'The warning threshold must be a valid integer greater than 0.', - 'error_server_ssl_cert_expiry_days' => 'The remaining days for SSL certificate validity must be a valid integer greater than or equal to 0.', - ), - 'config' => array( - 'general' => 'General', - 'site_title' => 'Site title', - 'language' => 'Language', - 'show_update' => 'Check for updates?', - 'password_encrypt_key' => 'The encryption key password', - 'password_encrypt_key_note' => 'This key is used to encrypt passwords that are stored on servers for access to websites. If the key will change the stored password is invalid!', - 'proxy' => 'Enable proxy', - 'proxy_url' => 'Proxy URL', - 'proxy_user' => 'Proxy username', - 'proxy_password' => 'Proxy password', - 'email_status' => 'Allow sending email', - 'email_add_url' => 'Add url to the monitor in email', - 'email_from_email' => 'Email from address', - 'email_from_name' => 'Email from name', - 'email_smtp' => 'Enable SMTP', - 'email_smtp_host' => 'SMTP host', - 'email_smtp_port' => 'SMTP port', - 'email_smtp_security' => 'SMTP security', - 'email_smtp_security_none' => 'None', - 'email_smtp_username' => 'SMTP username', - 'email_smtp_password' => 'SMTP password', - 'email_smtp_noauth' => 'Leave blank for no authentication', - 'sms_status' => 'Allow sending text messages', - 'sms_gateway' => 'Gateway to use for sending messages', - 'sms_gateway_username' => 'Gateway username', - 'sms_gateway_password' => 'Gateway password', - 'sms_from' => 'Sender\'s phone number', - 'discord_status' => 'Allow sending Discord messages', - 'discord_description' => 'Discord is a service that makes it easy to get real-time notifications. See their website for more info.', - 'webhook_status' => 'Allow sending webhooks', - 'webhook_description' => 'Allow sending webhooks to services like slack. The message payload end endpoint are defined in the profile settings.', - 'webhook_url' => 'Webhook Url', - 'webhook_url_description' => 'Url to webhook endpoint', - 'webhook_json' => 'Webhook Json', - 'webhook_json_description' => 'Define a custom json. Available variables: #message, #server_error, #server_ip, #server_label, #server_last_offline_duration and #status', - 'pushover_status' => 'Allow sending Pushover messages', - 'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See their website for more info.', - 'pushover_clone_app' => 'Click here to create your Pushover app', - 'pushover_api_token' => 'Pushover App API Token', - 'pushover_api_token_description' => 'Before you can use Pushover, you need to register an App at their website and enter the App API Token here.', - 'telegram_status' => 'Allow sending Telegram messages', - 'telegram_add_url' => 'Add url to the monitor in the message', - 'telegram_description' => 'Telegram is a chat app that makes it easy to get real-time notifications. Visit the documentation for more info and an install guide.', - 'telegram_api_token' => 'Telegram API Token', - 'telegram_api_token_description' => 'Before you can use Telegram, you need to get a API token. Visit the documentation for help.', - 'jabber_status' => 'Allow sending Jabber (XMPP) messages', - 'jabber_description' => 'Visit the documentation for more info and an install guide.', - 'jabber_host' => 'Host', - 'jabber_host_description' => 'Host of your Jabber account provider. For Google Account use talk.google.com.', - 'jabber_port' => 'Port', - 'jabber_port_description' => 'Port of your Jabber provider. Default 5222. For Google Account use 5223.', - 'jabber_username' => 'Username', - 'jabber_username_description' => 'For Google Account use incl. domain so for example example@google.com.', - 'jabber_domain' => 'Domain', - 'jabber_domain_description' => 'Domain of your Jabber provider. Left empty for Google Account.', - 'jabber_password' => 'Password', - 'jabber_password_description' => 'Fill only to set or change.', - 'jabber_check' => 'Check your Jabber account if message was received.', - 'dirauth_status' => 'Authenticate with directory service', - 'authdir_host_locn' => 'Directory host', - 'authdir_host_port' => 'Directory port', - 'authdir_type' => 'Service type', - 'authdir_type_description' => 'OpenLDAP: Directory is an OpenLDAP service.
AD - DS: Directory is an Active Directory Domain Service.
AD - LDS: Directory is an Active Directory Lightweight Directory - Service.', - 'authdir_type_openldap' => 'OpenLDAP', - 'authdir_type_adds' => 'AD DS', - 'authdir_type_adlds' => 'AD LDS', - 'authdir_userdomain' => 'Active Directory domain', - 'authdir_userdomain_description' => 'User domain for Active Directory. This is typically the NETBIOS domain - for AD DS and the DNS domain for AD LDS. Not used for OpenLDAP - directories.', - 'authdir_ldapver' => 'LDAP protocol version', - 'authdir_ldapver_description' => 'Version of the LDAP specification. This is typically Version 3 (default). - Version 2 was deprecated in 2003 (RFC3494).', - 'authdir_ldapfollowref' => 'Follow referrals', - 'authdir_ldapfollowref_description' => 'Follow referrals if the specified server refers to another server for - the required information. Leave unchecked if you are unaware of this - functionality.', - 'authdir_basedn' => 'Base DN*', - 'authdir_basedn_description' => 'Base distinguished name (DN) of the directory service. E.g., - dc=domain,dc=tld. This is a required field.', - 'authdir_usernameattrib' => 'Username attribute', - 'authdir_usernameattrib_description' => 'Attribute used by the directory service to refer to the username of - the user.', - 'authdir_groupnameattrib' => 'Group name attribute', - 'authdir_groupnameattrib_description' => 'Attribute used by the directory service to refer to the group name - of a group. This is used to check for group membership.', - 'authdir_groupmemattrib' => 'Group member attribute', - 'authdir_groupmemattrib_description' => 'Attribute used by the directory service to refer to the group(s) of - which the user is a member. This is used to check for group - membership.', - 'authdir_usercontainerrdn' => 'User container RDN', - 'authdir_usercontainerrdn_description' => 'Relative distinguished name of the users container in the - directory. E.g., ou=Users', - 'authdir_groupcontainerrdn' => 'Group container RDN', - 'authdir_groupcontainerrdn_description' => 'Relative distinguished name of the groups container in the - directory. E.g., ou=Groups', - 'authdir_groupname' => 'Authorised directory group', - 'authdir_groupname_description' => 'Directory group authorised to access application. Directory users not - members of this group will not be authenticated (currently not available - for AD).', - 'authdir_defaultrole' => 'Default role', - 'authdir_defaultrole_description' => 'Default role to be assigned to users logging in for the first time.', - 'alert_type' => 'Select when you\'d like to be notified.', - 'alert_type_description' => 'Status change: You will receive a notification when a server has a change in status. So from online -> offline or offline -> online.

Offline: You will receive a notification when a server goes offline for the *FIRST TIME ONLY*. For example, your cronjob is every 15 minutes and your server goes down at 1 am and stays down till 6 am. You will get 1 notification at 1 am and that\'s it.

Always: You will receive a notification every time the script runs and a site is down, even if the site has been offline for hours.', - 'alert_type_status' => 'Status change', - 'alert_type_offline' => 'Offline', - 'alert_type_always' => 'Always', - 'combine_notifications' => 'Combine notifications', - 'combine_notifications_description' => 'Reduces the amount of notification by combining the notifications into 1 single notification. (This does not affect SMS notifications.)', - 'alert_proxy' => 'Even if enabled, proxy is never used for services', - 'alert_proxy_url' => 'Format: host:port', - 'log_status' => 'Log status', - 'log_status_description' => 'If log status is set to TRUE, the monitor will log the event whenever the notification settings are passed.', - 'log_email' => 'Log emails sent by the script', - 'log_sms' => 'Log text messages sent by the script', - 'log_discord' => 'Log Discord messages sent by the script', - 'log_pushover' => 'Log pushover messages sent by the script', - 'log_webhook' => 'Log webhook messages sent by the script', - 'log_telegram' => 'Log Telegram messages sent by the script', - 'log_jabber' => 'Log Jabber messages sent by the script', - 'updated' => 'The configuration has been updated.', - 'tab_email' => 'Email', - 'tab_sms' => 'SMS', - 'tab_discord' => 'Discord', - 'tab_pushover' => 'Pushover', - 'tab_webhook' => 'Webhook', - 'tab_telegram' => 'Telegram', - 'tab_jabber' => 'Jabber', - 'tab_auth' => 'Authentication', - 'settings_email' => 'Email settings', - 'settings_sms' => 'Text message settings', - 'settings_discord' => 'Discord settings', - 'settings_pushover' => 'Pushover settings', - 'settings_webhook' => 'Webhook settings', - 'settings_telegram' => 'Telegram settings', - 'settings_jabber' => 'Jabber settings', - 'settings_notification' => 'Notification settings', - 'settings_log' => 'Log settings', - 'settings_proxy' => 'Proxy settings', - 'settings_dirauth' => 'LDAP settings', - 'auto_refresh' => 'Auto-refresh', - 'auto_refresh_description' => 'Auto-refresh servers page.
Time in seconds, if 0 the page won\'t refresh.', - 'test' => 'Test', - 'test_email' => 'An email will be sent to the address 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_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.', - 'send' => 'Send', - 'test_subject' => 'Test', - 'test_message' => 'Test message', - 'email_sent' => 'Email sent', - 'email_error' => 'Error in email sending', - 'sms_sent' => 'SMS sent', - 'sms_error' => 'An error has occurred while sending the SMS: %s', - 'sms_error_nomobile' => 'Unable to send test SMS: no valid phone number found in your profile.', - 'discord_sent' => 'Discord notification sent', - 'discord_error' => 'An error has occurred while sending the Discord notification: %s', - 'discord_error_nowebhook' => 'Unable to send test Discord notification: no valid Discord webhook found in your user profile.', - 'webhook_sent' => 'Webhook notification sent', - 'webhook_error' => 'An error has occurred while sending the webhook notification: %s', - 'webhook_error_nourl' => 'Unable to send test notification: no url found in user profile.', - 'webhook_error_nojson' => 'Unable to send test notification: no json found in user profile.', - 'pushover_sent' => 'Pushover notification sent', - 'pushover_error' => 'An error has occurred while sending the Pushover notification: %s', - 'pushover_error_noapp' => 'Unable to send test notification: no Pushover App API token found in the global configuration.', - 'pushover_error_nokey' => 'Unable to send test notification: no Pushover key found in your profile.', - 'telegram_sent' => 'Telegram notification sent', - 'telegram_error' => 'An error has occurred while sending the Telegram notification: %s', - 'telegram_error_notoken' => 'Unable to send test notification: no Telegram API token found in the global configuration.', - 'telegram_error_noid' => 'Unable to send test notification: no chat id found in your profile.', - 'jabber_sent' => 'Jabber notification sent', - 'jabber_error' => 'An error has occurred while sending the Jabber notification: %s', - 'jabber_error_noconfig' => 'Unable to send test notification: no Jabber account set in the global configuration.', - 'jabber_error_noaccount' => 'Unable to send test notification: no Jabber account found in your profile.', - 'log_retention_period' => 'Log retention period', - 'log_retention_period_description' => 'Number of days to keep logs of notifications and archives of server uptime. Enter 0 to disable log cleanup.', - 'log_retention_days' => 'days', - 'user_agent' => 'User Agent', - 'user_agent_key_note' => 'Custom user agent used by monitor within communication with external services.', - ), - 'notifications' => array( - 'off_sms' => 'Server \'%LABEL%\' is DOWN: ip=%IP%, port=%PORT%. Error=%ERROR%', - 'off_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is DOWN', - 'off_email_body' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', - 'off_discord_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', - 'off_webhook_title' => 'Server \'%LABEL%\' is DOWN', - 'off_webhook_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: - %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', - 'off_pushover_title' => 'Server \'%LABEL%\' is DOWN', - 'off_pushover_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', - 'off_telegram_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', - 'off_jabber_message' => 'Failed to connect to the following server:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Error: %ERROR%
Date: %DATE%', - 'on_sms' => 'Server \'%LABEL%\' is RUNNING: ip=%IP%, port=%PORT%, it was down for %LAST_OFFLINE_DURATION%', - 'on_email_subject' => 'IMPORTANT: Server \'%LABEL%\' is RUNNING', - 'on_email_body' => 'Server \'%LABEL%\' is running again, it was down for - %LAST_OFFLINE_DURATION%:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: - %DATE%', - 'on_discord_message' => 'Server \'%LABEL%\' is running again, it was down for: - %LAST_OFFLINE_DURATION%

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: %DATE%', - 'on_webhook_title' => 'Server \'%LABEL%\' is RUNNING', - 'on_webhook_message' => 'Server \'%LABEL%\' is running again, it was down for - %LAST_OFFLINE_DURATION%:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: - %DATE%', - 'on_pushover_title' => 'Server \'%LABEL%\' is RUNNING', - 'on_pushover_message' => 'Server \'%LABEL%\' is running again, it was down for - %LAST_OFFLINE_DURATION%:

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: - %DATE%', - 'on_telegram_message' => 'Server \'%LABEL%\' is running again, it was down for: - %LAST_OFFLINE_DURATION%

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: - %DATE%', - 'on_jabber_message' => 'Server \'%LABEL%\' is running again, it was down for: - %LAST_OFFLINE_DURATION%

Server: %LABEL%
IP: %IP%
Port: %PORT%
Date: - %DATE%', - 'combi_off_email_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: %PORT%
  • Error: - %ERROR%
  • Date: %DATE%
', - 'combi_off_discord_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- Error: %ERROR%
- - Date: %DATE%

', - 'combi_off_webhook_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: %PORT%
  • Error: - %ERROR%
  • Date: %DATE%
', - 'combi_off_pushover_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: %PORT%
  • Error: - %ERROR%
  • Date: %DATE%
', - 'combi_off_telegram_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- Error: %ERROR%
- - Date: %DATE%

', - 'combi_off_jabber_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- Error: %ERROR%
- - Date: %DATE%

', - 'combi_on_email_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: %PORT%
  • Downtime: - %LAST_OFFLINE_DURATION%
  • Date: %DATE%
', - 'combi_on_webhook_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: - %PORT%
  • Downtime: %LAST_OFFLINE_DURATION%
  • Date: - %DATE%
', - 'combi_on_discord_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- - Downtime: %LAST_OFFLINE_DURATION%
- Date: %DATE%

', - 'combi_on_pushover_message' => '
  • Server: %LABEL%
  • IP: %IP%
  • Port: - %PORT%
  • Downtime: %LAST_OFFLINE_DURATION%
  • Date: - %DATE%
', - 'combi_on_telegram_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- Downtime: - %LAST_OFFLINE_DURATION%
- Date: %DATE%

', - 'combi_on_jabber_message' => '- Server: %LABEL%
- IP: %IP%
- Port: %PORT%
- Downtime: - %LAST_OFFLINE_DURATION%
- Date: %DATE%

', - 'combi_email_subject' => 'IMPORTANT: \'%UP%\' servers UP again, \'%DOWN%\' servers DOWN', - 'combi_webhook_subject' => '\'%UP%\' servers UP again, \'%DOWN%\' servers DOWN', - 'combi_pushover_subject' => '\'%UP%\' servers UP again, \'%DOWN%\' servers DOWN', - 'combi_email_message' => 'The following servers went down:
%DOWN_SERVERS%
The following - servers are up again:
%UP_SERVERS%', - 'combi_discord_message' => 'The following servers went down:
%DOWN_SERVERS%
The following - servers are up again:
%UP_SERVERS%', - 'combi_webhook_message' => 'The following servers went down:
%DOWN_SERVERS%
The following - servers are up again:
%UP_SERVERS%', - 'combi_pushover_message' => 'The following servers went down:
%DOWN_SERVERS%
The following - servers are up again:
%UP_SERVERS%', - 'combi_telegram_message' => 'The following servers went down:
%DOWN_SERVERS%
The following - servers are up again:
%UP_SERVERS%', - 'combi_jabber_message' => 'The following servers went down:
%DOWN_SERVERS%
The following - servers are up again:
%UP_SERVERS%', - ), - 'login' => array( - 'welcome_usermenu' => 'Welcome, %user_name%', - 'title_sign_in' => 'Please sign in', - 'title_forgot' => 'Forgot your password?', - 'title_reset' => 'Reset your password', - 'submit' => 'Submit', - 'remember_me' => 'Remember me', - 'login' => 'Login', - 'logout' => 'Logout', - 'username' => 'Username', - 'password' => 'Password', - 'password_repeat' => 'Repeat password', - 'password_forgot' => 'Forgot password?', - 'password_reset' => 'Reset password', - 'password_reset_email_subject' => 'Reset your password for PHP Server Monitor', - 'password_reset_email_body' => 'Please use the following link to reset your password. Please note it expires in 1 hour.

%link%', - 'error_user_incorrect' => 'The provided username could not be found.', - 'error_login_incorrect' => 'The information is incorrect.', - 'error_login_passwords_nomatch' => 'The provided passwords do not match.', - 'error_reset_invalid_link' => 'The reset link you provided is invalid.', - 'success_password_forgot' => 'An email has been sent to you with information how to reset your password.', - 'success_password_reset' => 'Your password has been reset successfully. Please login.', - ), - 'error' => array( - '401_unauthorized' => 'Unauthorized', - '401_unauthorized_description' => 'You do not have the privileges to view this page.', ), ); From 6eef9dc6ea116a1fcfece28008166ca1e23808dc Mon Sep 17 00:00:00 2001 From: Tim Zandbergen Date: Mon, 6 Jan 2025 18:14:55 +0100 Subject: [PATCH 19/21] Removed error message --- src/psm/Module/User/Controller/LoginController.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/psm/Module/User/Controller/LoginController.php b/src/psm/Module/User/Controller/LoginController.php index 4c50272d..ca62f587 100644 --- a/src/psm/Module/User/Controller/LoginController.php +++ b/src/psm/Module/User/Controller/LoginController.php @@ -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'); } } From 196881dd1fc5375e65c48cdf7e6df2a0048f1034 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 19:38:15 +0000 Subject: [PATCH 20/21] Bump paragonie/random_compat from 2.0.20 to 9.99.100 Bumps [paragonie/random_compat](https://github.com/paragonie/random_compat) from 2.0.20 to 9.99.100. - [Release notes](https://github.com/paragonie/random_compat/releases) - [Changelog](https://github.com/paragonie/random_compat/blob/master/CHANGELOG.md) - [Commits](https://github.com/paragonie/random_compat/compare/v2.0.20...v9.99.100) --- updated-dependencies: - dependency-name: paragonie/random_compat dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- composer.json | 2 +- composer.lock | 22 +++++++++------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/composer.json b/composer.json index 16f85a06..dea815af 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ "symfony/http-foundation": ">=3.4.35 ~3.4", "symfony/filesystem": "~3.4", "php-pushover/php-pushover": "dev-master", - "paragonie/random_compat": "^2.0", + "paragonie/random_compat": "^9.99", "twig/twig": "~1.35", "jaxl/jaxl": "^3.1", "viharm/psm-ldap-auth": "^1.1" diff --git a/composer.lock b/composer.lock index df41e743..7d7066fc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "71aa157e0edf3be693eb3e676c88ee5e", + "content-hash": "fea47a06785a33c2f4e0c9bc1b99f0f0", "packages": [ { "name": "jaxl/jaxl", @@ -142,33 +142,29 @@ }, { "name": "paragonie/random_compat", - "version": "v2.0.20", + "version": "v9.99.100", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "0f1f60250fccffeaf5dda91eea1c018aed1adc2a" + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/0f1f60250fccffeaf5dda91eea1c018aed1adc2a", - "reference": "0f1f60250fccffeaf5dda91eea1c018aed1adc2a", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", "shasum": "" }, "require": { - "php": ">=5.2.0" + "php": ">= 7" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*" + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" }, "suggest": { "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -192,7 +188,7 @@ "issues": "https://github.com/paragonie/random_compat/issues", "source": "https://github.com/paragonie/random_compat" }, - "time": "2021-04-17T09:33:01+00:00" + "time": "2020-10-15T08:29:30+00:00" }, { "name": "php-pushover/php-pushover", From aa23549a5b5b53295d8388c32135a74d4b90fcd8 Mon Sep 17 00:00:00 2001 From: Suthep Yonphimai Date: Tue, 7 Jan 2025 08:21:47 +0700 Subject: [PATCH 21/21] Update th_TH.lang.php correct some words --- src/lang/th_TH.lang.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lang/th_TH.lang.php b/src/lang/th_TH.lang.php index fb692d46..152b28a2 100644 --- a/src/lang/th_TH.lang.php +++ b/src/lang/th_TH.lang.php @@ -54,7 +54,7 @@ $sm_lang = array( 'back_to_top' => 'กลับไปยังด้านบน', 'go_back' => 'ถอยกลับ', 'ok' => 'ตกลง', - 'bad' => 'bad', + 'bad' => 'ล้มเหลว', 'cancel' => 'ยกเลิก', 'none' => 'ไม่มี', 'activate' => 'เปิดใช้งาน', @@ -75,8 +75,8 @@ $sm_lang = array( 'months' => 'เดือน', 'day' => 'วัน', 'days' => 'วัน', - 'hour' => 'ชั่วโฒง', - 'hours' => 'ชั่วโฒง', + 'hour' => 'ชั่วโมง', + 'hours' => 'ชั่วโมง', 'minute' => 'นาที', 'minutes' => 'นาที', 'second' => 'วินาที', @@ -99,7 +99,7 @@ $sm_lang = array( 'users' => array( 'user' => 'ผู้ใช้', 'name' => 'ชื่อ', - 'user_name' => 'ชื่อผู้ใช่', + 'user_name' => 'ชื่อผู้ใช้', 'password' => 'รหัสผ่าน', 'password_repeat' => 'รหัสผ่านอีกครั้ง', 'password_leave_blank' => 'ปล่อยว่างไว้เพื่อไม่ให้เปลี่ยนแปลง',