Skip to content

Commit

Permalink
HTTP Auth : améliorations + changelog
Browse files Browse the repository at this point in the history
* 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.
  • Loading branch information
Alkarex committed Jan 1, 2014
1 parent a08201c commit 67531f7
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 22 deletions.
14 changes: 14 additions & 0 deletions CHANGELOG
@@ -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
Expand Down
16 changes: 9 additions & 7 deletions README.md
@@ -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/
Expand All @@ -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

![Capture d’écran de FreshRSS](http://marienfressinaud.fr/data/images/freshrss/freshrss_default-design.png)

Expand All @@ -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 :
Expand All @@ -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`.
23 changes: 18 additions & 5 deletions app/FreshRSS.php
Expand Up @@ -51,12 +51,25 @@ private function accessControl($currentUser) {

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()) {
Expand Down
2 changes: 1 addition & 1 deletion app/Models/Configuration.php
Expand Up @@ -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);
}
Expand Down
6 changes: 3 additions & 3 deletions index.html
Expand Up @@ -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>
2 changes: 1 addition & 1 deletion index.php
@@ -1,3 +1,3 @@
<?php
header('Location: p/i/', true, 301);
header('Location: p/', true, 301);
include('index.html');
22 changes: 20 additions & 2 deletions p/index.html
Expand Up @@ -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>
3 changes: 0 additions & 3 deletions p/index.php

This file was deleted.

1 comment on commit 67531f7

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented on 67531f7 Jan 1, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Contribue à #126

Please sign in to comment.