Browse Source

Nouvel htaccess pour evacuer complètement les pseudo-actions rss et ical maintenant que [12430] assure que les clés de hachage sont les mêmes. Si qq sait comment MODIFIER la query-string, pas seulement la compléter ou la remplacer, je suis preneur.

spip-2.0
Committo,Ergo:sum 14 years ago
parent
commit
75be320b6b
  1. 138
      ecrire/action/rss.php
  2. 6
      ecrire/public.php
  3. 13
      htaccess.txt

138
ecrire/action/rss.php

@ -1,138 +0,0 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2008 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
// Ce script n'est plus utile qu'a la compatibilite avec les liens
// produits par l'ancienne definition de bouton_spip_rss
include_spip('inc/acces');
include_spip('inc/texte'); // utile pour l'espace public, deja fait sinon
// On recoit un op (operation) + args (arguments)
// + id (id_auteur) + cle (low_sec(id_auteur, "op args"))
// On verifie que la cle correspond
// On cree ensuite le RSS correspondant a l'operation
// Pour memoire, la forme des URLs :
// 1.8: spip_rss.php?op=forums&args=page-public&id=4&cle=047b4183&lang=fr
// 1.9: spip.php?action=rss&op=forums&args=page-public&id=4&cle=047b4183&lang=fr
// ou encore spip.php?action=rss&op=a-suivre&id=5&cle=5731e121&lang=fr
// http://doc.spip.org/@action_rss_dist
function action_rss_dist()
{
$op = _request('op');
$args = _request('args');
$cle = _request('cle');
$id = _request('id');
$lang = _request('lang');
spip_timer('rss');
if (verifier_low_sec($id, $cle, "rss $op $args")) {
lang_select($lang);
$op = str_replace('-', '_', $op);
$contexte = $_REQUEST;
$contexte['cle'] = afficher_low_sec($id, $op, $args);
$contexte['fond'] = 'prive/rss/' . $op;
foreach (split(':', $args) as $bout) {
list($var, $val) = split('-', $bout, 2);
$contexte[$var] = $val;
}
$f = charger_fonction($op, 'rss', true);
if ($f) $contexte = $f($contexte);
} else $contexte = '';
if ($contexte) {
$r = evaluer_fond ('', $contexte);
echo $r['texte'];
$message ="spip_rss s'applique sur " . $contexte['fond'] . " et $args pour $id par $f cle " . $contexte['cle'];
} else $message = ("spip_rss sur '$op $args pour $id' incorrect");
spip_log("$message (" . spip_timer('rss') .')');
exit;
}
// Dans quelques cas le contexte doit etre revu
// Il faudrait les eliminer, et gerer la compatibilite autrement
# Compatibilite des anciens liens, inutile pour les nouveaux.
// http://doc.spip.org/@rss_revisions
function rss_revisions($a)
{
if (isset($a['langue_choisie'])) {
$a['lang'] = $a['langue_choisie'];
unset($a['langue_choisie']);
}
if (isset($a['id_auteur'])) {
$a['statut'] = 'prepa';
} else {
$a['statut'] = '';
}
include_spip('inc/suivi_versions');
return $a;
}
// suivi public des forums publics
// Ne sert plus qu'a la compatibilite, c'est du squelette public a present
// http://doc.spip.org/@rss_forum
function rss_forum($a)
{
if ($id = intval($a['id_article'])) {
$a['fond'] = 'rss_forum_article';
}
else if ($id = intval($a['id_syndic'])) {
$a['fond'] = 'rss_forum_syndic';
}
else if ($id = intval($a['id_breve'])) {
$a['fond'] = 'rss_forum_breve';
}
else if ($id = intval($a['id_rubrique'])) {
$a['fond'] = 'rss_forum_rubrique';
}
else if ($id = intval($a['id_thread'])) {
$a['fond'] = 'rss_forum_thread';
} else { $a ='';}
return $a;
}
# suivi prive de tous les forums
// Ne sert plus qu'a la compatibilite, cf les squeletes forums_$page a present
// http://doc.spip.org/@rss_forums
function rss_forums($a)
{
switch ($a['page']) {
case 'public':
$a['statut'] = array('publie','prop','off','spam');
$a['texte'] = '.';
return $a;
case 'prop':
$a['statut'] = array('prop');
$a['texte'] = '.*';
return $a;
case 'spam':
$a['statut'] = array('spam');
$a['texte'] = '.*';
return $a;
case 'interne':
$a['statut'] = array('prive','privac','privoff','privadm');
$a['texte'] = '.';
return $a;
case 'vide':
$a['statut'] = array('publie','off','prive','privac','privoff','privadm');
$a['texte'] = '^$';
return $a;
default:
return '';
}
}
?>

6
ecrire/public.php

@ -69,7 +69,11 @@ else {
echo minipres();
exit;
}
// l'argument Page a priorite sur l'argument action
// le cas se presente a cause des RewriteRule d'Apache
// qui permettent d'ajouter un argument dans la QueryString
// mais pas d'en retirer un en conservant les autres.
unset($_GET['action']);
# par defaut
} else {
// traiter le cas pathologique d'un upload de document ayant echoue

13
htaccess.txt

@ -44,6 +44,13 @@ RewriteBase /
################ GESTIONS DES URLS SPIP #######################
# Deux pseudo-actions a present evacuees
# N'y at-il pas moyen de REMPLACER un nom dans la QueryString ?
RewriteCond %{QUERY_STRING} action=rss
RewriteRule spip.php spip.php?page=rss [QSA,L]
RewriteCond %{QUERY_STRING} action=ical
RewriteRule spip.php spip.php?page=ical_prive [QSA,L]
###
# Si le fichier ou repertoire demande existe
# ignorer toutes les regles qui suivent
@ -68,8 +75,10 @@ RewriteRule ^site([0-9]+)(\.html)?$ spip.php?page=site&id_syndic=$1 [QSA,L]
RewriteRule ^(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ spip.php?page=$1 [QSA,L]
RewriteRule ^resume.php[3]? spip.php?page=sommaire [QSA,L]
RewriteRule ^page.php[3]? spip.php [QSA,L]
RewriteRule ^spip_cal\.php3?$ spip.php?action=ical [QSA,L]
RewriteRule ^spip_rss\.php3?$ spip.php?action=rss [QSA,L]
RewriteRule ^spip_cal\.php3?$ spip.php?page=ical_prive [QSA,L]
RewriteRule ^spip_rss\.php3?$ spip.php?page=rss [QSA,L]
# Fin compatibilite
###

Loading…
Cancel
Save