Février 2013 Archives

2013-02-16 20:23

Transmission : utiliser apache comme proxy

Je suis un adepte du P2P pour télécharger mes images Linux. Jusque là, j'utilisais rtorrent, allié à l'interface web rutorrent (pour les endroits où de méchants sysadmins ont bloqué le port SSH).

Le problème de rutorrent, en dehors du fait que c'est moche, c'est qu'il faut un i7 overclocké juste pour interpréter le javascript. Autant dire que j'étais un poil juste avec mon atom...

Après quelques tests, j'ai été convaincu par Transmission : un joli fichier texte pour tout configurer, une interface web simple mais légère, et la possibilité de se connecter à distance en utilisant une interface lourde.

Par contre, utiliser Apache comme proxy pour l'interface web relève du défi : presque tout le monde bute sur l'erreur 409 de la mort :

409: Conflict

Your request had an invalid session-id header.

To fix this, follow these steps:

When reading a response, get its X-Transmission-Session-Id header and remember it
Add the updated header to your outgoing requests
When you get this 409 error message, resend your request with the updated header

This requirement has been added to help prevent CSRF attacks.

Après de longues recherches infructueuses, je me suis preque résigné. Et puis je suis tombé sur ce post, qui contient LA solution.

Il suffit en fait de ne pas mettre le "/" final lorqu'on spécifie le domaine cible, à l'aide des directive ProxyPass et ProxyPassReverse. Je donne donc ma configuration, elle sera peut être utile à d'autres :

<VirtualHost *:443>
        ServerName monServeur.fr
        ServerAlias www.monServeur.fr
        Redirect permanent / https://monServeur.fr/transmission

        RewriteEngine on
        RewriteRule /transmission[/]?$ /transmission/web/ [R=permanent]

        SSLEngine on
        SSLCertificateFile    /etc/httpd/ssl/monServeur/monCertificat.fr.crt
        SSLCertificateKeyFile /etc/httpd/ssl/monServeur/monCertificat.fr.key
 
        ProxyRequests On
        ProxyPreserveHost Off 
        <Proxy *>
        Order allow,deny
        Allow from all 
        </Proxy>

        ProxyPass /transmission http://127.0.0.1:9091/transmission
        ProxyPassReverse /transmission http://127.0.0.1:9091/transmission
</Virtualhost>

<VirtualHost *:80>
        ServerName monServeur.fr
        ServerAlias www.monServeur.fr
        Redirect permanent / https://monServeur.fr/transmission
</Virtualhost>

À noter qu'Apache n'a pas besoin de gérer l'authentification, qui peut être configurée directement dans le fichier de conf de Transmission-daemon.


Posted by St3rk | Permanent link

2013-02-16 19:39

NetBSD : problème au redémarrage d'Apache

J'ai récemment eu un problème étrange sur ma NetBSD. Après quelques redémarrages successifs, Apache refusait de se lancer. Dans le logs, je retrouvais l'erreur suivante :

(28)No space left on device: AH00023: Couldn't create the authdigest-opaque mutex

Pourtant, mon disque dur était loin d'être plein, et un reboot permettait de résoudre le problème. J'ai fini par trouver la solution sur ce blog.

Le soucis provenait en réalité de nombreux sémaphores, qui n'étaient pas supprimés lors de l'arrêt du démon. On peut les observer à l'aide d'ipcs :

# ipcs -s
IPC status from  as of Sat Feb 16 19:30:12 2013

Semaphores:
T        ID     KEY        MODE       OWNER    GROUP
s   2752512          0 --rw-------      www      www
s   1376257          0 --rw-------      www      www
s   1376258          0 --rw-------      www      www
s   2293763          0 --rw-------      www      www

La commande ipcrm permet de s'en débarasser :

# ipcrm -s 2752512

On peut supprimer tous les sémaphores en une ligne, grâce à perl :

# ipcs -s | grep www | perl -alne 'qx(ipcrm -s $F[1])'

Le démarrage d'Apache peut alors s'effectuer correctement.


Posted by St3rk | Permanent link