X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins%2Ffacteur%2Fformulaires%2Fconfigurer_facteur.php;h=aa46e78bca405947448375069157bdf51847d1f8;hb=c0f18416f529232b5555c6410a8765a5125ebcd3;hp=0aa321b511c1a01da3863742296839c31ce16d79;hpb=50522c53acc9e61a4a7de3a1890c4ba93e2f61b4;p=lhc%2Fweb%2Fwww.git diff --git a/www/plugins/facteur/formulaires/configurer_facteur.php b/www/plugins/facteur/formulaires/configurer_facteur.php index 0aa321b5..aa46e78b 100644 --- a/www/plugins/facteur/formulaires/configurer_facteur.php +++ b/www/plugins/facteur/formulaires/configurer_facteur.php @@ -9,31 +9,44 @@ if (!defined("_ECRIRE_INC_VERSION")) return; function formulaires_configurer_facteur_charger_dist(){ + include_spip('inc/config'); $valeurs = array( - 'facteur_adresse_envoi' => $GLOBALS['meta']['facteur_adresse_envoi'], - 'facteur_adresse_envoi_nom' => $GLOBALS['meta']['facteur_adresse_envoi_nom'], - 'facteur_adresse_envoi_email' => $GLOBALS['meta']['facteur_adresse_envoi_email'], - 'facteur_smtp' => $GLOBALS['meta']['facteur_smtp'], - 'facteur_smtp_host' => $GLOBALS['meta']['facteur_smtp_host'], - 'facteur_smtp_port' => $GLOBALS['meta']['facteur_smtp_port']?$GLOBALS['meta']['facteur_smtp_port']:'25', - 'facteur_smtp_auth' => $GLOBALS['meta']['facteur_smtp_auth'], - 'facteur_smtp_username' => $GLOBALS['meta']['facteur_smtp_username'], - 'facteur_smtp_password' => $GLOBALS['meta']['facteur_smtp_password'], - 'facteur_smtp_secure' => $GLOBALS['meta']['facteur_smtp_secure'], - 'facteur_smtp_sender' => $GLOBALS['meta']['facteur_smtp_sender'], - 'facteur_filtre_images' => $GLOBALS['meta']['facteur_filtre_images'], - 'facteur_filtre_iso_8859' => $GLOBALS['meta']['facteur_filtre_iso_8859'], - '_enable_smtp_secure' => (intval(phpversion()) == 5)?' ':'', - 'facteur_cc' => $GLOBALS['meta']['facteur_cc'], - 'facteur_bcc' => $GLOBALS['meta']['facteur_bcc'], - 'tester' => '', + 'facteur_adresse_envoi' => lire_config('facteur_adresse_envoi'), + 'facteur_adresse_envoi_nom' => lire_config('facteur_adresse_envoi_nom'), + 'facteur_adresse_envoi_email' => lire_config('facteur_adresse_envoi_email'), + 'facteur_forcer_from' => lire_config('facteur_forcer_from'), + 'facteur_smtp' => lire_config('facteur_smtp'), + 'facteur_smtp_host' => lire_config('facteur_smtp_host'), + 'facteur_smtp_port' => lire_config('facteur_smtp_port', 25), + 'facteur_smtp_auth' => lire_config('facteur_smtp_auth'), + 'facteur_smtp_username' => lire_config('facteur_smtp_username'), + 'facteur_smtp_password' => '', + '_facteur_smtp_password' => lire_config('facteur_smtp_password'), + 'facteur_smtp_secure' => lire_config('facteur_smtp_secure'), + 'facteur_smtp_sender' => lire_config('facteur_smtp_sender'), + 'facteur_filtre_images' => lire_config('facteur_filtre_images'), + 'facteur_filtre_iso_8859' => lire_config('facteur_filtre_iso_8859'), + 'facteur_cc' => lire_config('facteur_cc'), + 'facteur_bcc' => lire_config('facteur_bcc'), + '_enable_smtp_secure' => (intval(phpversion()) == 5)?' ':'', + 'email_test' => lire_config('facteur_adresse_envoi')=='oui'?lire_config('facteur_adresse_envoi_email'):$GLOBALS['meta']['email_webmaster'], + 'tester' => '', ); + // recuperer le from par defaut actuel pour l'indiquer dans le formulaire + include_spip('classes/facteur'); + $facteur = new Facteur('test@example.org','Test','','',array('adresse_envoi'=>'non')); + $valeurs['_from_defaut'] = $facteur->From; + if ($facteur->FromName){ + $valeurs['_from_defaut'] = $facteur->FromName . ' <'.$valeurs['_from_defaut'].'>'; + } + return $valeurs; } function formulaires_configurer_facteur_verifier_dist(){ $erreurs = array(); + include_spip('inc/config'); if ($email = _request('facteur_adresse_envoi_email') AND !email_valide($email)) { $erreurs['facteur_adresse_envoi_email'] = _T('form_email_non_valide'); @@ -43,17 +56,19 @@ function formulaires_configurer_facteur_verifier_dist(){ if (!($h=_request('facteur_smtp_host'))) $erreurs['facteur_smtp_host'] = _T('info_obligatoire'); else { + $h = trim($h); $regexp_ip_valide = '#^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$#'; // Source : http://www.d-sites.com/2008/10/09/regex-ipv4-et-ipv6/ if (!preg_match($regexp_ip_valide,$h)){ // ce n'est pas une IP - if(!preg_match(';^([^.\s/?:]+[.]){0,2}[^.\s/?:]+$;',$h) + if(!preg_match(';^([^.\s/?:]+[.])*[^.\s/?:]+$;',$h) OR gethostbyname($h)==$h) $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host'); } else { if (gethostbyaddr($h)==$h) - $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host'); + $erreurs['facteur_smtp_host'] = _T('facteur:erreur_invalid_host'); } + set_request('facteur_smtp_host',$h); } if (!($p=_request('facteur_smtp_port'))) $erreurs['facteur_smtp_port'] = _T('info_obligatoire'); @@ -66,7 +81,7 @@ function formulaires_configurer_facteur_verifier_dist(){ if (_request('facteur_smtp_auth')=='oui'){ if (!_request('facteur_smtp_username')) $erreurs['facteur_smtp_username'] = _T('info_obligatoire'); - if (!_request('facteur_smtp_password')) + if (!_request('facteur_smtp_password') AND !lire_config('facteur_smtp_password')) $erreurs['facteur_smtp_password'] = _T('info_obligatoire'); } } @@ -78,6 +93,16 @@ function formulaires_configurer_facteur_verifier_dist(){ AND !email_valide($emailbcc)) { $erreurs['facteur_bcc'] = _T('form_email_non_valide'); } + + if (_request('tester')){ + if (!$email = _request('email_test')){ + $erreurs['email_test'] = _T('info_obligatoire'); + } + elseif (!email_valide($email)) { + $erreurs['email_test'] = _T('form_email_non_valide'); + } + } + if(count($erreurs)>0){ $erreurs['message_erreur'] = _T('facteur:erreur_generale'); @@ -97,6 +122,9 @@ function formulaires_configurer_facteur_traiter_dist(){ $facteur_adresse_envoi_email = _request('facteur_adresse_envoi_email'); ecrire_meta('facteur_adresse_envoi_email', $facteur_adresse_envoi_email?$facteur_adresse_envoi_email:''); + $facteur_forcer_from = _request('facteur_forcer_from'); + ecrire_meta('facteur_forcer_from', ($facteur_forcer_from=='oui')?'oui':'non'); + $facteur_smtp = _request('facteur_smtp'); ecrire_meta('facteur_smtp', ($facteur_smtp=='oui')?'oui':'non'); @@ -112,8 +140,9 @@ function formulaires_configurer_facteur_traiter_dist(){ $facteur_smtp_username = _request('facteur_smtp_username'); ecrire_meta('facteur_smtp_username', $facteur_smtp_username); - $facteur_smtp_password = _request('facteur_smtp_password'); - ecrire_meta('facteur_smtp_password', $facteur_smtp_password); + if ($facteur_smtp_password = _request('facteur_smtp_password')) { + ecrire_meta('facteur_smtp_password', $facteur_smtp_password); + } if (intval(phpversion()) == 5) { $facteur_smtp_secure = _request('facteur_smtp_secure'); @@ -137,35 +166,54 @@ function formulaires_configurer_facteur_traiter_dist(){ // faut-il envoyer un message de test ? if (_request('tester')){ - - if ($GLOBALS['meta']['facteur_adresse_envoi'] == 'oui' - AND $GLOBALS['meta']['facteur_adresse_envoi_email']) - $destinataire = $GLOBALS['meta']['facteur_adresse_envoi_email']; - else - $destinataire = $GLOBALS['meta']['email_webmaster']; - - if ((facteur_envoyer_mail_test($destinataire,_T('facteur:corps_email_de_test')))===true){ - // OK - $res = array('message_ok'=>_T('facteur:email_test_envoye')); + $res = array(); + $destinataire = _request('email_test'); + $err = facteur_envoyer_mail_test($destinataire,_T('facteur:corps_email_de_test')); + if ($err) { + $res['message_erreur'] = $err; } else { - // erreur - $res = array('message_erreur'=>_T('facteur:erreur')._T('facteur:erreur_dans_log')); + $res['message_ok'] = _T('facteur:email_test_envoye'); } } return $res; } +/** + * Fonction pour tester un envoi de mail ver sun destinataire + * renvoie une erreur eventuelle ou rien si tout est OK + * @param string $destinataire + * @param string $titre + * @return string + * message erreur ou vide si tout est OK + */ function facteur_envoyer_mail_test($destinataire,$titre){ + include_spip('classes/facteur'); $message_html = recuperer_fond('emails/test_email_html', array()); $message_texte = recuperer_fond('emails/test_email_texte', array()); + $corps = array( + 'html' => $message_html, + 'texte' => $message_texte, + 'exceptions' => true, + ); // passer par envoyer_mail pour bien passer par les pipeline et avoir tous les logs $envoyer_mail = charger_fonction('envoyer_mail','inc'); - $retour = $envoyer_mail($destinataire, $titre, array('html'=>$message_html,'texte'=>$message_texte)); + try { + $retour = $envoyer_mail($destinataire, $titre, $corps); + } + catch (Exception $e) { + return $e->getMessage(); + } + + // si echec mais pas d'exception, on signale de regarder dans les logs + if (!$retour) { + return _T('facteur:erreur').' '._T('facteur:erreur_dans_log'); + } - return $retour?true:false; + // tout est OK, pas d'erreur + return ""; } ?>