diff --git a/.gitignore b/.gitignore index e1c85147..94908f26 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ __MACOSX/ .DS_Store .buildpath .settings/ +.ddev/ diff --git a/.htaccess b/.htaccess index 1014e510..e4242dfd 100644 --- a/.htaccess +++ b/.htaccess @@ -18,3 +18,9 @@ AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript + +#Rule to avoid some characters in urls +RewriteEngine on +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^(.+[a-zàâäéèêëîïôöûüA-Z0-9-\-\'\$\*\µ\§\£\€\:\(\)\,\;\.\!\<\^\{\}\°]+)$ ?mod=consult&action=view&ip=$1 [QSA,L] diff --git a/composer.lock b/composer.lock index 1ffbcc76..0f3f0122 100644 --- a/composer.lock +++ b/composer.lock @@ -81,16 +81,16 @@ }, { "name": "paragonie/random_compat", - "version": "v2.0.18", + "version": "v2.0.19", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db" + "reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db", - "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/446fc9faa5c2a9ddf65eb7121c0af7e857295241", + "reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241", "shasum": "" }, "require": { @@ -126,7 +126,7 @@ "pseudorandom", "random" ], - "time": "2019-01-03T20:59:08+00:00" + "time": "2020-10-15T10:06:57+00:00" }, { "name": "php-pushover/php-pushover", @@ -160,21 +160,22 @@ }, { "name": "phpmailer/phpmailer", - "version": "v6.1.3", + "version": "v6.1.8", "source": { "type": "git", "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "a25ae38e03de4ee4031725498a600012364787c7" + "reference": "917ab212fa00dc6eacbb26e8bc387ebe40993bc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a25ae38e03de4ee4031725498a600012364787c7", - "reference": "a25ae38e03de4ee4031725498a600012364787c7", + "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/917ab212fa00dc6eacbb26e8bc387ebe40993bc1", + "reference": "917ab212fa00dc6eacbb26e8bc387ebe40993bc1", "shasum": "" }, "require": { "ext-ctype": "*", "ext-filter": "*", + "ext-hash": "*", "php": ">=5.5.0" }, "require-dev": { @@ -218,7 +219,13 @@ } ], "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "time": "2019-11-21T09:37:46+00:00" + "funding": [ + { + "url": "https://github.com/synchro", + "type": "github" + } + ], + "time": "2020-10-09T14:55:58+00:00" }, { "name": "psr/container", @@ -271,16 +278,16 @@ }, { "name": "symfony/config", - "version": "v3.4.36", + "version": "v3.4.46", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "a599a867d0e4a07c342b5f1e656b3915a540ddbe" + "reference": "bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/a599a867d0e4a07c342b5f1e656b3915a540ddbe", - "reference": "a599a867d0e4a07c342b5f1e656b3915a540ddbe", + "url": "https://api.github.com/repos/symfony/config/zipball/bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f", + "reference": "bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f", "shasum": "" }, "require": { @@ -302,11 +309,6 @@ "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Config\\": "" @@ -331,20 +333,34 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-12-01T10:45:41+00:00" + "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" }, { "name": "symfony/dependency-injection", - "version": "v3.4.36", + "version": "v3.4.46", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "0d201916bfb3af939fec3c0c8815ea16c60ac1a2" + "reference": "51d2a2708c6ceadad84393f8581df1dcf9e5e84b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/0d201916bfb3af939fec3c0c8815ea16c60ac1a2", - "reference": "0d201916bfb3af939fec3c0c8815ea16c60ac1a2", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/51d2a2708c6ceadad84393f8581df1dcf9e5e84b", + "reference": "51d2a2708c6ceadad84393f8581df1dcf9e5e84b", "shasum": "" }, "require": { @@ -373,11 +389,6 @@ "symfony/yaml": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" @@ -402,20 +413,34 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2019-12-01T08:33:36+00:00" + "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" }, { "name": "symfony/event-dispatcher", - "version": "v3.4.36", + "version": "v3.4.46", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "f9031c22ec127d4a2450760f81a8677fe8a10177" + "reference": "31fde73757b6bad247c54597beef974919ec6860" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f9031c22ec127d4a2450760f81a8677fe8a10177", - "reference": "f9031c22ec127d4a2450760f81a8677fe8a10177", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/31fde73757b6bad247c54597beef974919ec6860", + "reference": "31fde73757b6bad247c54597beef974919ec6860", "shasum": "" }, "require": { @@ -427,6 +452,7 @@ "require-dev": { "psr/log": "~1.0", "symfony/config": "~2.8|~3.0|~4.0", + "symfony/debug": "~3.4|~4.4", "symfony/dependency-injection": "~3.3|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/stopwatch": "~2.8|~3.0|~4.0" @@ -436,11 +462,6 @@ "symfony/http-kernel": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" @@ -465,20 +486,34 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-10-24T15:33:53+00:00" + "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" }, { "name": "symfony/filesystem", - "version": "v3.4.36", + "version": "v3.4.46", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "00cdad0936d06fab136944bc2342b762b1c3a4a2" + "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/00cdad0936d06fab136944bc2342b762b1c3a4a2", - "reference": "00cdad0936d06fab136944bc2342b762b1c3a4a2", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/e58d7841cddfed6e846829040dca2cca0ebbbbb3", + "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3", "shasum": "" }, "require": { @@ -486,11 +521,6 @@ "symfony/polyfill-ctype": "~1.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Filesystem\\": "" @@ -515,20 +545,34 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2019-11-25T16:36:22+00:00" + "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" }, { "name": "symfony/http-foundation", - "version": "v3.4.36", + "version": "v3.4.46", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "d2d0cfe8e319d9df44c4cca570710fcf221d4593" + "reference": "b9885fcce6fe494201da4f70a9309770e9d13dc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d2d0cfe8e319d9df44c4cca570710fcf221d4593", - "reference": "d2d0cfe8e319d9df44c4cca570710fcf221d4593", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b9885fcce6fe494201da4f70a9309770e9d13dc8", + "reference": "b9885fcce6fe494201da4f70a9309770e9d13dc8", "shasum": "" }, "require": { @@ -540,11 +584,6 @@ "symfony/expression-language": "~2.8|~3.0|~4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" @@ -569,24 +608,38 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2019-11-28T12:52:59+00:00" + "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" }, { "name": "symfony/polyfill-ctype", - "version": "v1.13.1", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "suggest": { "ext-ctype": "For best performance" @@ -594,7 +647,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -627,24 +684,38 @@ "polyfill", "portable" ], - "time": "2019-11-27T13:56:44+00:00" + "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-23T14:02:19+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.13.1", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "suggest": { "ext-mbstring": "For best performance" @@ -652,7 +723,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { @@ -686,42 +761,48 @@ "portable", "shim" ], - "time": "2019-11-27T14:18:11+00:00" + "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-23T14:02:19+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.13.1", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "af23c7bb26a73b850840823662dda371484926c4" + "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/af23c7bb26a73b850840823662dda371484926c4", - "reference": "af23c7bb26a73b850840823662dda371484926c4", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", + "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99", - "php": ">=5.3.3" + "php": ">=7.1" }, - "type": "library", + "type": "metapackage", "extra": { "branch-alias": { - "dev-master": "1.13-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" + "dev-main": "1.20-dev" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -745,35 +826,48 @@ "portable", "shim" ], - "time": "2019-11-27T13:56:44+00:00" + "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-23T14:02:19+00:00" }, { "name": "twig/twig", - "version": "v1.42.4", + "version": "v1.44.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "e587180584c3d2d6cb864a0454e777bb6dcb6152" + "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/e587180584c3d2d6cb864a0454e777bb6dcb6152", - "reference": "e587180584c3d2d6cb864a0454e777bb6dcb6152", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/04b15d4c0bb18ddbf82626320ac07f6a73f199c9", + "reference": "04b15d4c0bb18ddbf82626320ac07f6a73f199c9", "shasum": "" }, "require": { - "php": ">=5.5.0", + "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "psr/container": "^1.0", - "symfony/debug": "^3.4|^4.2", - "symfony/phpunit-bridge": "^4.4@dev|^5.0" + "symfony/phpunit-bridge": "^4.4.9|^5.0.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.42-dev" + "dev-master": "1.44-dev" } }, "autoload": { @@ -797,7 +891,6 @@ }, { "name": "Twig Team", - "homepage": "https://twig.symfony.com/contributors", "role": "Contributors" }, { @@ -811,7 +904,17 @@ "keywords": [ "templating" ], - "time": "2019-11-11T16:49:32+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2020-10-27T19:22:48+00:00" } ], "packages-dev": [], @@ -828,5 +931,6 @@ "ext-pdo": "*", "ext-xml": "*" }, - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "1.1.0" } diff --git a/src/config/services.xml b/src/config/services.xml index 43446dcd..b1958bae 100644 --- a/src/config/services.xml +++ b/src/config/services.xml @@ -12,6 +12,7 @@ xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/sc module.server module.user module.install + module.consult PSM_PATH_SRC @@ -31,6 +32,7 @@ xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/sc + diff --git a/src/lang/fr_FR.lang.php b/src/lang/fr_FR.lang.php index 12ca83bc..29583ebd 100644 --- a/src/lang/fr_FR.lang.php +++ b/src/lang/fr_FR.lang.php @@ -34,295 +34,299 @@ $sm_lang = array( '1' => 'fr_FR', '2' => 'french', ), + 'openscop' => array( + 'title' => 'Openscop', + 'consult_title' => 'Disponibilité de service' + ), 'locale_tag' => 'fr', 'locale_dir' => 'ltr', 'system' => array( - 'title' => 'Server Monitor', - 'install' => 'Installer', - 'action' => 'Action', - 'save' => 'Enregistrer', - 'edit' => 'Editer', - 'delete' => 'Supprimer', - 'view' => 'Détails', - 'date' => 'Date', - 'message' => 'Message', - 'yes' => 'Oui', - 'no' => 'Non', - 'insert' => 'Nouveau', - 'add_new' => 'Nouveau', - 'update_available' => 'Une nouvelle version ({version}) est disponible à l\'adresse 'Server Monitor', + 'install' => 'Installer', + 'action' => 'Action', + 'save' => 'Enregistrer', + 'edit' => 'Editer', + 'delete' => 'Supprimer', + 'view' => 'Détails', + 'date' => 'Date', + 'message' => 'Message', + 'yes' => 'Oui', + 'no' => 'Non', + 'insert' => 'Nouveau', + 'add_new' => 'Nouveau', + 'update_available' => 'Une nouvelle version ({version}) est disponible à l\'adresse http://www.phpservermonitor.org.', - 'back_to_top' => 'Haut de page', - 'go_back' => 'Retour', - 'ok' => 'OK', - 'bad' => 'mauvais', - 'cancel' => 'Annuler', - 'none' => 'Aucun', - 'activate' => 'Activer', - 'short_day_format' => 'Le %e %B', - 'long_day_format' => 'Le %e %B %Y', - 'yesterday_format' => 'Hier à %kh%M', - 'other_day_format' => '%A à %kh%M', - 'never' => 'Jamais', - 'hours_ago' => 'Il y a %d heures', - 'an_hour_ago' => 'Il y a une heure', - 'minutes_ago' => 'Il y a %d minutes', - 'a_minute_ago' => 'Il y a une minute', - 'seconds_ago' => 'Il y a %d secondes', - 'a_second_ago' => 'Il y a une seconde', - 'year' => 'année', - 'years' => 'années', - 'month' => 'mois', - 'months' => 'mois', - 'day' => 'jour', - 'days' => 'jours', - 'hour' => 'heure', - 'hours' => 'heures', - 'minute' => 'minute', - 'minutes' => 'minutes', - 'second' => 'seconde', - 'seconds' => 'secondes', - 'current' => 'actuel', - 'settings' => 'Paramètres', - 'search' => 'Recherche', - ), + 'back_to_top' => 'Haut de page', + 'go_back' => 'Retour', + 'ok' => 'OK', + 'bad' => 'mauvais', + 'cancel' => 'Annuler', + 'none' => 'Aucun', + 'activate' => 'Activer', + 'short_day_format' => 'Le %e %B', + 'long_day_format' => 'Le %e %B %Y', + 'yesterday_format' => 'Hier à %kh%M', + 'other_day_format' => '%A à %kh%M', + 'never' => 'Jamais', + 'hours_ago' => 'Il y a %d heures', + 'an_hour_ago' => 'Il y a une heure', + 'minutes_ago' => 'Il y a %d minutes', + 'a_minute_ago' => 'Il y a une minute', + 'seconds_ago' => 'Il y a %d secondes', + 'a_second_ago' => 'Il y a une seconde', + 'year' => 'année', + 'years' => 'années', + 'month' => 'mois', + 'months' => 'mois', + 'day' => 'jour', + 'days' => 'jours', + 'hour' => 'heure', + 'hours' => 'heures', + 'minute' => 'minute', + 'minutes' => 'minutes', + 'second' => 'seconde', + 'seconds' => 'secondes', + 'current' => 'actuel', + 'settings' => 'Paramètres', + 'search' => 'Recherche', +), 'menu' => array( - 'config' => 'Configuration', - 'server' => 'Serveurs', - 'server_log' => 'Événements', - 'server_status' => 'États', - 'server_update' => 'Mise à jour', - 'user' => 'Utilisateurs', - 'help' => 'Aide', - ), + 'config' => 'Configuration', + 'server' => 'Serveurs', + 'server_log' => 'Événements', + 'server_status' => 'États', + 'server_update' => 'Mise à jour', + 'user' => 'Utilisateurs', + 'help' => 'Aide', +), 'users' => array( - 'user' => 'Utilisateur', - 'name' => 'Nom', - 'user_name' => 'Nom d\'utilisateur', - 'password' => 'Mot de passe', - 'password_repeat' => 'Répéter le mot de passe', - 'password_leave_blank' => 'Laisser vide pour ne pas le modifier', - 'level' => 'Rôle', - 'level_10' => 'Administrateur', - 'level_20' => 'Utilisateur', - 'level_description' => 'Les Administrateurs ont un accès total. Ils peuvent gérer les serveurs, les + 'user' => 'Utilisateur', + 'name' => 'Nom', + 'user_name' => 'Nom d\'utilisateur', + 'password' => 'Mot de passe', + 'password_repeat' => 'Répéter le mot de passe', + 'password_leave_blank' => 'Laisser vide pour ne pas le modifier', + 'level' => 'Rôle', + 'level_10' => 'Administrateur', + 'level_20' => 'Utilisateur', + 'level_description' => 'Les Administrateurs ont un accès total. Ils peuvent gérer les serveurs, les utilisateurs et éditer la configuration globale.
Les Utilisateurs ne peuvent que voir et mettre à jour les serveurs qui leur ont été assignés.', - 'mobile' => 'Téléphone', - 'email' => 'Email', - 'pushover' => 'Pushover', - 'pushover_description' => 'Pushover est un service qui simplifie les notifications en temps réel. Voir 'Téléphone', + 'email' => 'Email', + 'pushover' => 'Pushover', + 'pushover_description' => 'Pushover est un service qui simplifie les notifications en temps réel. Voir leur site web pour plus d\'informations.', - 'pushover_key' => 'Clé Pushover', - 'pushover_device' => 'Appareil Pushover', - 'pushover_device_description' => 'Nom de l\'appareil auquel le message doit être envoyé. Laissez vide pour + 'pushover_key' => 'Clé Pushover', + 'pushover_device' => 'Appareil Pushover', + 'pushover_device_description' => 'Nom de l\'appareil auquel le message doit être envoyé. Laissez vide pour l\'envoyer à tous les appareils.', - 'telegram' => 'Telegram', - 'telegram_description' => 'Telegram est une application de + 'telegram' => 'Telegram', + 'telegram_description' => 'Telegram est une application de messagerie instantanée qui facilite la réception de notification en temps réel. Lisez la documentation pour obtenir plus d\'informations sur la configuration de ce service.', - 'telegram_chat_id' => 'ID de conversation (Chat ID) Telegram', - 'telegram_chat_id_description' => 'Les notifications seront envoyées à la conversation correspondante.', - 'telegram_get_chat_id' => 'Cliquez ici pour obtenir votre ID de conversation (Chat ID)', - 'activate_telegram' => 'Activer les alertes Telegram', - 'activate_telegram_description' => 'Permet aux notifications Telegram d\'être envoyée à la conversation + 'telegram_chat_id' => 'ID de conversation (Chat ID) Telegram', + 'telegram_chat_id_description' => 'Les notifications seront envoyées à la conversation correspondante.', + 'telegram_get_chat_id' => 'Cliquez ici pour obtenir votre ID de conversation (Chat ID)', + 'activate_telegram' => 'Activer les alertes Telegram', + 'activate_telegram_description' => 'Permet aux notifications Telegram d\'être envoyée à la conversation spécifiée. Sans cette permission, Telegram ne nous autorise pas à vous envoyer des notifications.', - 'telegram_bot_username_found' => 'Le BOT a été trouvé !
'Le BOT a été trouvé !

Cela va ouvrir une conversation avec le BOT. Vous devez appuyer sur \'/start\' ou le saisir.', - 'telegram_bot_username_error_token' => '401 - Unauthorized. Assuez-vous que le Token API soit valide.', - 'telegram_bot_error' => 'Une erreur s\'est produite en tentant d\'activer les notifications Telegram : %s', - 'delete_title' => 'Supprimer un utilisateur', - 'delete_message' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur \'%1\' ?', - 'deleted' => 'Utilisateur supprimé.', - 'updated' => 'Utilisateur mis à jour.', - 'inserted' => 'Utilisateur ajouté.', - 'profile' => 'Profil', - 'profile_updated' => 'Votre profil a été mis à jour.', - 'error_user_name_bad_length' => 'Le nom d\'utilisateur doit avoir entre 2 et 64 caractères.', - 'error_user_name_invalid' => 'Le nom d\'utilisateur ne peut contenir que des caractères alphabétiques (a-z, + 'telegram_bot_username_error_token' => '401 - Unauthorized. Assuez-vous que le Token API soit valide.', + 'telegram_bot_error' => 'Une erreur s\'est produite en tentant d\'activer les notifications Telegram : %s', + 'delete_title' => 'Supprimer un utilisateur', + 'delete_message' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur \'%1\' ?', + 'deleted' => 'Utilisateur supprimé.', + 'updated' => 'Utilisateur mis à jour.', + 'inserted' => 'Utilisateur ajouté.', + 'profile' => 'Profil', + 'profile_updated' => 'Votre profil a été mis à jour.', + 'error_user_name_bad_length' => 'Le nom d\'utilisateur doit avoir entre 2 et 64 caractères.', + 'error_user_name_invalid' => 'Le nom d\'utilisateur ne peut contenir que des caractères alphabétiques (a-z, A-Z), des chiffres (0-9), points (.) ou underscore (_).', - 'error_user_name_exists' => 'Ce nom d\'utilisateur existe déjà.', - 'error_user_email_bad_length' => 'L\'adresse email doit avoir entre 5 et 255 caractères.', - 'error_user_email_invalid' => 'L\'adresse email n\'est pas valide.', - 'error_user_level_invalid' => 'Le rôle d\'utilisateur n\'est pas valide.', - 'error_user_no_match' => 'L\'utilisateur n\'a pas été trouvé dans la base de données.', - 'error_user_password_invalid' => 'Le mot de passe n\'est pas valide.', - 'error_user_password_no_match' => 'Le mot de passe est incorrect.', - ), + 'error_user_name_exists' => 'Ce nom d\'utilisateur existe déjà.', + 'error_user_email_bad_length' => 'L\'adresse email doit avoir entre 5 et 255 caractères.', + 'error_user_email_invalid' => 'L\'adresse email n\'est pas valide.', + 'error_user_level_invalid' => 'Le rôle d\'utilisateur n\'est pas valide.', + 'error_user_no_match' => 'L\'utilisateur n\'a pas été trouvé dans la base de données.', + 'error_user_password_invalid' => 'Le mot de passe n\'est pas valide.', + 'error_user_password_no_match' => 'Le mot de passe est incorrect.', +), 'log' => array( - 'title' => 'Événements', - 'type' => 'Type', - 'status' => 'État', - 'email' => 'Email', - 'sms' => 'SMS', - 'pushover' => 'Pushover', - 'telegram' => 'Telegram', - 'no_logs' => 'Aucun événement', - 'clear' => 'Effacer les journaux', - 'delete_title' => 'Supprimer les journaux', - 'delete_message' => 'Êtes-vous sûr de vouloir supprimer tous les journaux ?', - ), + 'title' => 'Événements', + 'type' => 'Type', + 'status' => 'État', + 'email' => 'Email', + 'sms' => 'SMS', + 'pushover' => 'Pushover', + 'telegram' => 'Telegram', + 'no_logs' => 'Aucun événement', + 'clear' => 'Effacer les journaux', + 'delete_title' => 'Supprimer les journaux', + 'delete_message' => 'Êtes-vous sûr de vouloir supprimer tous les journaux ?', +), 'servers' => array( - 'server' => 'Serveur', - 'status' => 'État', - 'label' => 'Nom', - 'domain' => 'Domaine/IP', - 'timeout' => 'Délai d\'attente', - 'timeout_description' => 'Nombre de secondes à attendre une réponse du serveur.', - 'authentication_settings' => 'Paramètres d\'authentification', - 'optional' => 'Optionnel', - 'website_username' => 'Nom d\'utilisateur', - 'website_username_description' => 'Nom d\'utilisateur pour accèder au site. (Seul l\'authentification Apache + 'server' => 'Serveur', + 'status' => 'État', + 'label' => 'Nom', + 'domain' => 'Domaine/IP', + 'timeout' => 'Délai d\'attente', + 'timeout_description' => 'Nombre de secondes à attendre une réponse du serveur.', + 'authentication_settings' => 'Paramètres d\'authentification', + 'optional' => 'Optionnel', + 'website_username' => 'Nom d\'utilisateur', + 'website_username_description' => 'Nom d\'utilisateur pour accèder au site. (Seul l\'authentification Apache est supporté.)', - 'website_password' => 'Mot de passe', - 'website_password_description' => 'Mot de passe pour accèder au site. Le mot de passe est cryptè dans la + 'website_password' => 'Mot de passe', + 'website_password_description' => 'Mot de passe pour accèder au site. Le mot de passe est cryptè dans la base de donnée.', - 'fieldset_monitoring' => 'Monitoring', - 'fieldset_permissions' => 'Permissions', - 'permissions' => 'Les utilisateurs suivants pourront voir le serveur.', - 'port' => 'Port', - 'custom_port' => 'Port personnalisé', - 'popular_ports' => 'Ports courant', - 'request_method' => 'Type de requête', - 'custom_request_method' => 'Type de requête personalisée', - 'popular_request_methods' => 'Type de requête prédéfinie', - 'post_field' => 'Champ POST', - 'post_field_description' => 'Les données qui seront envoyés en utilisant le type de requête choisi.', - 'please_select' => 'Veuillez choisir', - 'type' => 'Type', - 'type_website' => 'Site Web', - 'type_service' => 'Service', - 'type_ping' => 'Ping', - 'pattern' => 'Rechercher un texte/motif', - 'pattern_description' => 'Si ce texte n\'est par retrouvé sur le site web, le serveur est marqué + 'fieldset_monitoring' => 'Monitoring', + 'fieldset_permissions' => 'Permissions', + 'permissions' => 'Les utilisateurs suivants pourront voir le serveur.', + 'port' => 'Port', + 'custom_port' => 'Port personnalisé', + 'popular_ports' => 'Ports courant', + 'request_method' => 'Type de requête', + 'custom_request_method' => 'Type de requête personalisée', + 'popular_request_methods' => 'Type de requête prédéfinie', + 'post_field' => 'Champ POST', + 'post_field_description' => 'Les données qui seront envoyés en utilisant le type de requête choisi.', + 'please_select' => 'Veuillez choisir', + 'type' => 'Type', + 'type_website' => 'Site Web', + 'type_service' => 'Service', + 'type_ping' => 'Ping', + 'pattern' => 'Rechercher un texte/motif', + 'pattern_description' => 'Si ce texte n\'est par retrouvé sur le site web, le serveur est marqué hors-service. Les expressions régulières sont autorisées.', - 'pattern_online' => 'Le texte indique que le site est', - 'pattern_online_description' => 'En ligne : Si ce texte est trouvé sur le site internet, le serveur sera + 'pattern_online' => 'Le texte indique que le site est', + 'pattern_online_description' => 'En ligne : Si ce texte est trouvé sur le site internet, le serveur sera considéré en ligne. Hors-ligne : Si ce texte n\'est pas trouvé sur le site, le serveur sera considéré hors-ligne.', - 'redirect_check' => 'La redirection vers un autre domaine est', - 'redirect_check_description' => 'Une redirection vers un autre domaine est généralement mauvais signe.', - 'allow_http_status' => 'Autoriser les codes de status HTTP', - 'allow_http_status_description' => 'Marquer le serveur en ligne. Les codes de status HTTP inférieur à 400 + 'redirect_check' => 'La redirection vers un autre domaine est', + 'redirect_check_description' => 'Une redirection vers un autre domaine est généralement mauvais signe.', + 'allow_http_status' => 'Autoriser les codes de status HTTP', + 'allow_http_status_description' => 'Marquer le serveur en ligne. Les codes de status HTTP inférieur à 400 sont considérés comme en ligne par défaut. Séparés les valeurs avec |.', - 'header_name' => 'Nom d\'en-têtes', - 'header_value' => 'Valeur d\'en-tête', - 'header_name_description' => 'Sensible à la casse.', - 'header_value_description' => 'Les expréssions régulières sont autorisées.', - 'last_check' => 'Dernière vérification', - 'last_online' => 'Dernière fois OK', - 'last_offline' => 'Dernière fois hors-ligne', - 'last_output' => 'Dernière sortie positive', - 'last_error' => 'Dernière erreur', - 'last_error_output' => 'Dernière erreur de sortie', - 'output' => 'Sortie', - 'monitoring' => 'Surveillé', - 'no_monitoring' => 'Non surveillé', - 'email' => 'Email', - 'send_email' => 'Envoyer un email', - 'sms' => 'SMS', - 'send_sms' => 'Envoyer un SMS', - 'pushover' => 'Pushover', - 'send_pushover' => 'Envoyer des notifications Pushover', - 'telegram' => 'Telegram', - 'send_telegram' => 'Envoyer des notifications Telegram', - 'users' => 'Utilisateurs', - 'delete_title' => 'Supprimer un serveur', - 'delete_message' => 'Êtes-vous sûr de vouloir supprimer le serveur \'%1\' ?', - 'deleted' => 'Serveur supprimé.', - 'updated' => 'Serveur mis à jour.', - 'inserted' => 'Serveur ajouté.', - 'latency' => 'Temps de réponse', - 'latency_max' => 'Temps de réponse maximum', - 'latency_min' => 'Temps de réponse minimum', - 'latency_avg' => 'Temps de réponse moyen', - 'online' => 'en ligne', - 'offline' => 'hors ligne', - 'uptime' => 'Disponibilité', - 'year' => 'Année', - 'month' => 'Mois', - 'week' => 'Semaine', - 'day' => 'Jour', - 'hour' => 'Heure', - 'warning_threshold' => 'Seuil d\'alerte', - 'warning_threshold_description' => 'Nombre d\'échecs de connexion avant que le serveur soit marqué + 'header_name' => 'Nom d\'en-têtes', + 'header_value' => 'Valeur d\'en-tête', + 'header_name_description' => 'Sensible à la casse.', + 'header_value_description' => 'Les expréssions régulières sont autorisées.', + 'last_check' => 'Dernière vérification', + 'last_online' => 'Dernière fois OK', + 'last_offline' => 'Dernière fois hors-ligne', + 'last_output' => 'Dernière sortie positive', + 'last_error' => 'Dernière erreur', + 'last_error_output' => 'Dernière erreur de sortie', + 'output' => 'Sortie', + 'monitoring' => 'Surveillé', + 'no_monitoring' => 'Non surveillé', + 'email' => 'Email', + 'send_email' => 'Envoyer un email', + 'sms' => 'SMS', + 'send_sms' => 'Envoyer un SMS', + 'pushover' => 'Pushover', + 'send_pushover' => 'Envoyer des notifications Pushover', + 'telegram' => 'Telegram', + 'send_telegram' => 'Envoyer des notifications Telegram', + 'users' => 'Utilisateurs', + 'delete_title' => 'Supprimer un serveur', + 'delete_message' => 'Êtes-vous sûr de vouloir supprimer le serveur \'%1\' ?', + 'deleted' => 'Serveur supprimé.', + 'updated' => 'Serveur mis à jour.', + 'inserted' => 'Serveur ajouté.', + 'latency' => 'Temps de réponse', + 'latency_max' => 'Temps de réponse maximum', + 'latency_min' => 'Temps de réponse minimum', + 'latency_avg' => 'Temps de réponse moyen', + 'online' => 'en ligne', + 'offline' => 'hors ligne', + 'uptime' => 'Disponibilité', + 'year' => 'Année', + 'month' => 'Mois', + 'week' => 'Semaine', + 'day' => 'Jour', + 'hour' => 'Heure', + 'warning_threshold' => 'Seuil d\'alerte', + 'warning_threshold_description' => 'Nombre d\'échecs de connexion avant que le serveur soit marqué hors-service.', - 'chart_last_week' => 'La dernière semaine', - 'chart_history' => 'Historique', - 'chart_day_format' => '%d/%m/%Y', - 'chart_long_date_format' => '%d/%m/%Y %H:%M:%S', - 'chart_short_date_format' => '%d/%m %H:%M', - 'chart_short_time_format' => '%H:%M', - 'warning_notifications_disabled_sms' => 'Les notifications SMS sont désactivées.', - 'warning_notifications_disabled_email' => 'Les notifications par email sont désactivées.', - 'warning_notifications_disabled_pushover' => 'Les notifications Pushover sont désactivées.', - 'warning_notifications_disabled_telegram' => 'Les notifications Telegram sont désactivées.', - 'error_server_no_match' => 'Serveur non trouvé.', - 'error_server_label_bad_length' => 'Le nom doit avoir entre 1 et 255 caractères.', - 'error_server_ip_bad_length' => 'Domaine/IP doit avoir entre 1 et 255 caractères.', - 'error_server_ip_bad_service' => 'L\'adresse IP n\'est pas valide.', - 'error_server_ip_bad_website' => 'L\'URL du site web n\'est pas valide.', - 'error_server_type_invalid' => 'Le type de service sélectionné n\'est pas valide.', - 'error_server_warning_threshold_invalid' => 'Le seuil d\'alerte doit être un nombre entier supérieur à 0.', - ), + 'chart_last_week' => 'La dernière semaine', + 'chart_history' => 'Historique', + 'chart_day_format' => '%d/%m/%Y', + 'chart_long_date_format' => '%d/%m/%Y %H:%M:%S', + 'chart_short_date_format' => '%d/%m %H:%M', + 'chart_short_time_format' => '%H:%M', + 'warning_notifications_disabled_sms' => 'Les notifications SMS sont désactivées.', + 'warning_notifications_disabled_email' => 'Les notifications par email sont désactivées.', + 'warning_notifications_disabled_pushover' => 'Les notifications Pushover sont désactivées.', + 'warning_notifications_disabled_telegram' => 'Les notifications Telegram sont désactivées.', + 'error_server_no_match' => 'Serveur non trouvé.', + 'error_server_label_bad_length' => 'Le nom doit avoir entre 1 et 255 caractères.', + 'error_server_ip_bad_length' => 'Domaine/IP doit avoir entre 1 et 255 caractères.', + 'error_server_ip_bad_service' => 'L\'adresse IP n\'est pas valide.', + 'error_server_ip_bad_website' => 'L\'URL du site web n\'est pas valide.', + 'error_server_type_invalid' => 'Le type de service sélectionné n\'est pas valide.', + 'error_server_warning_threshold_invalid' => 'Le seuil d\'alerte doit être un nombre entier supérieur à 0.', +), 'config' => array( - 'general' => 'Général', - 'language' => 'Langue', - 'show_update' => 'Vérifier les nouvelles mises à jour chaque semaine', - 'password_encrypt_key' => 'Clée de cryptage des mots de passe', - 'password_encrypt_key_note' => 'Cette clée est utilisée pour crypter les mots de passe qui sont enregistrés + 'general' => 'Général', + 'language' => 'Langue', + 'show_update' => 'Vérifier les nouvelles mises à jour chaque semaine', + 'password_encrypt_key' => 'Clée de cryptage des mots de passe', + 'password_encrypt_key_note' => 'Cette clée est utilisée pour crypter les mots de passe qui sont enregistrés dans la base de donnée pour les serveurs qui requiert une authentification. Si la clé est modifié, les mots de passe enregistré ne seront plus valide !', - 'proxy' => 'Activer le proxy', - 'proxy_url' => 'URL du proxy', - 'proxy_user' => 'Nom d\'utilisateur du proxy', - 'proxy_password' => 'Mot de passe du proxy', - 'email_status' => 'Autoriser l\'envoi de mail', - 'email_from_email' => 'Adresse de l\'expéditeur', - 'email_from_name' => 'Nom de l\'expéditeur', - 'email_smtp' => 'Utiliser un serveur SMTP', - 'email_smtp_host' => 'Adresse serveur SMTP', - 'email_smtp_port' => 'Port SMTP', - 'email_smtp_security' => 'Protocole de sécurité SMTP', - 'email_smtp_security_none' => 'Aucun', - 'email_smtp_username' => 'Nom utilisateur SMTP', - 'email_smtp_password' => 'Mot de passe SMTP', - 'email_smtp_noauth' => 'Laisser vide si pas d\'authentication', - 'sms_status' => 'Autoriser l\'envoi de SMS', - 'sms_gateway' => 'Passerelle à utiliser pour l\'envoi de SMS', - 'sms_gateway_username' => 'Nom utilisateur de la passerelle', - 'sms_gateway_password' => 'Mot de passe de la passerelle', - 'sms_from' => 'SMS de l\'expéditeur', - 'pushover_status' => 'Autoriser l\'envoi des messages Pushover', - 'pushover_description' => 'Pushover est un service qui simplifie les notifications en temps réel. Voir 'Activer le proxy', + 'proxy_url' => 'URL du proxy', + 'proxy_user' => 'Nom d\'utilisateur du proxy', + 'proxy_password' => 'Mot de passe du proxy', + 'email_status' => 'Autoriser l\'envoi de mail', + 'email_from_email' => 'Adresse de l\'expéditeur', + 'email_from_name' => 'Nom de l\'expéditeur', + 'email_smtp' => 'Utiliser un serveur SMTP', + 'email_smtp_host' => 'Adresse serveur SMTP', + 'email_smtp_port' => 'Port SMTP', + 'email_smtp_security' => 'Protocole de sécurité SMTP', + 'email_smtp_security_none' => 'Aucun', + 'email_smtp_username' => 'Nom utilisateur SMTP', + 'email_smtp_password' => 'Mot de passe SMTP', + 'email_smtp_noauth' => 'Laisser vide si pas d\'authentication', + 'sms_status' => 'Autoriser l\'envoi de SMS', + 'sms_gateway' => 'Passerelle à utiliser pour l\'envoi de SMS', + 'sms_gateway_username' => 'Nom utilisateur de la passerelle', + 'sms_gateway_password' => 'Mot de passe de la passerelle', + 'sms_from' => 'SMS de l\'expéditeur', + 'pushover_status' => 'Autoriser l\'envoi des messages Pushover', + 'pushover_description' => 'Pushover est un service qui simplifie les notifications en temps réel. Voir leur site web pour plus d\'informations.', - 'pushover_clone_app' => 'Cliquez ici pour créer votre application Pushover', - 'pushover_api_token' => 'Jeton application Pushover', - 'pushover_api_token_description' => 'Avant de pouvoir utiliser Pushover, vous devez 'Cliquez ici pour créer votre application Pushover', + 'pushover_api_token' => 'Jeton application Pushover', + 'pushover_api_token_description' => 'Avant de pouvoir utiliser Pushover, vous devez créer une application sur leur site web et entrer ici le jeton (Token) de l\'application.', - 'telegram_status' => 'Autorise l\'envoi de message Telegram', - 'telegram_description' => 'Telegram est une application de + 'telegram_status' => 'Autorise l\'envoi de message Telegram', + 'telegram_description' => 'Telegram est une application de messagerie instantanée qui facilite la réception de notification en temps réel. Lisez la documentation pour obtenir plus d\'informations sur la configuration de ce service.', - 'telegram_api_token' => 'Token API Telegram', - 'telegram_api_token_description' => 'Afin de pouvoir utiliser Telegram, il vous faut obtenir un token api. + 'telegram_api_token' => 'Token API Telegram', + 'telegram_api_token_description' => 'Afin de pouvoir utiliser Telegram, il vous faut obtenir un token api. Consultez la documentation pour obtenir de l\'aide.', - 'alert_type' => 'Choisissez quand vous souhaitez être notifié', - 'alert_type_description' => 'Changement d\'état : Vous recevez une notification chaque fois que + 'alert_type' => 'Choisissez quand vous souhaitez être notifié', + 'alert_type_description' => 'Changement d\'état : Vous recevez une notification chaque fois que le serveur change d\'état. C\'est-à-dire passe de l\'état OK à HORS SERVICE ou de HORS SERVICE à OK.

Hors service : Vous ne recevez une notification que quand le serveur passe de l\'état OK à HORS SERVICE. Par @@ -331,145 +335,145 @@ $sm_lang = array( 6 heures du matin.Vous ne recevez qu\'une seule notification à 1 heure du matin.

Toujours : Vous recevez une notification à chaque exécution de la tâche planifiée si le serveur est à l\'état HORS SERVICE ', - 'alert_type_status' => 'Changement d\'état', - 'alert_type_offline' => 'Hors service', - 'alert_type_always' => 'Toujours', - 'combine_notifications' => 'Combiner les notifications', - 'combine_notifications_description' => 'Réduit le nombre de notifications en les combinant toutes en une + 'alert_type_status' => 'Changement d\'état', + 'alert_type_offline' => 'Hors service', + 'alert_type_always' => 'Toujours', + 'combine_notifications' => 'Combiner les notifications', + 'combine_notifications_description' => 'Réduit le nombre de notifications en les combinant toutes en une seule. (Cela ne s\'applique pas aux SMS.)', - 'alert_proxy' => 'Le serveur proxy n\'est jamais utilisé pour les services, même quand celui-ci est activé.', - 'alert_proxy_url' => 'Format : hôte:port', - 'log_status' => 'Etat des événements', - 'log_status_description' => 'Si l\'option est activée, un événement est enregistré chaque fois qu\'une + 'alert_proxy' => 'Le serveur proxy n\'est jamais utilisé pour les services, même quand celui-ci est activé.', + 'alert_proxy_url' => 'Format : hôte:port', + 'log_status' => 'Etat des événements', + 'log_status_description' => 'Si l\'option est activée, un événement est enregistré chaque fois qu\'une notification a lieu.', - 'log_email' => 'Enregistrer tous les emails envoyés', - 'log_sms' => 'Enregistrer tous les SMS envoyés', - 'log_pushover' => 'Enregistrer tous les messages Pushover envoyés', - 'log_telegram' => 'Enregistrer tous les messages Telegram envoyés', - 'updated' => 'La configuration a été mise à jour.', - 'tab_email' => 'Email', - 'tab_sms' => 'SMS', - 'tab_pushover' => 'Pushover', - 'tab_telegram' => 'Telegram', - 'settings_email' => 'Configuration email', - 'settings_sms' => 'Configuration SMS', - 'settings_pushover' => 'Configuration Pushover', - 'settings_telegram' => 'Configuration Telegram', - 'settings_notification' => 'Configuration des notifications', - 'settings_log' => 'Configuration des événements', - 'settings_proxy' => 'Configuration du proxy', - 'auto_refresh' => 'Auto-rachaîchissement', - 'auto_refresh_description' => 'Auto-rachaîchissement de la page serveurs.
Temps en + 'log_email' => 'Enregistrer tous les emails envoyés', + 'log_sms' => 'Enregistrer tous les SMS envoyés', + 'log_pushover' => 'Enregistrer tous les messages Pushover envoyés', + 'log_telegram' => 'Enregistrer tous les messages Telegram envoyés', + 'updated' => 'La configuration a été mise à jour.', + 'tab_email' => 'Email', + 'tab_sms' => 'SMS', + 'tab_pushover' => 'Pushover', + 'tab_telegram' => 'Telegram', + 'settings_email' => 'Configuration email', + 'settings_sms' => 'Configuration SMS', + 'settings_pushover' => 'Configuration Pushover', + 'settings_telegram' => 'Configuration Telegram', + 'settings_notification' => 'Configuration des notifications', + 'settings_log' => 'Configuration des événements', + 'settings_proxy' => 'Configuration du proxy', + 'auto_refresh' => 'Auto-rachaîchissement', + 'auto_refresh_description' => 'Auto-rachaîchissement de la page serveurs.
Temps en secondes. Si 0, la page n\'est pas rafraîchie.', - 'seconds' => 'secondes', - 'test' => 'Tester', - 'test_email' => 'Un email va vous être envoyé à l\'adresse définie dans votre profil utilisateur.', - 'test_sms' => 'Un SMS va vous être envoyé au numéro défini dans votre profil utilisateur.', - 'test_pushover' => 'Une notification Pushover va être envoyée en utilisant la clé spécifiée dans votre + 'seconds' => 'secondes', + 'test' => 'Tester', + 'test_email' => 'Un email va vous être envoyé à l\'adresse définie dans votre profil utilisateur.', + 'test_sms' => 'Un SMS va vous être envoyé au numéro défini dans votre profil utilisateur.', + 'test_pushover' => 'Une notification Pushover va être envoyée en utilisant la clé spécifiée dans votre profil utilisateur.', - 'test_telegram' => 'Une notification Telegram sera envoyé à la conversion indiqué sur votre profil (ID de + 'test_telegram' => 'Une notification Telegram sera envoyé à la conversion indiqué sur votre profil (ID de conversation).', - 'send' => 'Envoyer', - 'test_subject' => 'Test', - 'test_message' => 'Message de test', - 'email_sent' => 'Email envoyé', - 'email_error' => 'Erreur lors de l\'envoi de l\'email', - 'sms_sent' => 'SMS envoyé', - 'sms_error' => 'Erreur lors de l\'envoi du SMS. %s', - 'sms_error_nomobile' => 'Impossible d\'envoyer un SMS de test: aucun numéro de téléphone défini dans votre + 'send' => 'Envoyer', + 'test_subject' => 'Test', + 'test_message' => 'Message de test', + 'email_sent' => 'Email envoyé', + 'email_error' => 'Erreur lors de l\'envoi de l\'email', + 'sms_sent' => 'SMS envoyé', + 'sms_error' => 'Erreur lors de l\'envoi du SMS. %s', + 'sms_error_nomobile' => 'Impossible d\'envoyer un SMS de test: aucun numéro de téléphone défini dans votre profil.', - 'pushover_sent' => 'Notification Pushover envoyée', - 'pushover_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification Pushover : %s', - 'pushover_error_noapp' => 'Impossible d\'envoyer une notification de test: Aucun jeton application Pushover + 'pushover_sent' => 'Notification Pushover envoyée', + 'pushover_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification Pushover : %s', + 'pushover_error_noapp' => 'Impossible d\'envoyer une notification de test: Aucun jeton application Pushover n\'a été défini dans la configuration Pushover.', - 'pushover_error_nokey' => 'Impossible d\'envoyer une notification de test: Aucune clé Pushover n\'a été + 'pushover_error_nokey' => 'Impossible d\'envoyer une notification de test: Aucune clé Pushover n\'a été définie dans votre profil.', - 'telegram_sent' => 'Notification Telegram envoyée', - 'telegram_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification : %s', - 'telegram_error_notoken' => 'Impossible d\'envoyé la notification de test : aucun token APII token + 'telegram_sent' => 'Notification Telegram envoyée', + 'telegram_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification : %s', + 'telegram_error_notoken' => 'Impossible d\'envoyé la notification de test : aucun token APII token trouvé dans la configuration.', - 'telegram_error_noid' => 'Impossible d\'envoyé la notification de test : aucun ID de conversation + 'telegram_error_noid' => 'Impossible d\'envoyé la notification de test : aucun ID de conversation trouvé dans votre profil utilisateur.', - 'log_retention_period' => 'Durée de conservation', - 'log_retention_period_description' => 'Nombre de jours de conservation des événements envoyés et des temps + 'log_retention_period' => 'Durée de conservation', + 'log_retention_period_description' => 'Nombre de jours de conservation des événements envoyés et des temps de réponse des serveurs. Entrez 0 pour les conserver indéfiniment.', - 'log_retention_days' => 'jours', - ), + 'log_retention_days' => 'jours', +), 'notifications' => array( - 'off_sms' => 'Le Serveur \'%LABEL%\' est HORS SERVICE: IP=%IP%, Port=%PORT%. Erreur=%ERROR%', - 'off_email_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est HORS SERVICE', - 'off_email_body' => 'Impossible de se connecter au serveur suivant:

Serveur : %LABEL%
IP : + 'off_sms' => 'Le Serveur \'%LABEL%\' est HORS SERVICE: IP=%IP%, Port=%PORT%. Erreur=%ERROR%', + 'off_email_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est HORS SERVICE', + 'off_email_body' => 'Impossible de se connecter au serveur suivant:

Serveur : %LABEL%
IP : %IP%
Port : %PORT%
Erreur : %ERROR%
Date: %DATE%', - 'off_pushover_title' => 'Le Serveur \'%LABEL%\' est HORS SERVICE', - 'off_pushover_message' => 'Impossible de se connecter au serveur suivant :

Serveur : + 'off_pushover_title' => 'Le Serveur \'%LABEL%\' est HORS SERVICE', + 'off_pushover_message' => 'Impossible de se connecter au serveur suivant :

Serveur : %LABEL%
IP : %IP%
Port : %PORT%
Erreur : %ERROR%
Date : %DATE%', - 'off_telegram_message' => 'Impossible de se connecter au serveur suivant :

Serveur : + 'off_telegram_message' => 'Impossible de se connecter au serveur suivant :

Serveur : %LABEL%
IP : %IP%
Port : %PORT%
Erreur : %ERROR%
Date : %DATE%', - 'on_sms' => 'Le Serveur \'%LABEL%\' est OK: IP=%IP%, Port=%PORT%, il était hors-ligne pendant + 'on_sms' => 'Le Serveur \'%LABEL%\' est OK: IP=%IP%, Port=%PORT%, il était hors-ligne pendant %LAST_OFFLINE_DURATION%', - 'on_email_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est OK', - 'on_email_body' => 'Le Serveur \'%LABEL%\' est de nouveau OK, il était hors-ligne pendant + 'on_email_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est OK', + 'on_email_body' => 'Le Serveur \'%LABEL%\' est de nouveau OK, il était hors-ligne pendant %LAST_OFFLINE_DURATION%:

Serveur: %LABEL%
IP: %IP%
Port: %PORT%
Date: %DATE%', - 'on_pushover_title' => 'Le Serveur \'%LABEL%\' est OK', - 'on_pushover_message' => 'Le Serveur \'%LABEL%\' est de nouveau OK, il était hors-ligne pendant + 'on_pushover_title' => 'Le Serveur \'%LABEL%\' est OK', + 'on_pushover_message' => 'Le Serveur \'%LABEL%\' est de nouveau OK, il était hors-ligne pendant %LAST_OFFLINE_DURATION%:

Serveur: %LABEL%
IP: %IP%
Port: %PORT%
Date: %DATE%', - 'on_telegram_message' => 'Server \'%LABEL%\' is running again, it was down for: + 'on_telegram_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' => '
  • Serveur : %LABEL%
  • IP : %IP%
  • Port : + 'combi_off_email_message' => '
    • Serveur : %LABEL%
    • IP : %IP%
    • Port : %PORT%
    • Erreur : %ERROR%
    • Date : %DATE%
    ', - 'combi_off_pushover_message' => '
    • Serveur : %LABEL%
    • IP : %IP%
    • Port : + 'combi_off_pushover_message' => '
      • Serveur : %LABEL%
      • IP : %IP%
      • Port : %PORT%
      • Erreur : %ERROR%
      • Date : %DATE%
      ', - 'combi_off_telegram_message' => '- Serveur : %LABEL%
      - IP : %IP%
      - Port : %PORT%
      - + 'combi_off_telegram_message' => '- Serveur : %LABEL%
      - IP : %IP%
      - Port : %PORT%
      - Erreur : %ERROR%
      - Date : %DATE%

      ', - 'combi_on_email_message' => '
      • Serveur : %LABEL%
      • IP : %IP%
      • Port : + 'combi_on_email_message' => '
        • Serveur : %LABEL%
        • IP : %IP%
        • Port : %PORT%
        • Durée : %LAST_OFFLINE_DURATION%
        • Date : %DATE%
        ', - 'combi_on_pushover_message' => '
        • Serveur : %LABEL%
        • IP : %IP%
        • Port : + 'combi_on_pushover_message' => '
          • Serveur : %LABEL%
          • IP : %IP%
          • Port : %PORT%
          • Durée : %LAST_OFFLINE_DURATION%
          • Date : %DATE%
          ', - 'combi_on_telegram_message' => '- Serveur : %LABEL%
          - IP: %IP%
          - Port : %PORT%
          - + 'combi_on_telegram_message' => '- Serveur : %LABEL%
          - IP: %IP%
          - Port : %PORT%
          - Durée : %LAST_OFFLINE_DURATION%
          - Date : %DATE%

          ', - 'combi_email_subject' => 'IMPORTANT : \'%UP%\' serveurs de nouveaux en ligne, \'%DOWN%\' serveurs + 'combi_email_subject' => 'IMPORTANT : \'%UP%\' serveurs de nouveaux en ligne, \'%DOWN%\' serveurs hors-ligne', - 'combi_pushover_subject' => '\'%UP%\' serveurs de nouveaux en ligne, \'%DOWN%\' serveurs hors-ligne', - 'combi_email_message' => 'Les serveurs suivants sont hors-ligne :
          %DOWN_SERVERS%
          Les + 'combi_pushover_subject' => '\'%UP%\' serveurs de nouveaux en ligne, \'%DOWN%\' serveurs hors-ligne', + 'combi_email_message' => 'Les serveurs suivants sont hors-ligne :
          %DOWN_SERVERS%
          Les serveurs suivants sont en ligne :
          %UP_SERVERS%', - 'combi_pushover_message' => 'Les serveurs suivants sont hors-ligne :
          %DOWN_SERVERS%
          Les + 'combi_pushover_message' => 'Les serveurs suivants sont hors-ligne :
          %DOWN_SERVERS%
          Les serveurs suivants sont en ligne :
          %UP_SERVERS%', - 'combi_telegram_message' => 'Les serveurs suivants sont hors-ligne :
          %DOWN_SERVERS%
          Les + 'combi_telegram_message' => 'Les serveurs suivants sont hors-ligne :
          %DOWN_SERVERS%
          Les serveurs suivants sont en ligne :
          %UP_SERVERS%', - ), +), 'login' => array( - 'welcome_usermenu' => 'Bonjour %user_name%', - 'title_sign_in' => 'Connectez vous SVP', - 'title_forgot' => 'Mot de passe oublié ?', - 'title_reset' => 'Réinitialisation du mot de passe', - 'submit' => 'Envoyer', - 'remember_me' => 'Se souvenir de moi', - 'login' => 'Connexion', - 'logout' => 'Déconnexion', - 'username' => 'Nom', - 'password' => 'Mot de passe', - 'password_repeat' => 'Répéter le mot de passe', - 'password_forgot' => 'Mot de passe oublié ?', - 'password_reset' => 'Réinitialiser le mot de passe', - 'password_reset_email_subject' => 'Réinitialisation du mot de passe pour PHP Server Monitor', - 'password_reset_email_body' => 'Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe. + 'welcome_usermenu' => 'Bonjour %user_name%', + 'title_sign_in' => 'Connectez vous SVP', + 'title_forgot' => 'Mot de passe oublié ?', + 'title_reset' => 'Réinitialisation du mot de passe', + 'submit' => 'Envoyer', + 'remember_me' => 'Se souvenir de moi', + 'login' => 'Connexion', + 'logout' => 'Déconnexion', + 'username' => 'Nom', + 'password' => 'Mot de passe', + 'password_repeat' => 'Répéter le mot de passe', + 'password_forgot' => 'Mot de passe oublié ?', + 'password_reset' => 'Réinitialiser le mot de passe', + 'password_reset_email_subject' => 'Réinitialisation du mot de passe pour PHP Server Monitor', + 'password_reset_email_body' => 'Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe. Veuillez noter qu\'il expire dans une heure.

          %link%', - 'error_user_incorrect' => 'Nom d\'utilisateur invalide.', - 'error_login_incorrect' => 'Informations incorrectes.', - 'error_login_passwords_nomatch' => 'Mot de passe invalide.', - 'error_reset_invalid_link' => 'Le lien d\'initialisation du mot de passe n\'est pas valide.', - 'success_password_forgot' => 'Un email vous a été envoyé pour réinitialiser votre mot de passe.', - 'success_password_reset' => 'Votre mot de passe a été réinitialisé.', - ), + 'error_user_incorrect' => 'Nom d\'utilisateur invalide.', + 'error_login_incorrect' => 'Informations incorrectes.', + 'error_login_passwords_nomatch' => 'Mot de passe invalide.', + 'error_reset_invalid_link' => 'Le lien d\'initialisation du mot de passe n\'est pas valide.', + 'success_password_forgot' => 'Un email vous a été envoyé pour réinitialiser votre mot de passe.', + 'success_password_reset' => 'Votre mot de passe a été réinitialisé.', +), 'error' => array( - '401_unauthorized' => 'Non autorisée', - '401_unauthorized_description' => 'Vous n\'avez pas les privilèges nécessaires pour voir cette page.', - ), + '401_unauthorized' => 'Non autorisée', + '401_unauthorized_description' => 'Vous n\'avez pas les privilèges nécessaires pour voir cette page.', +), ); diff --git a/src/psm/Module/Consult/ConsultModule.php b/src/psm/Module/Consult/ConsultModule.php new file mode 100644 index 00000000..60e066c8 --- /dev/null +++ b/src/psm/Module/Consult/ConsultModule.php @@ -0,0 +1,25 @@ + __NAMESPACE__ . '\Controller\ConsultController', + 'server' => __NAMESPACE__ . '\Controller\ServerController', + 'log' => __NAMESPACE__ . '\Controller\LogController', + 'status' => __NAMESPACE__ . '\Controller\StatusController', + 'update' => __NAMESPACE__ . '\Controller\UpdateController', + ); + } +} \ No newline at end of file diff --git a/src/psm/Module/Consult/Controller/AbstractConsultController.php b/src/psm/Module/Consult/Controller/AbstractConsultController.php new file mode 100644 index 00000000..b44258f7 --- /dev/null +++ b/src/psm/Module/Consult/Controller/AbstractConsultController.php @@ -0,0 +1,113 @@ +. + * + * @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: v3.5.0 + * @link http://www.phpservermonitor.org/ + **/ + +namespace psm\Module\Consult\Controller; + +use psm\Module\Server\Controller\AbstractServerController; +use psm\Service\Database; +use Symfony\Component\HttpFoundation\Response; + +abstract class AbstractConsultController extends AbstractServerController +{ + /** + * Create HTML code for the menu + * @return string + */ + protected function createHTMLMenu() + { + return ''; + } + + public function __construct(Database $db, \Twig_Environment $twig) + { + parent::__construct($db, $twig); + + $this->twig->addGlobal('subtitle', psm_get_lang('openscop', 'consult_title')); + $this->twig->addGlobal('title', psm_get_lang('openscop', 'consult_title')); + } + + protected function createHTML($html = null) + { + if (!$this->xhr) { + // in XHR mode, we will not add the main template + $tpl_data = array( + 'title' => strtoupper(psm_get_lang('openscop', 'title')), + 'label_back_to_top' => psm_get_lang('system', 'back_to_top'), + 'add_footer' => $this->add_footer, + 'version' => 'v' . PSM_VERSION, + 'messages' => $this->getMessages(), + 'html_content' => $html, + ); + + // add menu to page? + if ($this->add_menu) { + $tpl_data['html_menu'] = $this->createHTMLMenu(); + } + // add header accessories to page ? + if ($this->header_accessories) { + $tpl_data['header_accessories'] = $this->header_accessories; + } + // add modal dialog to page ? + if (sizeof($this->modal)) { + $html_modal = ''; + foreach ($this->modal as $modal) { + $html_modal .= $modal->createHTML(); + } + $tpl_data['html_modal'] = $html_modal; + } + // add sidebar to page? + if ($this->sidebar !== null) { + $tpl_data['html_sidebar'] = $this->sidebar->createHTML(); + } + + if (psm_update_available()) { + $tpl_data['update_available'] = str_replace( + '{version}', + 'v' . + psm_get_conf('version_update_check'), + psm_get_lang('system', 'update_available') + ); + } + + if ($this->black_background) { + $tpl_data['body_class'] = 'black_background'; + } + + $tpl_data['custom_navbar'] = true; + + // Insert logo url in navbar + $tpl_data['logo_url'] = 'https://www.openscop.news/wp-content/uploads/sites/10/2020/04/logo_horizontal_600x150.png'; + $html = $this->twig->render('main/body.tpl.html', $tpl_data); + } + + $response = new Response($html); + + return $response; + } + +} \ No newline at end of file diff --git a/src/psm/Module/Consult/Controller/AbstractConsultServerController.php b/src/psm/Module/Consult/Controller/AbstractConsultServerController.php new file mode 100644 index 00000000..12d9e54b --- /dev/null +++ b/src/psm/Module/Consult/Controller/AbstractConsultServerController.php @@ -0,0 +1,115 @@ +. + * + * @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: v3.5.0 + * @link http://www.phpservermonitor.org/ + * @since phpservermon 3.0.0 + **/ + +namespace psm\Module\Consult\Controller; + +use psm\Module\AbstractController; +use psm\Module\Consult\Controller\AbstractConsultController; +use psm\Module\Server\Controller\AbstractServerController; +use psm\Service\Database; + +abstract class AbstractConsultServerController extends AbstractConsultController +{ + /** + * Get all servers for the current user + * @param Countable|array|\PDOStatement $server_id (int) if true only that server will be retrieved. + * @param array|\PDOStatement $ip + * @return array + */ + public function getServers($server_id = null, $ip = null) + { + $sql_join = ''; + $sql_where = ''; + + + if ($server_id !== null) { + $server_id = intval($server_id); + $sql_where = "WHERE `s`.`server_id`={$server_id} "; + } + + $sql = "SELECT + `s`.`server_id`, + `s`.`ip`, + `s`.`port`, + `s`.`request_method`, + `s`.`post_field`, + `s`.`type`, + `s`.`label`, + `s`.`pattern`, + `s`.`pattern_online`, + `s`.`redirect_check`, + `s`.`allow_http_status`, + `s`.`header_name`, + `s`.`header_value`, + `s`.`status`, + `s`.`error`, + `s`.`rtime`, + `s`.`last_check`, + `s`.`last_online`, + `s`.`last_offline`, + `s`.`last_offline_duration`, + `s`.`active`, + `s`.`email`, + `s`.`sms`, + `s`.`pushover`, + `s`.`telegram`, + `s`.`jabber`, + `s`.`warning_threshold`, + `s`.`warning_threshold_counter`, + `s`.`ssl_cert_expiry_days`, + `s`.`ssl_cert_expired_time`, + `s`.`timeout`, + `s`.`website_username`, + `s`.`website_password`, + `s`.`last_error`, + `s`.`last_error_output`, + `s`.`last_output` + FROM `" . PSM_DB_PREFIX . "servers` AS `s` + {$sql_join} + {$sql_where} + ORDER BY `active` ASC, `status` DESC, `label` ASC"; + $servers = $this->db->query($sql); + + if ($server_id !== null && count($servers) == 1) { + $servers = $servers[0]; + } + + return $servers; + } + + /** + * Format server data for display + * @param array $server + * @return array + */ + protected function formatServer($server) + { + return parent::formatServer($server); + } +} diff --git a/src/psm/Module/Consult/Controller/ConsultController.php b/src/psm/Module/Consult/Controller/ConsultController.php new file mode 100644 index 00000000..5a3f1b15 --- /dev/null +++ b/src/psm/Module/Consult/Controller/ConsultController.php @@ -0,0 +1,142 @@ +ip = isset($_GET['ip']) ? $_GET['ip'] : ""; + $this->setActions(array( + 'view', + ), 'index'); + $this->setMinUserLevelRequiredForAction(PSM_USER_ANONYMOUS, []); + $this->setMinUserLevelRequired(PSM_USER_ANONYMOUS); + } + + protected function executeView() + { + $sql = 'SELECT server_id FROM ' . PSM_DB_PREFIX . 'servers WHERE label = "' . $this->ip . '"'; + $server_id = $this->db->query($sql); + + if (empty($server_id)) { + $tpl_data = $this->getError(); + return $this->twig->render('module/error/401.tpl.html', $tpl_data); + } else + $id = $server_id[0]['server_id']; + $this->id = $id; + $server = $this->getServers($this->id); + $tpl_data = $this->getLabels(); + $tpl_data = array_merge($tpl_data, $this->formatServer($server)); + $history = new \psm\Util\Server\HistoryGraph($this->db, $this->twig); + $tpl_data['html_history'] = $history->createHTML($this->id); + $sidebar = new \psm\Util\Module\Sidebar($this->twig); + $this->setSidebar($sidebar); + return $this->twig->render('module/consult/consult.tpl.html', $tpl_data); + } + + protected function getError() + { + return array( + 'label_title' => "Erreur", + 'label_description' => "Vous n'avez pas saisi la bonne adresse !" + ); + } + + protected function getLabels() + { + return array( + 'label_label' => psm_get_lang('servers', 'label'), + 'label_status' => psm_get_lang('servers', 'status'), + 'label_domain' => psm_get_lang('servers', 'domain'), + 'label_timeout' => psm_get_lang('servers', 'timeout'), + 'label_timeout_description' => psm_get_lang('servers', 'timeout_description'), + 'label_authentication_settings' => psm_get_lang('servers', 'authentication_settings'), + 'label_optional' => psm_get_lang('servers', 'optional'), + 'label_website_username' => psm_get_lang('servers', 'website_username'), + 'label_website_username_description' => psm_get_lang('servers', 'website_username_description'), + 'label_website_password' => psm_get_lang('servers', 'website_password'), + 'label_website_password_description' => psm_get_lang('servers', 'website_password_description'), + 'label_fieldset_monitoring' => psm_get_lang('servers', 'fieldset_monitoring'), + 'label_fieldset_permissions' => psm_get_lang('servers', 'fieldset_permissions'), + 'label_permissions' => psm_get_lang('servers', 'permissions'), + 'label_port' => psm_get_lang('servers', 'port'), + 'label_custom_port' => psm_get_lang('servers', 'custom_port'), + 'label_popular_ports' => psm_get_lang('servers', 'popular_ports'), + 'label_request_method' => psm_get_lang('servers', 'request_method'), + 'label_custom_request_method' => psm_get_lang('servers', 'custom_request_method'), + 'label_popular_request_methods' => psm_get_lang('servers', 'popular_request_methods'), + 'label_post_field' => psm_get_lang('servers', 'post_field'), + 'label_post_field_description' => psm_get_lang('servers', 'post_field_description'), + 'label_none' => psm_get_lang('system', 'none'), + 'label_please_select' => psm_get_lang('servers', 'please_select'), + 'label_type' => psm_get_lang('servers', 'type'), + 'label_website' => psm_get_lang('servers', 'type_website'), + 'label_service' => psm_get_lang('servers', 'type_service'), + 'label_ping' => psm_get_lang('servers', 'type_ping'), + 'label_pattern' => psm_get_lang('servers', 'pattern'), + 'label_pattern_description' => psm_get_lang('servers', 'pattern_description'), + 'label_pattern_online' => psm_get_lang('servers', 'pattern_online'), + 'label_pattern_online_description' => psm_get_lang('servers', 'pattern_online_description'), + 'label_redirect_check' => psm_get_lang('servers', 'redirect_check'), + 'label_redirect_check_description' => psm_get_lang('servers', 'redirect_check_description'), + 'label_allow_http_status' => psm_get_lang('servers', 'allow_http_status'), + 'label_allow_http_status_description' => psm_get_lang('servers', 'allow_http_status_description'), + 'label_header_name' => psm_get_lang('servers', 'header_name'), + 'label_header_value' => psm_get_lang('servers', 'header_value'), + 'label_header_name_description' => psm_get_lang('servers', 'header_name_description'), + 'label_header_value_description' => psm_get_lang('servers', 'header_value_description'), + 'label_last_check' => psm_get_lang('servers', 'last_check'), + 'label_rtime' => psm_get_lang('servers', 'latency'), + 'label_last_online' => psm_get_lang('servers', 'last_online'), + 'label_last_offline' => psm_get_lang('servers', 'last_offline'), + 'label_last_output' => psm_get_lang('servers', 'last_output'), + 'label_last_error' => psm_get_lang('servers', 'last_error'), + 'label_last_error_output' => psm_get_lang('servers', 'last_error_output'), + 'label_monitoring' => psm_get_lang('servers', 'monitoring'), + 'label_email' => psm_get_lang('servers', 'email'), + 'label_send_email' => psm_get_lang('servers', 'send_email'), + 'label_sms' => psm_get_lang('servers', 'sms'), + 'label_send_sms' => psm_get_lang('servers', 'send_sms'), + 'label_send_pushover' => psm_get_lang('servers', 'send_pushover'), + 'label_telegram' => psm_get_lang('servers', 'telegram'), + 'label_jabber' => psm_get_lang('servers', 'jabber'), + 'label_pushover' => psm_get_lang('servers', 'pushover'), + 'label_send_telegram' => psm_get_lang('servers', 'send_telegram'), + 'label_send_jabber' => psm_get_lang('servers', 'send_jabber'), + 'label_users' => psm_get_lang('servers', 'users'), + 'label_warning_threshold' => psm_get_lang('servers', 'warning_threshold'), + 'label_warning_threshold_description' => psm_get_lang('servers', 'warning_threshold_description'), + 'label_ssl_cert_expiry_days' => psm_get_lang('servers', 'ssl_cert_expiry_days'), + 'label_ssl_cert_expiry_days_description' => psm_get_lang('servers', 'ssl_cert_expiry_days_description'), + 'label_action' => psm_get_lang('system', 'action'), + 'label_save' => psm_get_lang('system', 'save'), + 'label_go_back' => psm_get_lang('system', 'go_back'), + 'label_edit' => psm_get_lang('system', 'edit'), + 'label_delete' => psm_get_lang('system', 'delete'), + 'label_view' => psm_get_lang('system', 'view'), + 'label_yes' => psm_get_lang('system', 'yes'), + 'label_no' => psm_get_lang('system', 'no'), + 'label_add_new' => psm_get_lang('system', 'add_new'), + 'label_seconds' => psm_get_lang('config', 'seconds'), + 'label_online' => psm_get_lang('servers', 'online'), + 'label_offline' => psm_get_lang('servers', 'offline'), + 'label_ok' => psm_get_lang('system', 'ok'), + 'label_bad' => psm_get_lang('system', 'bad'), + 'default_value_timeout' => PSM_CURL_TIMEOUT, + 'label_settings' => psm_get_lang('system', 'settings'), + 'label_output' => psm_get_lang('servers', 'output'), + 'label_search' => psm_get_lang('system', 'search'), + ); + } +} \ No newline at end of file diff --git a/src/psm/Util/Server/HistoryGraph.php b/src/psm/Util/Server/HistoryGraph.php index 8b5b8e38..e9951e01 100644 --- a/src/psm/Util/Server/HistoryGraph.php +++ b/src/psm/Util/Server/HistoryGraph.php @@ -95,6 +95,10 @@ class HistoryGraph $tpl_data = array( 'graphs' => $graphs, ); + + //$graphs[1]['info'][0]['value'] = '1.2336'; + //echo '
          ';
          +        //print_r($graphs);die;
                   return $this->twig->render('module/server/history.tpl.html', $tpl_data);
               }
           
          diff --git a/src/templates/default/main/body.tpl.html b/src/templates/default/main/body.tpl.html
          index 75cb8396..3f7a3311 100644
          --- a/src/templates/default/main/body.tpl.html
          +++ b/src/templates/default/main/body.tpl.html
          @@ -24,14 +24,19 @@
           	
           	
           	
          +	{% if custom_navbar == 1 %}
          +	
          +	{% endif  %}
           	
           
           
           
          -