From d6d7731b16f5f58240fae64ddb7ce9539f870c88 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Mon, 4 Oct 2010 10:55:37 +0000 Subject: [PATCH] #FORMULAIRE_CONFIGURER_RELAYEUR remplace configuration/relayeur --- .gitattributes | 4 +- ecrire/action/configurer_relayeur.php | 38 ----- ecrire/configuration/relayeur.php | 147 ------------------ ecrire/inc/distant.php | 20 ++- prive/formulaires/configurer_relayeur.html | 45 ++++++ prive/formulaires/configurer_relayeur.php | 135 ++++++++++++++++ .../contenu/page-configurer_avancees.html | 6 +- 7 files changed, 201 insertions(+), 194 deletions(-) delete mode 100644 ecrire/action/configurer_relayeur.php delete mode 100644 ecrire/configuration/relayeur.php create mode 100644 prive/formulaires/configurer_relayeur.html create mode 100644 prive/formulaires/configurer_relayeur.php diff --git a/.gitattributes b/.gitattributes index 5345d10844..d7631142c6 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,7 +9,6 @@ ecrire/action/changer_mode_document.php -text ecrire/action/charger_plugin.php -text ecrire/action/configuration.php -text ecrire/action/configurer_moderniseur_html.php -text -ecrire/action/configurer_relayeur.php -text ecrire/action/confirmer_email.php -text ecrire/action/converser.php -text ecrire/action/copier_local.php -text @@ -73,7 +72,6 @@ ecrire/charsets/translit.php -text ecrire/charsets/translitcomplexe.php -text ecrire/configuration/index.php -text ecrire/configuration/moderniseur_html.php -text -ecrire/configuration/relayeur.php -text ecrire/core.xml -text ecrire/exec/403.php -text ecrire/exec/404.php -text @@ -375,6 +373,8 @@ prive/formulaires/configurer_redacteurs.html -text prive/formulaires/configurer_redacteurs.php -text prive/formulaires/configurer_reducteur.html -text prive/formulaires/configurer_reducteur.php -text +prive/formulaires/configurer_relayeur.html -text +prive/formulaires/configurer_relayeur.php -text prive/formulaires/configurer_rubriques.html -text prive/formulaires/configurer_rubriques.php -text prive/formulaires/configurer_transcodeur.html -text diff --git a/ecrire/action/configurer_relayeur.php b/ecrire/action/configurer_relayeur.php deleted file mode 100644 index 46c3458de0..0000000000 --- a/ecrire/action/configurer_relayeur.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -/***************************************************************************\ - * SPIP, Systeme de publication pour l'internet * - * * - * Copyright (c) 2001-2010 * - * 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; - -// Mise a jour de l'option de configuration du proxy - -include_spip('configuration/relayeur'); - -// http://doc.spip.org/@action_configurer_relayeur_dist -function action_configurer_relayeur_dist() { - - $securiser_action = charger_fonction('securiser_action', 'inc'); - $arg = $securiser_action(); - - $http_proxy = _request('http_proxy'); - $http_noproxy = _request('http_noproxy'); - $test_proxy = _request('test_proxy'); - $tester_proxy = _request('tester_proxy'); - - $test = configuration_relayeur_post($http_proxy, $http_noproxy, $test_proxy, $tester_proxy); - - // message a afficher dans l'exec de retour - - $r = rawurldecode(_request('redirect')); - $r = parametre_url($r, 'retour_proxy', $test, "&"); - redirige_par_entete($r); -} -?> diff --git a/ecrire/configuration/relayeur.php b/ecrire/configuration/relayeur.php deleted file mode 100644 index 8da805baff..0000000000 --- a/ecrire/configuration/relayeur.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php - -/***************************************************************************\ - * SPIP, Systeme de publication pour l'internet * - * * - * Copyright (c) 2001-2010 * - * 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; - -include_spip('inc/presentation'); - -/// A PASSER DANS LES FICHIERS DE LANGUE - -function configuration_relayeur_dist($retour_proxy='') -{ - global $spip_lang_left; - - $res = $submit = ''; - - $http_proxy = $GLOBALS['meta']["http_proxy"]; - $http_noproxy = $GLOBALS['meta']["http_noproxy"]; - - if ($http_proxy) { - include_spip('inc/distant'); - // Masquer un eventuel password authentifiant - $http_proxy=entites_html(no_password_proxy_url($http_proxy)); - if ($http_proxy) { - $res = "\n<p style='text-align: $spip_lang_left;' class='verdana1 spip_small'>" - . "<label for='test_proxy'>" - . _T('texte_test_proxy') - . "</label>" - . "</p>" - . "\n<p>" - . "<input type='text' name='test_proxy' id='test_proxy' value='http://www.spip.net/' size='40' class='forml' />" - . "</p>"; - - if($retour_proxy) { - $res .= debut_boite_info(true) - . $retour_proxy - . fin_boite_info(true); - } - $submit = array('valider_proxy' => _T('bouton_valider'), - 'tester_proxy' => _T('bouton_test_proxy')); - } - } - - $encours = "<label for='http_proxy'>" . ($http_proxy ? $http_proxy : "http://proxy:8080") . '</label>' ; - $exemple = "<label for='http_noproxy'>" . ($http_noproxy ? $http_noproxy : "127.0.0.1 .mondomaine.net") . "</label>"; - $res = "\n<div class='verdana2'>" - . propre(_T('texte_proxy', array('proxy_en_cours' => "<b><tt><html>$encours</html></tt></b>"))) - . "</div>" - . "\n<div class='verdana2'>" - . "<input type='text' name='http_proxy' id='http_proxy' size='40' class='forml' value='$http_proxy' />" - . "<br />" - . propre(_T('pas_de_proxy_pour', array('exemple' => "<b><tt><html>$exemple</html></tt></b>"))) - . "<input type='text' name='http_noproxy' id='http_noproxy' size='40' class='forml' value='$http_noproxy' />" - . $res - . "</div>"; - - $res = debut_cadre_trait_couleur("reseau-24.png", true, "", _T('info_sites_proxy').aide ("confhttpproxy")) - . ajax_action_post('configurer_relayeur', 0, 'config_fonctions', '', $res, $submit) - . fin_cadre_trait_couleur(true); - - return ajax_action_greffe("configurer_relayeur", 0, $res); -} - -function configuration_relayeur_post ($http_proxy, $http_noproxy, $test_proxy, $tester_proxy) -{ - // http_proxy : ne pas prendre en compte la modif si le password est '****' - if (preg_match(',:\*\*\*\*@,', $http_proxy)) - $http_proxy = $GLOBALS['meta']['http_proxy']; - - $retour = ''; - - if ($tester_proxy AND preg_match(",https?://,", $http_proxy)) { - include_spip('inc/distant'); - $t = parse_url($test_proxy); - - if (!@$t['host']) { - $retour = _T('info_adresse_non_indiquee'); - } else { - include_spip('inc/texte'); // pour aide, couper, lang - if (!need_proxy($t['host'])) - $page = "<p>"._T('page_pas_proxy')."</p>\n"; - $page = recuperer_page($test_proxy, true); - if ($page) - $retour = "<p>"._T('info_proxy_ok')."</p>\n<tt>".couper(entites_html($page),300)."</tt>"; - else - $retour = _T('info_impossible_lire_page', array('test_proxy' => $test_proxy)) - . " <tt>".no_password_proxy_url($http_proxy)."</tt>." - . aide('confhttpproxy'); - } - } - if ($http_proxy !== NULL) { - ecrire_meta('http_proxy', $http_proxy); - } - if ($http_noproxy !== NULL) { - ecrire_meta('http_noproxy', $http_noproxy); - } - return $retour; -} - -// Function glue_url : le pendant de parse_url -// http://doc.spip.org/@glue_url -function glue_url ($url){ - if (!is_array($url)){ - return false; - } - // scheme - $uri = (!empty($url['scheme'])) ? $url['scheme'].'://' : ''; - // user & pass - if (!empty($url['user'])){ - $uri .= $url['user'].':'.$url['pass'].'@'; - } - // host - $uri .= $url['host']; - // port - $port = (!empty($url['port'])) ? ':'.$url['port'] : ''; - $uri .= $port; - // path - $uri .= $url['path']; -// fragment or query - if (isset($url['fragment'])){ - $uri .= '#'.$url['fragment']; - } elseif (isset($url['query'])){ - $uri .= '?'.$url['query']; - } - return $uri; -} - - -// Ne pas afficher la partie 'password' du proxy -// http://doc.spip.org/@no_password_proxy_url -function no_password_proxy_url($http_proxy) { - if ($p = @parse_url($http_proxy) - AND $p['pass']) { - $p['pass'] = '****'; - $http_proxy = glue_url($p); - } - return $http_proxy; -} -?> diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php index c8e50b90d3..f7c8c142c0 100644 --- a/ecrire/inc/distant.php +++ b/ecrire/inc/distant.php @@ -530,11 +530,21 @@ function recuperer_infos_distantes($source, $max=0, $charger_si_petite_image = t } -// http://doc.spip.org/@need_proxy -function need_proxy($host) -{ - $http_proxy = @$GLOBALS['meta']["http_proxy"]; - $http_noproxy = @$GLOBALS['meta']["http_noproxy"]; +/** + * Tester si un host peut etre recuperer directement ou doit passer par un proxy + * on peut passer en parametre le proxy et la liste des host exclus, + * pour les besoins des tests, lors de la configuration + * + * @param string $host + * @param string $http_proxy + * @param string $http_noproxy + * @return string + */ +function need_proxy($host, $http_proxy=null,$http_noproxy=null){ + if (is_null($http_proxy)) + $http_proxy = @$GLOBALS['meta']["http_proxy"]; + if (is_null($http_noproxy)) + $http_noproxy = @$GLOBALS['meta']["http_noproxy"]; $domain = substr($host,strpos($host,'.')); diff --git a/prive/formulaires/configurer_relayeur.html b/prive/formulaires/configurer_relayeur.html new file mode 100644 index 0000000000..3debc85ed0 --- /dev/null +++ b/prive/formulaires/configurer_relayeur.html @@ -0,0 +1,45 @@ +<div class="formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}"> +<h3 class='titrem'><img src="#CHEMIN_IMAGE{reseau-24.png}" class="cadre-icone" /><:info_sites_proxy:>#AIDER{confhttpproxy}</h3> + [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] + [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] + [(#ENV{editable}) + #SET{proxy,#VAL{<b><tt>}|concat{'http://proxy:8080','</tt></b>'}} + <p><:texte_proxy{proxy_en_cours=#GET{proxy}}:></p> + <form method='post' action='#ENV{action}' enctype='multipart/form-data'><div> + [(#REM) declarer les hidden qui declencheront le service du formulaire + parametre : url d'action ] + #ACTION_FORMULAIRE{#ENV{action}} + <input type='submit' class='submit' value='<:bouton_enregistrer:>' style="display:none;"/> + <ul> + #SET{name,http_proxy}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + <li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> + <label for="#GET{name}">Adresse du proxy</label>[ + <span class='erreur_message'>(#GET{erreurs})</span> + ] + <input type="text" class="text" name="#GET{name}" id="#GET{name}" value="#ENV*{#GET{name}}" + onchange="if (jQuery(this).val()) jQuery('.editer_test_proxy:hidden').show('fast'); else jQuery('.editer_test_proxy:visible').hide('fast');" + /> + </li> + #SET{exemple,#VAL{<b><tt>}|concat{'127.0.0.1 .mondomaine.net','</tt></b>'}} + #SET{name,http_noproxy}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + <li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> + <label for="#GET{name}">Exceptions pour le proxy</label>[ + <span class='erreur_message'>(#GET{erreurs})</span> + ]<p class="explication"><:pas_de_proxy_pour{exemple=#GET{exemple}}:></p> + <input type="text" class="text" name="#GET{name}" id="#GET{name}" value="#ENV*{#GET{name}}" /> + </li> + #SET{name,test_proxy}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} + <li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"[(#ENV{http_proxy}|strlen|non)style='display:none;']> + <label for="#GET{name}">Adresse de test</label>[ + <span class='erreur_message'>(#GET{erreurs})</span> + ]<p class="explication"><:texte_test_proxy:></p> + <input type="text" class="text" name="#GET{name}" id="#GET{name}" value="#ENV*{#GET{name}}" /> + <input type='submit' class='submit' name="tester_proxy" value='<:bouton_test_proxy:>' /> + </li> + </ul> + [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ] + <!--extra--> + <p class='boutons'><span class='image_loading'> </span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p> + </div></form> + ] +</div> \ No newline at end of file diff --git a/prive/formulaires/configurer_relayeur.php b/prive/formulaires/configurer_relayeur.php new file mode 100644 index 0000000000..03eb4cf2e3 --- /dev/null +++ b/prive/formulaires/configurer_relayeur.php @@ -0,0 +1,135 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2010 * + * 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; +include_spip('inc/presentation'); + +function formulaires_configurer_relayeur_charger_dist(){ + $valeurs = array( + 'http_proxy' => no_password_proxy_url($GLOBALS['meta']['http_proxy']), + 'http_noproxy' => $GLOBALS['meta']['http_noproxy'], + 'test_proxy' => 'http://www.spip.net/', + ); + + return $valeurs; +} + +function formulaires_configurer_relayeur_verifier_dist(){ + $erreurs = array(); + $http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), $GLOBALS['meta']['http_proxy']); + $http_noproxy = _request('http_noproxy'); + + if ($http_proxy AND !preg_match(",https?://,", $http_proxy)){ + $erreurs['http_proxy'] = _L('format_proxy_incorrect'); + } + + if (!isset($erreurs['http_proxy']) AND _request('tester_proxy')) { + if (!$http_proxy) + $erreurs['http_proxy'] = _T('info_obligatoire'); + else { + include_spip('inc/distant'); + $test_proxy = _request('test_proxy'); + $t = parse_url($test_proxy); + if (!@$t['host']) { + $erreurs['test_proxy'] = _T('info_adresse_non_indiquee'); + } + else { + include_spip('inc/texte'); // pour aide, couper, lang + $info = ""; + if (!need_proxy($t['host'],$http_proxy,$http_noproxy)) + $info = "<strong>"._T('page_pas_proxy')."</strong><br />"; + + // il faut fausser le proxy actuel pour faire le test ! + $cur_http_proxy = $GLOBALS['meta']['http_proxy']; + $cur_http_noproxy = $GLOBALS['meta']['http_noproxy']; + $GLOBALS['meta']['http_proxy'] = $http_proxy; + $GLOBALS['meta']['http_noproxy'] = $http_noproxy; + $page = recuperer_page($test_proxy, true); + $GLOBALS['meta']['http_proxy'] = $cur_http_proxy; + $GLOBALS['meta']['http_noproxy'] = $cur_http_noproxy; + if ($page) { + $erreurs['message_ok'] = _T('info_proxy_ok')."<br />$info\n<tt>".couper(entites_html($page),300)."</tt>"; + } + else { + $erreurs['message_erreur'] = $info._T('info_impossible_lire_page', array('test_proxy' => "<tt>$test_proxy</tt>")) + . " <b><tt>".no_password_proxy_url($http_proxy)."</tt></b>." + . aide('confhttpproxy'); + } + } + + } + } + return $erreurs; +} + +function formulaires_configurer_relayeur_traiter_dist(){ + $res = array('editable'=>true); + + $http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), $GLOBALS['meta']['http_proxy']); + $http_noproxy = _request('http_noproxy'); + if ($http_proxy !== NULL) + ecrire_meta('http_proxy', $http_proxy); + + if ($http_noproxy !== NULL) + ecrire_meta('http_noproxy', $http_noproxy); + + $res['message_ok'] = _T('config_info_enregistree'); + return $res; +} + +function relayeur_saisie_ou_config($http_proxy, $default){ + // http_proxy : ne pas prendre en compte la modif si le password est '****' + if (preg_match(',:\*\*\*\*@,', $http_proxy)) + $http_proxy = $default; + return $http_proxy; +} + +// Function glue_url : le pendant de parse_url +// http://doc.spip.org/@glue_url +function glue_url ($url){ + if (!is_array($url)){ + return false; + } + // scheme + $uri = (!empty($url['scheme'])) ? $url['scheme'].'://' : ''; + // user & pass + if (!empty($url['user'])){ + $uri .= $url['user'].':'.$url['pass'].'@'; + } + // host + $uri .= $url['host']; + // port + $port = (!empty($url['port'])) ? ':'.$url['port'] : ''; + $uri .= $port; + // path + $uri .= $url['path']; +// fragment or query + if (isset($url['fragment'])){ + $uri .= '#'.$url['fragment']; + } elseif (isset($url['query'])){ + $uri .= '?'.$url['query']; + } + return $uri; +} + + +// Ne pas afficher la partie 'password' du proxy +// http://doc.spip.org/@no_password_proxy_url +function no_password_proxy_url($http_proxy) { + if ($p = @parse_url($http_proxy) + AND $p['pass']) { + $p['pass'] = '****'; + $http_proxy = glue_url($p); + } + return $http_proxy; +} +?> \ No newline at end of file diff --git a/prive/squelettes/contenu/page-configurer_avancees.html b/prive/squelettes/contenu/page-configurer_avancees.html index 706b22e8b2..8445b448e4 100644 --- a/prive/squelettes/contenu/page-configurer_avancees.html +++ b/prive/squelettes/contenu/page-configurer_avancees.html @@ -13,15 +13,17 @@ #FORMULAIRE_CONFIGURER_PREVISUALISEUR </div> +<div class="ajax"> + #FORMULAIRE_CONFIGURER_RELAYEUR +</div> + <?php include_spip('inc/presentation'); - $relayeur = charger_fonction('relayeur', 'configuration'); $moderniseur_html = charger_fonction('moderniseur_html', 'configuration'); echo - $relayeur(_request('retour_proxy')), // Proxy pour syndication & doc $moderniseur_html(), // Selection de la version max de HTML (4 ou 5) -- GitLab