+ } else {
+ $erreur = "";
+ // verifier que les var de l'URL sont conformes avant d'appeler la fonction
+ $url = trim(_request('var_url'));
+ if (strncmp($url,'/',1)==0) $erreur = 'Chemin absolu interdit pour var_url';
+ // on a pas le droit de remonter plus de 1 fois dans le path (pas 2 occurences de ../ ou ..\ (win))
+ if (($p=strpos($url,'..'))!==false AND strpos($url,'..',$p+3)!==false) $erreur = 'Interdit de remonter en dehors de la racine';
+ if (strpos($url,'://')!==false or strpos($url,':\\')!==false) $erreur = 'URL absolue interdite pour var_url';
+
+ $ext = trim(_request('ext'));
+ $ext = ltrim($ext,'.'); // precaution
+ if (preg_match('/\W/',$ext)) $erreur = 'Extension invalide';
+
+ // en GET var_url doit etre signee, en POST seule l'action est signee
+ // CSRF safe
+ $process = true;
+ if ($url){
+ include_spip('inc/securiser_action');
+ if ($_SERVER["REQUEST_METHOD"]=='POST'){
+ if (!$token = _request('var_token')
+ or !verifier_cle_action("valider_xml",$token)){
+ $process = false;
+ }
+ }
+ if ($_SERVER["REQUEST_METHOD"]!='POST'){
+ if (!$token = _request('var_token')
+ or !verifier_cle_action("valider_xml&var_url=$url",$token)){
+ $process = false;
+ }
+ }
+ }
+
+ if ($erreur){
+ include_spip('inc/minipres');
+ echo minipres($erreur);
+ }
+ else {
+ valider_xml_ok($url, $ext, intval(_request('limit')), _request('recur'), $process);
+ }
+ }