Bonjour à tous,
Désolé pour les pbs autour de la création de vignettes,
qui étaient dus à la mise en place d'une fonctionnalité nouvelle souvent demandée ces temps-ci:
la sécurisation de l'accès aux pièces jointes.
En m'inspirant des nombreuses méthodes et recommandations énoncées ici ou là,
voici la description de ce que je viens de poster sur le CVS:
1. en standard, tout est censé marcher comme auparavant.
2. dans les fonctions avancées de configuration, existe à présent une option de demande de sécurisation de ces accès.
3. lorsqu'on l'active, des fichiers htaccess de contenu "deny from all" seront créés dans les sous-répertoires de IMG recevant des fichiers envoyés par formulaires ou ftp
(point important: ceci ne concerne PAS IMG lui-même, ni ses sous répertoires d'icones et de vignettes, qui ne souffrent donc d'aucun surcoût d'accès; les répertoires concernés seront eux protégés sans une longue interprétation de RewriteRules).
4. la fonction generer_url_document a été rédéfinie dans les fichiers inc{-_}url-*. Si le mode de sécurisation n'est pas actif, elle continue comme avant à renvoyer le PATH du fichier associé au numéro de document transmis en argument. Si le mode est actif, elle renvoie l'url d'un script de controle d'acces, avec le numéro du document dans sa query-string. Rappelons que generer_url_document est appelé systématiquement dans tous les scripts de Spip accédant à la description d'un document.
5. la CVS contient une version minimale du script appelé par generer_url_document: il contrôle si le demandeur s'est authentifié dans l'espace privé ou si le numéro de document est associé à un article, une rubrique ou une brève publiée. Sinon il ne renvoie rien (mais le signale dans spip_log), si oui il renvoie le contenu du fichier avec les entêtes idoines (type, length, disposition). On peut évidemment redefinir generer_url_document pour qu'elle appelle des scripts plus élaborés. Un point intéressant est que disposer du numéro de document dispense de le retrouver dans les tables à partir du PATH du fichier, ce que la méthode à RewriteRule imposait.
Plusieurs remarques:
a. il y aura peut-etre un pb avec les documents qui sont utilisés AUSSI comme des vignettes; je ne maîtrise pas bien cette utilisation de Spip, il y aura peut-etre
des adaptations à faire ici.
b. pour le moment, chaque .htacces n'est créé qu'au prochain chargement d'un nouveau document du type donné: j'ai encore un peu de travail à faire pour recenser les sous-répertoires de IMG pouvant en contenir, afin de les créer tous dès l'activation.
c. symétriquement, la désactivation du mode ne détruira chaque .htacces qu'au chargement d'un nouveau document du type donné (même esuac, meme teffe).
d. ne sachant pas encore déclarer une nouvelle meta (ce qui semble exiger beaucoup de
précautions) cette nouvelle option prend lâchement la place de l'option htpasswd,
coupable de sentir trop le souffre. On ne peut donc avoir les deux options à la fois,
mais c'est provisoire.
e. cette solution n'avait jamais été tentée car le code initial de Spip supposait implicitement que generer_url_document retournait un Path commençant par IMG/ ce qui n'est plus le cas heureusement. Il n'est pas impossible que j'ai introduit des bugs dans les cas usuels en étendant les possibilités de reféfinition. Signaler alors les dysfonctionnements, mais vérifier d'abord que le pb ne vient pas de ce que votre code contournait cette limitation par des circonlocutions désormais obsolètes.
Bonne expérimentation à tous,
Emmanuel