diff options
| author | 2014-01-01 17:01:09 +0100 | |
|---|---|---|
| committer | 2014-01-01 17:01:09 +0100 | |
| commit | 67531f796f4c273cc9b078db788fdb51ece824ee (patch) | |
| tree | d6e9971e2eae28896bdfa36856025e66d6735cf7 | |
| parent | a08201c41486815de25c71f5497e939631ea68b4 (diff) | |
HTTP Auth : améliorations + changelog
* Affichage logo FreshRSS pendant la demande de nom d'utilisateur HTTP
* Meilleure page d'erreur si utilisateur HTTP non-configuré dans
FreshRSS + log
Je recommande donc de placer le .htaccess pour le contrôle d'accès dans
./FreshRSS/p/i/.htaccess et pas plus haut pour une meilleure mise en
cache et messages de connexion.
| -rw-r--r-- | CHANGELOG | 14 | ||||
| -rw-r--r-- | README.md | 16 | ||||
| -rw-r--r-- | app/FreshRSS.php | 23 | ||||
| -rw-r--r-- | app/Models/Configuration.php | 2 | ||||
| -rw-r--r-- | index.html | 6 | ||||
| -rw-r--r-- | index.php | 2 | ||||
| -rw-r--r-- | p/index.html | 22 | ||||
| -rw-r--r-- | p/index.php | 3 |
8 files changed, 66 insertions, 22 deletions
@@ -1,5 +1,19 @@ # Journal des modifications +## 2014-01-xx FreshRSS 0.7.5 + +* Nouveau mode multi-utilisateur + * L’utilisateur par défaut (administrateur) peut créer et supprimer d’autres utilisateurs + * Nécessite un contrôle d’accès, soit : + * par HTTP (par exemple sous Apache en créant un fichier ./p/i/.htaccess et .htpasswd) + * le nom d’utilisateur HTTP doit correspondre au nom d’utilisateur FreshRSS + * par Mozilla Persona, en renseignant l’adresse courriel des utilisateurs +* Options + * Réorganisation des options +* PHP + * Compatibilité PHP 5.5+ avec OPcache + * Amélioration des performances + ## 2014-01-xx FreshRSS 0.7 * Installeur @@ -1,6 +1,7 @@ # FreshRSS FreshRSS est un agrégateur de flux RSS à auto-héberger à l’image de [Leed](http://projet.idleman.fr/leed/) ou de [Kriss Feed](http://tontof.net/kriss/feed/). Il se veut léger et facile à prendre en main tout en étant un outil puissant et paramétrable. +Il permet de gérer plusieurs utilisateurs, et dispose d’un mode de lecture anonyme. * Site officiel : http://freshrss.org * Démo : http://marienfressinaud.fr/projets/freshrss/ @@ -21,11 +22,11 @@ Privilégiez pour cela des demandes sur GitHub # Pré-requis * Serveur Apache2 ou Nginx (non testé sur les autres) * PHP 5.2+ (PHP 5.3.3+ recommandé) - * Requis : [PDO_MySQL](http://php.net/pdo-mysql), [cURL](http://php.net/curl), [LibXML](http://php.net/xml), [PCRE](http://php.net/pcre), [ctype](http://php.net/ctype) - * Recommandés : [JSON](http://php.net/json), [zlib](http://php.net/zlib), [mbstring](http://php.net/mbstring), [iconv](http://php.net/iconv) + * Requis : [PDO_MySQL](http://php.net/pdo-mysql), [cURL](http://php.net/curl), [LibXML](http://php.net/xml), [PCRE](http://php.net/pcre), [ctype](http://php.net/ctype) + * Recommandés : [JSON](http://php.net/json), [zlib](http://php.net/zlib), [mbstring](http://php.net/mbstring), [iconv](http://php.net/iconv) * MySQL 5.0.3+ (ou SQLite 3.7.4+ à venir) * Un navigateur Web récent tel Firefox, Chrome, Opera, Safari, Internet Explorer 9+ - * Fonctionne aussi sur mobile + * Fonctionne aussi sur mobile  @@ -37,10 +38,11 @@ Privilégiez pour cela des demandes sur GitHub 5. Tout devrait fonctionner :) En cas de problème, n’hésitez pas à me contacter. # Contrôle d’accès -Il est recommandé de limiter l’accès à votre FreshRSS, soit : +Il est requis pour le mode multi-utilisateur, et recommandé dans tous les cas, de limiter l’accès à votre FreshRSS : * En utilisant l’identification par [Mozilla Persona](https://login.persona.org/about) incluse dans FreshRSS -* En utilisant un contrôle d’accès défini par votre serveur Web - * Voir par exemple la [documentation d’Apache sur l’authentification](http://httpd.apache.org/docs/trunk/howto/auth.html) +* En utilisant un contrôle d’accès HTTP défini par votre serveur Web + * Voir par exemple la [documentation d’Apache sur l’authentification](http://httpd.apache.org/docs/trunk/howto/auth.html) + * Créer dans ce cas un fichier `./p/i/.htaccess` avec un fichier `.htpasswd` correspondant. # Rafraîchissement automatique des flux * Vous pouvez ajouter une tâche CRON sur le script d’actualisation des flux. Par exemple, pour exécuter le script toutes les heures : @@ -51,6 +53,6 @@ Il est recommandé de limiter l’accès à votre FreshRSS, soit : # Conseils * Pour une meilleure sécurité, faites en sorte que seul le répertoire `./p/` soit accessible depuis le Web, par exemple en faisant pointer un sous-domaine sur le répertoire `./p/`. -* Les données personnelles se trouvent dans le répertoire `./data/` (déjà protégé par un .htaccess pour Apache - vérifiez que cela fonctionne -, à protéger vous-même dans le cas d’autres serveurs Web). + * En particulier, les données personnelles se trouvent dans le répertoire `./data/`. * Le fichier `./constants.php` définit les chemins d’accès aux répertoires clés de l’application. Si vous les bougez, tout se passe ici. * En cas de problème, les logs peuvent être utile à lire, soit depuis l’interface de FreshRSS, soit manuellement depuis `./data/log/*.log`. diff --git a/app/FreshRSS.php b/app/FreshRSS.php index 0af0c01da..4ebb6d631 100644 --- a/app/FreshRSS.php +++ b/app/FreshRSS.php @@ -51,12 +51,25 @@ class FreshRSS extends Minz_FrontController { try { $this->conf = new FreshRSS_Configuration($currentUser); - } catch (Minz_Exception $e) { - Minz_Session::_param('currentUser', ''); - die('Invalid configuration for user [' . $currentUser . ']! ' . $e->getMessage()); //Permission denied or conf file does not exist + Minz_View::_param ('conf', $this->conf); + Minz_Session::_param('currentUser', $currentUser); + } catch (Minz_Exception $me) { + $loginOk = false; + try { + $this->conf = new FreshRSS_Configuration(Minz_Configuration::defaultUser()); + Minz_Session::_param('currentUser', Minz_Configuration::defaultUser()); + Minz_View::_param('conf', $this->conf); + $notif = array( + 'type' => 'bad', + 'content' => 'Invalid configuration for user [' . $currentUser . ']!', + ); + Minz_Session::_param ('notification', $notif); + Minz_Log::record ($notif['content'] . ' ' . $me->getMessage(), Minz_Log::WARNING); + Minz_Session::_param('currentUser', ''); + } catch (Exception $e) { + die($e->getMessage()); + } } - Minz_View::_param ('conf', $this->conf); - Minz_Session::_param('currentUser', $currentUser); if ($loginOk) { switch (Minz_Configuration::authType()) { diff --git a/app/Models/Configuration.php b/app/Models/Configuration.php index e0ae3bf6b..d44420f56 100644 --- a/app/Models/Configuration.php +++ b/app/Models/Configuration.php @@ -64,7 +64,7 @@ class FreshRSS_Configuration { public function __construct ($user) { $this->filename = DATA_PATH . '/' . $user . '_user.php'; - $data = include($this->filename); + $data = @include($this->filename); if (!is_array($data)) { throw new Minz_PermissionDeniedException($this->filename); } diff --git a/index.html b/index.html index 1bfdea859..6ac025960 100644 --- a/index.html +++ b/index.html @@ -2,12 +2,12 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-GB" lang="en-GB"> <head> <meta charset="UTF-8" /> -<meta http-equiv="Refresh" content="0; url=p/i/" /> +<meta http-equiv="Refresh" content="0; url=p/" /> <title>Redirection</title> -<meta name="robots" content="noindex" /> +<meta name="robots" content="noindex,nofollow" /> </head> <body> -<p><a href="p/i/">FreshRSS</a></p> +<p><a href="p/">FreshRSS</a></p> </body> </html> @@ -1,3 +1,3 @@ <?php -header('Location: p/i/', true, 301); +header('Location: p/', true, 301); include('index.html'); diff --git a/p/index.html b/p/index.html index af91b717e..eaa0d71f8 100644 --- a/p/index.html +++ b/p/index.html @@ -2,11 +2,29 @@ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-GB" lang="en-GB"> <head> <meta charset="UTF-8" /> +<meta name="viewport" content="initial-scale=1.0" /> <meta http-equiv="Refresh" content="0; url=i/" /> -<title>Redirection</title> +<title>FreshRSS</title> +<meta name="robots" content="noindex,nofollow" /> +<link rel="icon" href="favicon.ico" /> +<style> +body { + font-family: sans-serif; + text-align: center; +} +h1 { + font-size: xx-large; + text-shadow: 1px -1px 0 #CCCCCC; +} +h1 a { + color: #0062BE; + text-decoration: none; +} +</style> </head> <body> -<p><a href="i/">FreshRSS</a></p> +<h1><a href="i/">FreshRSS</a></h1> +<p><a href="i/"><img class="logo" width="25%" src="themes/icons/icon.svg" alt="⊚" /></a></p> </body> </html> diff --git a/p/index.php b/p/index.php deleted file mode 100644 index e90662078..000000000 --- a/p/index.php +++ /dev/null @@ -1,3 +0,0 @@ -<?php -header('Location: i/', true, 301); -include('index.html'); |
