Table des matières

Tiny Tiny RSS

Tiny Tiny RSS est un lecteur de flux (RSS, RDS, Atom) écrit en PHP. Il s'installe donc sur un serveur central, et permet aux utilisateurs de suivre leurs flux depuis n'importe où. Tiny Tiny RSS (ou tt-rss) dispose d'une interface web riche (utilisation intensive d'AJAX), et s'utilise comme la plupart des lecteurs de flux “lourd” (installés sur les postes).

Site du projet: http://tt-rss.org/redmine/wiki/tt-rss/

Informations

Le rpms pour tt-rss présent dans notre dépôt contient les patches suivants:

Patch pour la création automatique des utilisateurs (plus nécessaire, intégré en upstream)

Patch pour la création automatique des utilisateurs (plus nécessaire, intégré en upstream)

diff -Nur -x '*.orig' -x '*.rej' tt-rss-1.5.0/config.php-dist mezzanine_patched_tt-rss-1.5.0/config.php-dist
--- tt-rss-1.5.0/config.php-dist	2010-12-21 07:30:28.000000000 +0100
+++ mezzanine_patched_tt-rss-1.5.0/config.php-dist	2011-01-03 12:39:21.000000000 +0100
@@ -135,6 +135,11 @@
 	// option can be used to integrate tt-rss with Apache's external
 	// authentication modules.
 
+        define('AUTO_CREATE_USER',true);
+        // If users are authenticated by your web server, set this to true if
+        // You want new users to be automaticaly created in tt-rss database
+        // on first login
+
 	define('LOCK_DIRECTORY', 'lock');
 	// Directory for lockfiles, must be writable to the user you run
 	// daemon process or cronjobs under.
diff -Nur -x '*.orig' -x '*.rej' tt-rss-1.5.0/functions.php mezzanine_patched_tt-rss-1.5.0/functions.php
--- tt-rss-1.5.0/functions.php	2011-01-03 12:41:23.000000000 +0100
+++ mezzanine_patched_tt-rss-1.5.0/functions.php	2011-01-03 12:41:15.000000000 +0100
@@ -1812,6 +1812,18 @@
 	            FROM ttrss_users WHERE
 					login = '$login'";
 
+                                if (defined('AUTO_CREATE_USER') && AUTO_CREATE_USER
+                                        && $_SERVER["REMOTE_USER"]) {
+                                    $result = db_query($link, $query);
+                                    // First login ?
+                                    if (db_num_rows($result) == 0) {
+                                        $insert = "INSERT INTO ttrss_users 
+                                                (login,access_level,last_login,created)
+                                                VALUES ('$login', 0, null, NOW())";
+                                        db_query($link, $insert);
+                                    }
+                                }
+
 			} else {
 				$query = "SELECT id,login,access_level,pwd_hash
 	            FROM ttrss_users WHERE
@@ -1828,7 +1840,23 @@
 
 				db_query($link, "UPDATE ttrss_users SET last_login = NOW() WHERE id = " . 
 					$_SESSION["uid"]);
-	
+
+                                // LemonLDAP can send user informations via HTTP HEADER
+                                if (defined('AUTO_CREATE_USER') && AUTO_CREATE_USER){
+                                    // update user name
+                                    if ($_SERVER['HTTP_USER_NAME']){
+                                        $fullname = db_escape_string($_SERVER['HTTP_USER_NAME']);
+                                        db_query($link, "UPDATE ttrss_users SET full_name = '$fullname' WHERE id = " .
+                                            $_SESSION["uid"]);
+                                    }
+                                    // update user mail
+                                    if ($_SERVER['HTTP_USER_MAIL']){
+                                        $email = db_escape_string($_SERVER['HTTP_USER_MAIL']);
+                                        db_query($link, "UPDATE ttrss_users SET email = '$email' WHERE id = " .
+                                            $_SESSION["uid"]);
+                                    }
+                                }
+
 				$_SESSION["ip_address"] = $_SERVER["REMOTE_ADDR"];
 				$_SESSION["pwd_hash"] = db_fetch_result($result, 0, "pwd_hash");

Patch pour que l'admin puisse s'authentifier par HTTP

Patch pour que l'admin puisse s'authentifier par HTTP

diff -Nur -x '*.orig' -x '*.rej' tt-rss-1.5.0/functions.php mezzanine_patched_tt-rss-1.5.0/functions.php
--- tt-rss-1.5.0/functions.php	2010-12-21 07:30:28.000000000 +0100
+++ mezzanine_patched_tt-rss-1.5.0/functions.php	2011-01-03 12:35:36.000000000 +0100
@@ -1804,7 +1804,7 @@
 			$login = db_escape_string($login);
 
 			if (defined('ALLOW_REMOTE_USER_AUTH') && ALLOW_REMOTE_USER_AUTH 
-					&& $_SERVER["REMOTE_USER"] && $login != "admin") {
+					&& $_SERVER["REMOTE_USER"]) {
 
 				$login = db_escape_string($_SERVER["REMOTE_USER"]);

Patch pour zapper la page de login (plus nécessaire, le patch a été intégré en upstream)

Patch pour zapper la page de login (plus nécessaire, le patch a été intégré en upstream)

diff -Nur -x '*.orig' -x '*.rej' tt-rss-1.5.0/config.php-dist mezzanine_patched_tt-rss-1.5.0/config.php-dist
--- tt-rss-1.5.0/config.php-dist	2011-01-03 12:44:20.000000000 +0100
+++ mezzanine_patched_tt-rss-1.5.0/config.php-dist	2011-01-03 12:44:11.000000000 +0100
@@ -140,6 +140,11 @@
         // You want new users to be automaticaly created in tt-rss database
         // on first login
 
+        define('AUTO_LOGIN',true);
+        // Set this to true if you use ALLOW_REMOTE_USER_AUTH and you want
+        // to skip the login form. If set to true, users won't be able to select
+        // profile
+
 	define('LOCK_DIRECTORY', 'lock');
 	// Directory for lockfiles, must be writable to the user you run
 	// daemon process or cronjobs under.
diff -Nur -x '*.orig' -x '*.rej' tt-rss-1.5.0/functions.php mezzanine_patched_tt-rss-1.5.0/functions.php
--- tt-rss-1.5.0/functions.php	2011-01-03 12:44:20.000000000 +0100
+++ mezzanine_patched_tt-rss-1.5.0/functions.php	2011-01-03 12:43:44.000000000 +0100
@@ -2019,9 +2019,15 @@
 			}
 
 			if (!$_SESSION["uid"] || !validate_session($link)) {
-				render_login_form($link, $mobile);
-				//header("Location: login.php");
-				exit;
+                                if (defined('ALLOW_REMOTE_USER_AUTH') && ALLOW_REMOTE_USER_AUTH
+                                        && $_SERVER["REMOTE_USER"] && defined('AUTO_LOGIN') && AUTO_LOGIN) {
+                                    authenticate_user($link,$_SERVER['REMOTE_USER'],null);
+                                    $_SESSION["ref_schema_version"] = get_schema_version($link, true);
+                                } else {
+                                    render_login_form($link, $mobile);
+                                    //header("Location: login.php");
+                                    exit;
+                                }
 			} else {
 				/* bump login timestamp */
 				db_query($link, "UPDATE ttrss_users SET last_login = NOW() WHERE id = " . 

Installation

iPasserelle

yum --enbalerepo=fws install smeserver-tt-rss

Une fois l'installation terminée, il suffit de lancer la commande:

signal-event webapps-update

Configuration

tt-rss dispose de certaines options accessibles dans la DB configuration:

Accès via un domaine virtuel

Pour accéder à tt-rss via un domaine virtuel, il suffit de le créer:

db domains set rss.$(db configuration get DomainName) domain Content Primary \
DocumentRoot /usr/share/tt-rss Description 'Rss Reader' \
Nameserver internet TemplatePath WebAppVirtualHost
signal-event domain-create rss.$(db configuration get DomainName)

CentOS

yum --enbalerepo=fws install tt-rss

Support LemonLDAP

Pour intégrer tt-rss sur un portail LemonLDAP::NG, il faut d'abord créer un domaine virtuel, puis, désactiver l'alias /tt-rss du domaine primaire (afin que le seul accès à l’application se fasse au travers du domaine virtuel dédié).

Sur une iPasserelle, vous pouvez le faire avec ces commandes

db domains setprop rss.$(db configuration get DomainName) LemonLDAP enabled
db configuration setprop tt-rss Authentication LemonLDAP AliasOnPrimary disabled
signal-event webapps-update

Pour les autres systèmes, il faudra éditer la configuration apache (/etc/httpd/conf.d/tt-rss.conf)

Il faut maintenant déclarer le virtualhost dans le manager de LemonLDAP, et créer (par exemple) ces deux règles:

Il faut également créer les entêtes HTTP suivantes: