From 934f032c19ba0ae16a4d19702c8e95c377f64c14 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 5 Feb 2021 21:59:21 +0100 Subject: Better error message on failure (#3407) * bump default logout from 30 to 365 days * * Change cookie duration to constant * Change cookie duration to three months * use class * use 90 days (otherwise login form says 91.3 days) * change class * also this works now * Better error message * inconsistent dot with the other message * Better error message * add errorMessage() * fix style * html escape the error title * also html escape error message * remove spaces before parentheses * rework the error message * Minz-friendly * Update message Do not advise running this script as wrong user * Update lib/lib_rss.php Co-authored-by: Martin Co-authored-by: Martin Rys Co-authored-by: Frans de Jonge Co-authored-by: Alexandre Alapetite --- lib/Minz/FrontController.php | 31 ++++++++++++++++--------------- lib/lib_rss.php | 27 +++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 15 deletions(-) (limited to 'lib') diff --git a/lib/Minz/FrontController.php b/lib/Minz/FrontController.php index 1f67884fa..b6831c2f3 100644 --- a/lib/Minz/FrontController.php +++ b/lib/Minz/FrontController.php @@ -43,7 +43,7 @@ class Minz_FrontController { Minz_Request::forward ($url); } catch (Minz_Exception $e) { Minz_Log::error($e->getMessage()); - $this->killApp ($e->getMessage ()); + $this->killApp ($e->getMessage()); } $this->dispatcher = Minz_Dispatcher::getInstance(); @@ -54,21 +54,21 @@ class Minz_FrontController { * @return tableau représentant l'url */ private function buildUrl() { - $url = array (); + $url = array(); - $url['c'] = Minz_Request::fetchGET ( + $url['c'] = Minz_Request::fetchGET( 'c', - Minz_Request::defaultControllerName () + Minz_Request::defaultControllerName() ); - $url['a'] = Minz_Request::fetchGET ( + $url['a'] = Minz_Request::fetchGET( 'a', - Minz_Request::defaultActionName () + Minz_Request::defaultActionName() ); - $url['params'] = Minz_Request::fetchGET (); + $url['params'] = Minz_Request::fetchGET(); // post-traitement - unset ($url['params']['c']); - unset ($url['params']['a']); + unset($url['params']['c']); + unset($url['params']['a']); return $url; } @@ -76,7 +76,7 @@ class Minz_FrontController { /** * Démarre l'application (lance le dispatcher et renvoie la réponse) */ - public function run () { + public function run() { try { $this->dispatcher->run(); } catch (Minz_Exception $e) { @@ -92,11 +92,11 @@ class Minz_FrontController { $e instanceof Minz_ActionException) { Minz_Error::error ( 404, - array ('error' => array ($e->getMessage ())), + array('error' => array ($e->getMessage ())), true ); } else { - $this->killApp (); + $this->killApp(); } } } @@ -105,10 +105,11 @@ class Minz_FrontController { * Permet d'arrêter le programme en urgence */ private function killApp ($txt = '') { - if ($txt == '') { - $txt = 'See logs files'; + if (function_exists('errorMessage')) { + //If the application has defined a custom error message function + exit(errorMessage('Application problem', $txt)); } - exit ('### Application problem ###
'."\n".$txt); + exit('### Application problem ###
' . "\n" . $txt); } private function setReporting() { diff --git a/lib/lib_rss.php b/lib/lib_rss.php index 37eea7c0f..cf1cd1b50 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -578,3 +578,30 @@ function validateShortcutList($shortcuts) { } return $shortcuts_ok; } + +function errorMessage($errorTitle, $error = '') { + // Prevent empty

tags by checking if error isn't empty first + if ('' !== $error) { + $error = htmlspecialchars($error, ENT_NOQUOTES, 'UTF-8'); + $error = "

{$error}

"; + } + $errorTitle = htmlspecialchars($errorTitle, ENT_NOQUOTES, 'UTF-8'); + return <<{$errorTitle} + {$error} +

Common problems

+

A typical problem leading to this message is wrong file permissions in the ./FreshRSS/data/ folder so make sure the Web server can write there and in sub-directories.

+

Common locations for additional logs

+

N.B.: Adapt names and paths according to your local setup.

+
    +
  • If using Docker: docker logs -f freshrss
  • +
  • To check Web server logs on a Linux system using systemd: journalctl -xeu apache2 + and if you are using php-fpm: journalctl -xeu php-fpm
  • +
  • Otherwise, Web server logs are typically located in /var/log/apache2/ or similar
  • +
  • System logs may also contain relevant information in /var/log/syslog, or if using systemd: sudo journalctl -xe
  • +
+

More logs can be generated by enabling 'environment' => 'development', in ./FreshRSS/data/config.php

+

Running the feed update script (with the same user and PHP version as your Web server) might provide other hints, e.g.: + sudo -u www-data /usr/bin/php ./FreshRSS/app/actualize_script.php

+ MSG; +} -- cgit v1.2.3