Merge branch 'hotfix/undefined-index-787' into production

This commit is contained in:
TimZ99 2019-09-30 18:00:28 +02:00
commit fcf623a160
No known key found for this signature in database
GPG Key ID: 4D8268DC68E8339D
14 changed files with 148 additions and 73 deletions

View File

@ -6,6 +6,11 @@ Not yet released
---------------- ----------------
\- \-
v3.4.5 (released September 30, 2019)
------------------------------------
* a8eaedc8: Fixed undefined index last_output.
v3.4.4 (released September 26, 2019) v3.4.4 (released September 26, 2019)
------------------------------------ ------------------------------------

View File

@ -5,8 +5,7 @@ PHP Server Monitor
:alt: Join the chat at https://gitter.im/erickrf/nlpnet :alt: Join the chat at https://gitter.im/erickrf/nlpnet
:target: https://gitter.im/phpservermon/phpservermon :target: https://gitter.im/phpservermon/phpservermon
Version 3.4.4 (Updated design!) Version 3.4.5
PHP Server Monitor is a script that checks whether your websites and servers are up and running. PHP Server Monitor is a script that checks whether your websites and servers are up and running.
It comes with a web based user interface where you can manage your services and websites, It comes with a web based user interface where you can manage your services and websites,

View File

@ -51,7 +51,7 @@ copyright = u'2008-2017, Pepijn Over'
# built documents. # built documents.
# #
# The short X.Y version. # The short X.Y version.
version = '3.4.4' version = '3.4.5'
# The full version, including alpha/beta/rc tags. # The full version, including alpha/beta/rc tags.
release = version release = version

View File

@ -476,17 +476,19 @@ function psm_update_available() {
// update last check date // update last check date
psm_update_conf('last_update_check', time()); psm_update_conf('last_update_check', time());
$latest = psm_curl_get(PSM_UPDATE_URL); $latest = psm_curl_get(PSM_UPDATE_URL);
// extract latest version from Github.
preg_match('/"tag_name":"[v](([\d][.][\d][.][\d])(-?\w*))"/', $latest, $latest);
// add latest version to database // add latest version to database
if ($latest !== false && strlen($latest) < 15) { if ($latest[2] !== false && strlen($latest[2]) < 15) {
psm_update_conf('version_update_check', $latest); psm_update_conf('version_update_check', $latest[2]);
} }
} else { } else {
$latest = psm_get_conf('version_update_check'); $latest[2] = psm_get_conf('version_update_check');
} }
if ($latest !== false) { if ($latest[2] !== false) {
$current = psm_get_conf('version'); $current = psm_get_conf('version');
return version_compare($latest, $current, '>'); return version_compare($latest[2], $current, '>');
} else { } else {
return false; return false;
} }

View File

@ -29,19 +29,19 @@
/** /**
* Current PSM version * Current PSM version
*/ */
define('PSM_VERSION', '3.4.4'); define('PSM_VERSION', '3.4.5');
/** /**
* URL to check for updates. Will not be checked if turned off on config page. * URL to check for updates. Will not be checked if turned off on config page.
* @see psm_update_available() * @see psm_update_available()
*/ */
define('PSM_UPDATE_URL', 'http://www.phpservermonitor.org/version.php'); define('PSM_UPDATE_URL', 'https://api.github.com/repos/phpservermon/phpservermon/releases/latest');
/** /**
* Default update interval (1 week). Only applicable when updates are enabled. * Default update interval (1 day). Only applicable when updates are enabled.
* @see psm_update_available() * @see psm_update_available()
*/ */
define('PSM_UPDATE_INTERVAL', 7 * 24 * 60 * 60); define('PSM_UPDATE_INTERVAL', 1 * 24 * 60 * 60);
/** /**
* Configuration for: Hashing strength * Configuration for: Hashing strength

View File

@ -26,7 +26,7 @@
**/ **/
$sm_lang = array( $sm_lang = array(
'name' => 'Estonian - Eesti keel', 'name' => 'Eesti keel - Estonian',
'locale' => array('et_ET.UTF-8', 'et_ET', 'estonian'), 'locale' => array('et_ET.UTF-8', 'et_ET', 'estonian'),
'locale_tag' => 'et', 'locale_tag' => 'et',
'locale_dir' => 'ltr', 'locale_dir' => 'ltr',

View File

@ -38,6 +38,7 @@ $sm_lang = array(
'save' => 'Enregistrer', 'save' => 'Enregistrer',
'edit' => 'Editer', 'edit' => 'Editer',
'delete' => 'Supprimer', 'delete' => 'Supprimer',
'view' => 'Détails',
'date' => 'Date', 'date' => 'Date',
'message' => 'Message', 'message' => 'Message',
'yes' => 'Oui', 'yes' => 'Oui',
@ -48,7 +49,10 @@ $sm_lang = array(
'back_to_top' => 'Haut de page', 'back_to_top' => 'Haut de page',
'go_back' => 'Retour', 'go_back' => 'Retour',
'ok' => 'OK', 'ok' => 'OK',
'bad' => 'mauvais',
'cancel' => 'Annuler', 'cancel' => 'Annuler',
'none' => 'Aucun',
'activate' => 'Activer',
// date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php // date/time format according the strftime php function format parameter http://php.net/manual/function.strftime.php
'short_day_format' => 'Le %e %B', 'short_day_format' => 'Le %e %B',
'long_day_format' => 'Le %e %B %Y', 'long_day_format' => 'Le %e %B %Y',
@ -73,6 +77,9 @@ $sm_lang = array(
'minutes' => 'minutes', 'minutes' => 'minutes',
'second' => 'seconde', 'second' => 'seconde',
'seconds' => 'secondes', 'seconds' => 'secondes',
'current' => 'actuel',
'settings' => 'Paramètres',
'search' => 'Recherche'
), ),
'menu' => array( 'menu' => array(
'config' => 'Configuration', 'config' => 'Configuration',
@ -90,7 +97,7 @@ $sm_lang = array(
'password' => 'Mot de passe', 'password' => 'Mot de passe',
'password_repeat' => 'Répéter le mot de passe', 'password_repeat' => 'Répéter le mot de passe',
'password_leave_blank' => 'Laisser vide pour ne pas le modifier', 'password_leave_blank' => 'Laisser vide pour ne pas le modifier',
'level' => 'Niveau', 'level' => 'Rôle',
'level_10' => 'Administrateur', 'level_10' => 'Administrateur',
'level_20' => 'Utilisateur', 'level_20' => 'Utilisateur',
'level_description' => 'Les <b>Administrateurs</b> ont un accès total. Ils peuvent gérer les serveurs, les utilisateurs et éditer la configuration globale.<br>Les <b>Utilisateurs</b> ne peuvent que voir et mettre à jour les serveurs qui leur ont été assignés.', 'level_description' => 'Les <b>Administrateurs</b> ont un accès total. Ils peuvent gérer les serveurs, les utilisateurs et éditer la configuration globale.<br>Les <b>Utilisateurs</b> ne peuvent que voir et mettre à jour les serveurs qui leur ont été assignés.',
@ -101,8 +108,18 @@ $sm_lang = array(
'pushover_key' => 'Clé Pushover', 'pushover_key' => 'Clé Pushover',
'pushover_device' => 'Appareil 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.', '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' => '<a href="https://telegram.org/">Telegram</a> est une application de messagerie instantanée qui facilite la réception de notification en temps réel. Lisez la <a href="http://docs.phpservermonitor.org/">documentation</a> 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 spécifiée. Sans cette permission, Telegram ne nous autorise pas à vous envoyer des notifications.',
'telegram_bot_username_found' => 'Le BOT a été trouvé&nbsp;!<br><a href="%s" target="_blank" rel="noopener"><button class="btn btn-primary">Étape suivante</button></a> <br>Cela va ouvrir une conversation avec le BOT. Vous devez appuyer sur \'/start\' ou le saisir.',
'telegram_bot_username_error_token' => '<b>401 - Unauthorized</b>. Assuez-vous que le Token API soit valide.',
'telegram_bot_error' => 'Une erreur s\'est produite en tentant d\'activer les notifications Telegram&nbsp;: %s',
'delete_title' => 'Supprimer un utilisateur', 'delete_title' => 'Supprimer un utilisateur',
'delete_message' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur \'%1\' ?', 'delete_message' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur \'%1\'&nbsp;?',
'deleted' => 'Utilisateur supprimé.', 'deleted' => 'Utilisateur supprimé.',
'updated' => 'Utilisateur mis à jour.', 'updated' => 'Utilisateur mis à jour.',
'inserted' => 'Utilisateur ajouté.', 'inserted' => 'Utilisateur ajouté.',
@ -113,7 +130,7 @@ $sm_lang = array(
'error_user_name_exists' => 'Ce nom d\'utilisateur existe déjà.', '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_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_email_invalid' => 'L\'adresse email n\'est pas valide.',
'error_user_level_invalid' => 'Le niveau d\'utilisateur 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_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_invalid' => 'Le mot de passe n\'est pas valide.',
'error_user_password_no_match' => 'Le mot de passe est incorrect.', 'error_user_password_no_match' => 'Le mot de passe est incorrect.',
@ -122,13 +139,14 @@ $sm_lang = array(
'title' => 'Événements', 'title' => 'Événements',
'type' => 'Type', 'type' => 'Type',
'status' => 'État', 'status' => 'État',
'email' => 'email', 'email' => 'Email',
'sms' => 'SMS', 'sms' => 'SMS',
'pushover' => 'Pushover', 'pushover' => 'Pushover',
'telegram' => 'Telegram',
'no_logs' => 'Aucun événement', 'no_logs' => 'Aucun événement',
'clear' => 'Claire registros', 'clear' => 'Effacer les journaux',
'delete_title' => 'Supprimer journaux', 'delete_title' => 'Supprimer les journaux',
'delete_message' => 'Êtes-vous sûr de vouloir supprimer <b>tous</b> les journaux?', 'delete_message' => 'Êtes-vous sûr de vouloir supprimer <b>tous</b> les journaux&nbsp;?',
), ),
'servers' => array( 'servers' => array(
'server' => 'Serveur', 'server' => 'Serveur',
@ -137,15 +155,47 @@ $sm_lang = array(
'domain' => 'Domaine/IP', 'domain' => 'Domaine/IP',
'timeout' => 'Délai d\'attente', 'timeout' => 'Délai d\'attente',
'timeout_description' => 'Nombre de secondes à attendre une réponse du serveur.', '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 base de donnée.',
'fieldset_monitoring' => 'Monitoring',
'fieldset_permissions' => 'Permissions',
'permissions' => 'Les utilisateurs suivants pourront voir le serveur.',
'port' => 'Port', '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' => 'Type',
'type_website' => 'Site Web', 'type_website' => 'Site Web',
'type_service' => 'Service', 'type_service' => 'Service',
'type_ping' => 'Ping',
'pattern' => 'Rechercher un texte/motif', '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éguliaires sont autorisées.', '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&nbsp;: Si ce texte <b>n\'est pas trouvé</b> sur le site internet, le serveur sera considéré en ligne. Hors-ligne&nbsp;: Si ce texte <b>n\'est pas trouvé</b> 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 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_check' => 'Dernière vérification',
'last_online' => 'Dernière fois OK', 'last_online' => 'Dernière fois OK',
'last_offline' => 'Dernière fois hors-ligne', '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é', 'monitoring' => 'Surveillé',
'no_monitoring' => 'Non surveillé', 'no_monitoring' => 'Non surveillé',
'email' => 'Email', 'email' => 'Email',
@ -153,9 +203,12 @@ $sm_lang = array(
'sms' => 'SMS', 'sms' => 'SMS',
'send_sms' => 'Envoyer un SMS', 'send_sms' => 'Envoyer un SMS',
'pushover' => 'Pushover', 'pushover' => 'Pushover',
'send_pushover' => 'Envoyer des notifications Pushover',
'telegram' => 'Telegram',
'send_telegram' => 'Envoyer des notifications Telegram',
'users' => 'Utilisateurs', 'users' => 'Utilisateurs',
'delete_title' => 'Supprimer un serveur', 'delete_title' => 'Supprimer un serveur',
'delete_message' => 'Êtes-vous sûr de vouloir supprimer le serveur \'%1\' ?', 'delete_message' => 'Êtes-vous sûr de vouloir supprimer le serveur \'%1\'&nbsp;?',
'deleted' => 'Serveur supprimé.', 'deleted' => 'Serveur supprimé.',
'updated' => 'Serveur mis à jour.', 'updated' => 'Serveur mis à jour.',
'inserted' => 'Serveur ajouté.', 'inserted' => 'Serveur ajouté.',
@ -163,6 +216,8 @@ $sm_lang = array(
'latency_max' => 'Temps de réponse maximum', 'latency_max' => 'Temps de réponse maximum',
'latency_min' => 'Temps de réponse minimum', 'latency_min' => 'Temps de réponse minimum',
'latency_avg' => 'Temps de réponse moyen', 'latency_avg' => 'Temps de réponse moyen',
'online' => 'en ligne',
'offline' => 'hors ligne',
'uptime' => 'Disponibilité', 'uptime' => 'Disponibilité',
'year' => 'Année', 'year' => 'Année',
'month' => 'Mois', 'month' => 'Mois',
@ -181,6 +236,7 @@ $sm_lang = array(
'warning_notifications_disabled_sms' => 'Les notifications SMS sont désactivées.', '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_email' => 'Les notifications par email sont désactivées.',
'warning_notifications_disabled_pushover' => 'Les notifications Pushover 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_no_match' => 'Serveur non trouvé.',
'error_server_label_bad_length' => 'Le nom doit avoir entre 1 et 255 caractères.', '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_length' => 'Domaine/IP doit avoir entre 1 et 255 caractères.',
@ -193,14 +249,20 @@ $sm_lang = array(
'general' => 'Général', 'general' => 'Général',
'language' => 'Langue', 'language' => 'Langue',
'show_update' => 'Vérifier les nouvelles mises à jour chaque semaine', '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&nbsp;!',
'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_status' => 'Autoriser l\'envoi de mail',
'email_from_email' => 'Adresse de l\'expéditeur', 'email_from_email' => 'Adresse de l\'expéditeur',
'email_from_name' => 'Nom de l\'expéditeur', 'email_from_name' => 'Nom de l\'expéditeur',
'email_smtp' => 'Utiliser un serveur SMTP', 'email_smtp' => 'Utiliser un serveur SMTP',
'email_smtp_host' => 'Adresse serveur SMTP', 'email_smtp_host' => 'Adresse serveur SMTP',
'email_smtp_port' => 'Port SMTP', 'email_smtp_port' => 'Port SMTP',
'email_smtp_security' => 'Sécurité SMTP', 'email_smtp_security' => 'Protocole de sécurité SMTP',
'email_smtp_security_none' => 'Aucune', 'email_smtp_security_none' => 'Aucun',
'email_smtp_username' => 'Nom utilisateur SMTP', 'email_smtp_username' => 'Nom utilisateur SMTP',
'email_smtp_password' => 'Mot de passe SMTP', 'email_smtp_password' => 'Mot de passe SMTP',
'email_smtp_noauth' => 'Laisser vide si pas d\'authentication', 'email_smtp_noauth' => 'Laisser vide si pas d\'authentication',
@ -214,32 +276,44 @@ $sm_lang = array(
'pushover_clone_app' => 'Cliquez ici pour créer votre application Pushover', 'pushover_clone_app' => 'Cliquez ici pour créer votre application Pushover',
'pushover_api_token' => 'Jeton application Pushover', 'pushover_api_token' => 'Jeton application Pushover',
'pushover_api_token_description' => 'Avant de pouvoir utiliser Pushover, vous devez <a href="%1$s" target="_blank" rel="noopener">créer une application</a> sur leur site web et entrer ici le jeton (Token) de l\'application.', 'pushover_api_token_description' => 'Avant de pouvoir utiliser Pushover, vous devez <a href="%1$s" target="_blank" rel="noopener">créer une application</a> sur leur site web et entrer ici le jeton (Token) de l\'application.',
'telegram_status' => 'Autorise l\'envoi de message Telegram',
'telegram_description' => '<a href="https://telegram.org/">Telegram</a> est une application de messagerie instantanée qui facilite la réception de notification en temps réel. Lisez la <a href="http://docs.phpservermonitor.org/">documentation</a> 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. Consultez la <a href="http://docs.phpservermonitor.org/">documentation</a> pour obtenir de l\'aide.',
'alert_type' => 'Choisissez quand vous souhaitez être notifié', 'alert_type' => 'Choisissez quand vous souhaitez être notifié',
'alert_type_description' => '<b>Changement d\'état : </b>'. 'alert_type_description' => '<b>Changement d\'état&nbsp;: </b>'.
'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.<br>'. '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.<br>'.
'<br><b>Hors service : </b>'. '<br><b>Hors service&nbsp;: </b>'.
'Vous ne recevez une notification que quand le serveur passe de l\'état OK à HORS SERVICE. Par exemple, '. 'Vous ne recevez une notification que quand le serveur passe de l\'état OK à HORS SERVICE. Par exemple, '.
'Votre tâche planifiée s\'exécute toutes les 15 minutes et votre serveur passe à l\'état HORS SERVICE à 1 heure du matin et le reste jusqu\'à 6 heures du matin.'. 'Votre tâche planifiée s\'exécute toutes les 15 minutes et votre serveur passe à l\'état HORS SERVICE à 1 heure du matin et le reste jusqu\'à 6 heures du matin.'.
'Vous ne recevez qu\'une seule notification à 1 heure du matin.<br>'. 'Vous ne recevez qu\'une seule notification à 1 heure du matin.<br>'.
'<br><b>Toujours : </b>'. '<br><b>Toujours&nbsp;: </b>'.
'Vous recevez une notification à chaque exécution de la tâche planifiée si le serveur est à l\'état HORS SERVICE ', '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_status' => 'Changement d\'état',
'alert_type_offline' => 'Hors service', 'alert_type_offline' => 'Hors service',
'alert_type_always' => 'Toujours', '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&nbsp;: hôte:port',
'log_status' => 'Etat des événements', '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_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_email' => 'Enregistrer tous les emails envoyés',
'log_sms' => 'Enregistrer tous les SMS envoyés', 'log_sms' => 'Enregistrer tous les SMS envoyés',
'log_pushover' => 'Enregistrer tous les messages Pushover 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.', 'updated' => 'La configuration a été mise à jour.',
'tab_email' => 'Email', 'tab_email' => 'Email',
'tab_sms' => 'SMS', 'tab_sms' => 'SMS',
'tab_pushover' => 'Pushover', 'tab_pushover' => 'Pushover',
'tab_telegram' => 'Telegram',
'settings_email' => 'Configuration email', 'settings_email' => 'Configuration email',
'settings_sms' => 'Configuration SMS', 'settings_sms' => 'Configuration SMS',
'settings_pushover' => 'Configuration Pushover', 'settings_pushover' => 'Configuration Pushover',
'settings_telegram' => 'Configuration Telegram',
'settings_notification' => 'Configuration des notifications', 'settings_notification' => 'Configuration des notifications',
'settings_log' => 'Configuration des événements', 'settings_log' => 'Configuration des événements',
'settings_proxy' => 'Configuration du proxy',
'auto_refresh' => 'Auto-rachaîchissement', 'auto_refresh' => 'Auto-rachaîchissement',
'auto_refresh_description' => 'auto_refresh_description' =>
'Auto-rachaîchissement de la page serveurs.<br>'. 'Auto-rachaîchissement de la page serveurs.<br>'.
@ -251,18 +325,23 @@ $sm_lang = array(
'test_email' => 'Un email va vous être envoyé à l\'adresse définie dans votre profil utilisateur.', '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_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_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 conversation).',
'send' => 'Envoyer', 'send' => 'Envoyer',
'test_subject' => 'Test', 'test_subject' => 'Test',
'test_message' => 'Message de test', 'test_message' => 'Message de test',
'email_sent' => 'Email envoyé', 'email_sent' => 'Email envoyé',
'email_error' => 'Erreur lors de l\'envoi de l\'email', 'email_error' => 'Erreur lors de l\'envoi de l\'email',
'sms_sent' => 'Sms envoyé', 'sms_sent' => 'SMS envoyé',
'sms_error' => 'Erreur lors de l\'envoi du SMS. %s', '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.', '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_sent' => 'Notification Pushover envoyée',
'pushover_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification Pushover : %s', 'pushover_error' => 'Une erreur s\'est produite lors de l\'envoi de la notification Pushover&nbsp;: %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_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é définie dans votre profil.', '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&nbsp;: %s',
'telegram_error_notoken' => 'Impossible d\'envoyé la notification de test&nbsp;: aucun token APII token trouvé dans la configuration.',
'telegram_error_noid' => 'Impossible d\'envoyé la notification de test&nbsp;: aucun ID de conversation trouvé dans votre profil utilisateur.',
'log_retention_period' => 'Durée de conservation', '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_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',
@ -271,19 +350,32 @@ $sm_lang = array(
'notifications' => array( 'notifications' => array(
'off_sms' => 'Le Serveur \'%LABEL%\' est HORS SERVICE: IP=%IP%, Port=%PORT%. Erreur=%ERROR%', '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_subject' => 'IMPORTANT: Le Serveur \'%LABEL%\' est HORS SERVICE',
'off_email_body' => "Impossible de se connecter au serveur suivant:<br><br>Serveur: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Erreur: %ERROR%<br>Date: %DATE%", 'off_email_body' => "Impossible de se connecter au serveur suivant:<br><br>Serveur&nbsp;: %LABEL%<br>IP&nbsp;: %IP%<br>Port&nbsp;: %PORT%<br>Erreur&nbsp;: %ERROR%<br>Date: %DATE%",
'off_pushover_title' => 'Le Serveur \'%LABEL%\' est HORS SERVICE', 'off_pushover_title' => 'Le Serveur \'%LABEL%\' est HORS SERVICE',
'off_pushover_message' => "Impossible de se connecter au serveur suivant:<br><br>Serveur: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Erreur: %ERROR%<br>Date: %DATE%", 'off_pushover_message' => "Impossible de se connecter au serveur suivant&nbsp;:<br><br>Serveur&nbsp;: %LABEL%<br>IP&nbsp;: %IP%<br>Port&nbsp;: %PORT%<br>Erreur&nbsp;: %ERROR%<br>Date&nbsp;: %DATE%",
'off_telegram_message' => "Impossible de se connecter au serveur suivant&nbsp;:<br><br>Serveur&nbsp;: %LABEL%<br>IP&nbsp;: %IP%<br>Port&nbsp;: %PORT%<br>Erreur&nbsp;: %ERROR%<br>Date&nbsp;: %DATE%",
'on_sms' => 'Le Serveur \'%LABEL%\' est OK: IP=%IP%, Port=%PORT%, il était hors-ligne pendant %LAST_OFFLINE_DURATION%', '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_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%:<br><br>Serveur: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date: %DATE%", 'on_email_body' => "Le Serveur '%LABEL%' est de nouveau OK, il était hors-ligne pendant %LAST_OFFLINE_DURATION%:<br><br>Serveur: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date: %DATE%",
'on_pushover_title' => 'Le Serveur \'%LABEL%\' est OK', '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%:<br><br>Serveur: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date: %DATE%", 'on_pushover_message' => "Le Serveur '%LABEL%' est de nouveau OK, il était hors-ligne pendant %LAST_OFFLINE_DURATION%:<br><br>Serveur: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date: %DATE%",
'on_telegram_message' => 'Server \'%LABEL%\' is running again, it was down for: %LAST_OFFLINE_DURATION%<br><br>Server: %LABEL%<br>IP: %IP%<br>Port: %PORT%<br>Date: %DATE%',
'combi_off_email_message' => "<ul><li>Serveur&nbsp;: %LABEL%</li><li>IP&nbsp;: %IP%</li><li>Port&nbsp;: %PORT%</li><li>Erreur&nbsp;: %ERROR%</li><li>Date&nbsp;: %DATE%</li></ul>",
'combi_off_pushover_message' => "<ul><li>Serveur&nbsp;: %LABEL%</li><li>IP&nbsp;: %IP%</li><li>Port&nbsp;: %PORT%</li><li>Erreur&nbsp;: %ERROR%</li><li>Date&nbsp;: %DATE%</li></ul>",
'combi_off_telegram_message' => "- Serveur&nbsp;: %LABEL%<br>- IP&nbsp;: %IP%<br>- Port&nbsp;: %PORT%<br>- Erreur&nbsp;: %ERROR%<br>- Date&nbsp;: %DATE%<br><br>",
'combi_on_email_message' => "<ul><li>Serveur&nbsp;: %LABEL%</li><li>IP&nbsp;: %IP%</li><li>Port&nbsp;: %PORT%</li><li>Durée&nbsp;: %LAST_OFFLINE_DURATION%</li><li>Date&nbsp;: %DATE%</li></ul>",
'combi_on_pushover_message' => '<ul><li>Serveur&nbsp;: %LABEL%</li><li>IP&nbsp;: %IP%</li><li>Port&nbsp;: %PORT%</li><li>Durée&nbsp;: %LAST_OFFLINE_DURATION%</li><li>Date&nbsp;: %DATE%</li></ul>',
'combi_on_telegram_message' => '- Serveur&nbsp;: %LABEL%<br>- IP: %IP%<br>- Port&nbsp;: %PORT%<br>- Durée&nbsp;: %LAST_OFFLINE_DURATION%<br>- Date&nbsp;: %DATE%<br><br>',
'combi_email_subject' => 'IMPORTANT&nbsp;: \'%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' => '<b>Les serveurs suivants sont hors-ligne&nbsp;:</b><br>%DOWN_SERVERS%<br><b>Les serveurs suivants sont en ligne&nbsp;:</b><br>%UP_SERVERS%',
'combi_pushover_message' => '<b>Les serveurs suivants sont hors-ligne&nbsp;:</b><br>%DOWN_SERVERS%<br><b>Les serveurs suivants sont en ligne&nbsp;:</b><br>%UP_SERVERS%',
'combi_telegram_message' => '<b>Les serveurs suivants sont hors-ligne&nbsp;:</b><br>%DOWN_SERVERS%<br><b>Les serveurs suivants sont en ligne&nbsp;:</b><br>%UP_SERVERS%',
), ),
'login' => array( 'login' => array(
'welcome_usermenu' => 'Bonjour %user_name%', 'welcome_usermenu' => 'Bonjour %user_name%',
'title_sign_in' => 'Connectez vous SVP', 'title_sign_in' => 'Connectez vous SVP',
'title_forgot' => 'Mot de passe oublié ?', 'title_forgot' => 'Mot de passe oublié&nbsp;?',
'title_reset' => 'Réinitialisation du mot de passe', 'title_reset' => 'Réinitialisation du mot de passe',
'submit' => 'Envoyer', 'submit' => 'Envoyer',
'remember_me' => 'Se souvenir de moi', 'remember_me' => 'Se souvenir de moi',
@ -292,14 +384,14 @@ $sm_lang = array(
'username' => 'Nom', 'username' => 'Nom',
'password' => 'Mot de passe', 'password' => 'Mot de passe',
'password_repeat' => 'Répéter le mot de passe', 'password_repeat' => 'Répéter le mot de passe',
'password_forgot' => 'Mot de passe oublié ?', 'password_forgot' => 'Mot de passe oublié&nbsp;?',
'password_reset' => 'Réinitialiser le mot de passe', '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_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.<br><br>%link%', '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.<br><br>%link%',
'error_user_incorrect' => 'Nom d\'utilisateur invalide.', 'error_user_incorrect' => 'Nom d\'utilisateur invalide.',
'error_login_incorrect' => 'Informations incorrectes.', 'error_login_incorrect' => 'Informations incorrectes.',
'error_login_passwords_nomatch' => 'Mot de passe invalide.', 'error_login_passwords_nomatch' => 'Mot de passe invalide.',
'error_reset_invalid_link' => 'Le lien d\initialisation du mot de passe n\'est pas valide.', '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_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é.', 'success_password_reset' => 'Votre mot de passe a été réinitialisé.',
), ),

View File

@ -27,7 +27,7 @@
**/ **/
$sm_lang = array( $sm_lang = array(
'name' => 'Russian - Русский', 'name' => 'Русский - Russian',
'locale' => array('ru_RU.UTF-8', 'ru_RU', 'russian', 'russian'), 'locale' => array('ru_RU.UTF-8', 'ru_RU', 'russian', 'russian'),
'locale_tag' => 'ru', 'locale_tag' => 'ru',
'locale_dir' => 'ltr', 'locale_dir' => 'ltr',

View File

@ -26,7 +26,7 @@
**/ **/
$sm_lang = array( $sm_lang = array(
'name' => 'Tiếng Việt', 'name' => 'Tiếng Việt - Vietnamese',
'locale' => array('vi_VN.UTF-8', 'vi_VN', 'Việt Nam'), 'locale' => array('vi_VN.UTF-8', 'vi_VN', 'Việt Nam'),
'system' => array( 'system' => array(
'title' => 'Server Monitor', 'title' => 'Server Monitor',

View File

@ -126,7 +126,7 @@ class StatusUpdater {
// if the server is on, add the last_online value and reset the error threshold counter // if the server is on, add the last_online value and reset the error threshold counter
$save['status'] = 'on'; $save['status'] = 'on';
$save['last_online'] = date('Y-m-d H:i:s'); $save['last_online'] = date('Y-m-d H:i:s');
$save['last_output'] = $this->header; $save['last_output'] = substr($this->header,0,5000);
$save['warning_threshold_counter'] = 0; $save['warning_threshold_counter'] = 0;
if ($this->server['status'] == 'off') { if ($this->server['status'] == 'off') {
$online_date = new \DateTime($save['last_online']); $online_date = new \DateTime($save['last_online']);
@ -152,15 +152,6 @@ class StatusUpdater {
} }
} }
} }
// PATCH Arkhee: fix/last-online-stuck-on-never-if-webpage-too-large
// Updating table "servers" does not work
// Symptom: "Last online" stays stuck on "never"
// Reason: last_output contains the full webpage, too long for the query
// This may depend on mysql configuration on the server_, explaining why some have the problem or not
// Field is 255 Chars, and request does not work anyway is loaded web page is too large in last_output
// Solution: updated column to text and truncate to 5000 characters or less before the query
$save["last_output"] = substr($save["last_output"],0,5000);
// End PATCH
$this->db->save(PSM_DB_PREFIX.'servers', $save, array('server_id' => $this->server_id)); $this->db->save(PSM_DB_PREFIX.'servers', $save, array('server_id' => $this->server_id));
return $this->status_new; return $this->status_new;

View File

@ -68,8 +68,7 @@
Powered by Powered by
<a href="https://github.com/phpservermon/phpservermon/" target="_blank" rel="noopener"> <a href="https://github.com/phpservermon/phpservermon/" target="_blank" rel="noopener">
PHP Server Monitor {{ version }}. PHP Server Monitor {{ version }}.
</a> </a><span style="color:red;">{{ update_available|raw }}</span><a href="#" class="float-right">{{ label_back_to_top }}</a>
{{ update_available }} <a href="#" class="float-right">{{ label_back_to_top }}</a>
</span> </span>
</div> </div>
</footer> </footer>

View File

@ -1,2 +1,2 @@
html{position:relative;min-height:100%}html[dir='rtl'] #auto_refresh_servers,html[dir='rtl'] #log_retention_period{border-left-width:0px}html[dir='rtl'] #auto_refresh_servers_input,html[dir='rtl'] #log_retention_period_input{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0;border-bottom-right-radius:0}body{padding-top:4.5rem;margin-bottom:80px}.footer{position:absolute;bottom:0;width:100%;height:60px;line-height:60px;background-color:#f5f5f5}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.64)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,0.85)}dl,dt,dd{margin-bottom:0}footer .text-muted{color:#4C5557 !important}a,button,.nav-link{min-height:44px !important;min-width:44px !important}a.icon{text-decoration:none;cursor:pointer;padding-left:10px}#auto_refresh_servers,#log_retention_period{border-right-width:0px}#auto_refresh_servers_input,#log_retention_period_input{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-top-left-radius:0;border-bottom-left-radius:0}form.form-signin input[type="text"],form.form-reset input[type="text"]{border-bottom-left-radius:0;border-bottom-right-radius:0}form.form-signin input[type="password"]{border-top-left-radius:0;border-top-right-radius:0}form.form-reset input#input-password{border-radius:0}form.form-reset input#input-password-repeat{border-top-left-radius:0;border-top-right-radius:0}form.form-signin,form.form-forgot,form.form-reset{margin:auto}table{table-layout:fixed}th,td{max-width:1px}.content{word-wrap:break-word;overflow-wrap:break-word}table tr[visible='false'],.no-result{display:none}table tr[visible='true']{display:table-row}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:unset}#meter{border-radius:200px 200px 0 0;height:100px;margin:50px auto 0;overflow:hidden;position:relative;width:200px}#meter:before{background:#fbfbfb;border-radius:200px 200px 0 0;-webkit-box-shadow:3px 1px 8px rgba(0,0,0,0.15) inset;box-shadow:3px 1px 8px rgba(0,0,0,0.15) inset;content:"";height:100px;position:absolute;width:200px}#meter:after{background:#fff;border-radius:140px 140px 0 0;bottom:0;-webkit-box-shadow:3px 1px 8px rgba(0,0,0,0.15);box-shadow:3px 1px 8px rgba(0,0,0,0.15);content:"\a" attr(data-value) "%\a" attr(translation);font-size:1.5em;font-weight:100;height:80px;left:20px;line-height:25px;position:absolute;text-align:center;width:160px;z-index:3;white-space:pre}#needle{background:rgba(52,52,64,0.7);border-radius:4px;bottom:-4px;-webkit-box-shadow:3px -1px 4px rgba(0,0,0,0.4);box-shadow:3px -1px 4px rgba(0,0,0,0.4);display:block;height:8px;left:5px;position:absolute;width:95px;-webkit-transform-origin:100% 4px;transform-origin:100% 4px;-webkit-transition:all 1s;transition:all 1s;border-radius:4px;bottom:-4px;box-shadow:3px -1px 4px rgba(0,0,0,0.4);display:block;height:8px;left:5px;position:absolute;width:95px;transform-origin:100% 4px;transition:all 1s} html{position:relative;min-height:100%}html[dir='rtl'] #auto_refresh_description,html[dir='rtl'] #log_retention_period_help{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}html[dir='ltr'] #auto_refresh_description,html[dir='ltr'] #log_retention_period_help{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}body{padding-top:4.5rem;margin-bottom:80px}.footer{position:absolute;bottom:0;width:100%;height:60px;line-height:60px;background-color:#f5f5f5}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.64)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,0.85)}dl,dt,dd{margin-bottom:0}footer .text-muted{color:#4C5557 !important}a,button,.nav-link{min-height:44px !important;min-width:44px !important}a.icon{text-decoration:none;cursor:pointer;padding-left:10px}form.form-signin input[type="text"],form.form-reset input[type="text"]{border-bottom-left-radius:0;border-bottom-right-radius:0}form.form-signin input[type="password"]{border-top-left-radius:0;border-top-right-radius:0}form.form-reset input#input-password{border-radius:0}form.form-reset input#input-password-repeat{border-top-left-radius:0;border-top-right-radius:0}form.form-signin,form.form-forgot,form.form-reset{margin:auto}table{table-layout:fixed}th,td{max-width:1px}.content{word-wrap:break-word;overflow-wrap:break-word}table tr[visible='false'],.no-result{display:none}table tr[visible='true']{display:table-row}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:unset}#meter{border-radius:200px 200px 0 0;height:100px;margin:50px auto 0;overflow:hidden;position:relative;width:200px}#meter:before{background:#fbfbfb;border-radius:200px 200px 0 0;-webkit-box-shadow:3px 1px 8px rgba(0,0,0,0.15) inset;box-shadow:3px 1px 8px rgba(0,0,0,0.15) inset;content:"";height:100px;position:absolute;width:200px}#meter:after{background:#fff;border-radius:140px 140px 0 0;bottom:0;-webkit-box-shadow:3px 1px 8px rgba(0,0,0,0.15);box-shadow:3px 1px 8px rgba(0,0,0,0.15);content:"\a" attr(data-value) "%\a" attr(translation);font-size:1.5em;font-weight:100;height:80px;left:20px;line-height:25px;position:absolute;text-align:center;width:160px;z-index:3;white-space:pre}#needle{background:rgba(52,52,64,0.7);border-radius:4px;bottom:-4px;-webkit-box-shadow:3px -1px 4px rgba(0,0,0,0.4);box-shadow:3px -1px 4px rgba(0,0,0,0.4);display:block;height:8px;left:5px;position:absolute;width:95px;-webkit-transform-origin:100% 4px;transform-origin:100% 4px;-webkit-transition:all 1s;transition:all 1s;border-radius:4px;bottom:-4px;box-shadow:3px -1px 4px rgba(0,0,0,0.4);display:block;height:8px;left:5px;position:absolute;width:95px;transform-origin:100% 4px;transition:all 1s}
/*# sourceMappingURL=style.min.css.map */ /*# sourceMappingURL=style.min.css.map */

View File

@ -1,6 +1,6 @@
{ {
"version": 3, "version": 3,
"mappings": "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", "mappings": "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",
"sources": [ "sources": [
"../scss/style.scss" "../scss/style.scss"
], ],

View File

@ -4,18 +4,18 @@ html {
} }
html[dir='rtl'] { html[dir='rtl'] {
#auto_refresh_description,
#auto_refresh_servers, #log_retention_period_help {
#log_retention_period {
border-left-width: 0px
}
#auto_refresh_servers_input,
#log_retention_period_input {
border-top-left-radius: .25rem; border-top-left-radius: .25rem;
border-bottom-left-radius: .25rem; border-bottom-left-radius: .25rem;
border-top-right-radius: 0; }
border-bottom-right-radius: 0; }
html[dir='ltr'] {
#auto_refresh_description,
#log_retention_period_help {
border-top-right-radius: .25rem;
border-bottom-right-radius: .25rem;
} }
} }
@ -65,19 +65,6 @@ a.icon {
padding-left: 10px; padding-left: 10px;
} }
#auto_refresh_servers,
#log_retention_period {
border-right-width: 0px
}
#auto_refresh_servers_input,
#log_retention_period_input {
border-top-right-radius: .25rem;
border-bottom-right-radius: .25rem;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
form.form-signin input[type="text"], form.form-signin input[type="text"],
form.form-reset input[type="text"] { form.form-reset input[type="text"] {
border-bottom-left-radius: 0; border-bottom-left-radius: 0;