X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Fcouteau_suisse%2Fcouteau_suisse%2Foutils%2Fmailcrypt_fonctions.php;fp=www%2Fplugins%2Fauto%2Fcouteau_suisse%2Fcouteau_suisse%2Foutils%2Fmailcrypt_fonctions.php;h=54c8fa81450ec124f8037ed3887f73a16a40c448;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/plugins/auto/couteau_suisse/couteau_suisse/outils/mailcrypt_fonctions.php b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/mailcrypt_fonctions.php new file mode 100644 index 0000000..54c8fa8 --- /dev/null +++ b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/mailcrypt_fonctions.php @@ -0,0 +1,66 @@ + '); +// @define('_mailcrypt_REGEXPR1', ',\b['._cs_liens_AUTORISE.']*@[a-zA-Z][a-zA-Z0-9-.]*\.[a-zA-Z]+(\?['._cs_liens_AUTORISE.']*)?,'); + @define('_mailcrypt_REGEXPR2', ',\b(['._cs_liens_AUTORISE.']+)@([a-zA-Z][a-zA-Z0-9-.]*\.[a-zA-Z]+(\?['._cs_liens_AUTORISE.']*)?),'); + } +} + +// filtre surchargeable pour la balise #EMAIL protegee en public mais pas en prive +function mailcrypt_email_dist($texte) { + if(strpos($texte, '@')===false) return $texte; + if(function_exists('mailcrypt_email')) return mailcrypt_email($texte); + return test_espace_prive()?$texte:mailcrypt($texte); +} + +function mailcrypt($texte) { + if(strpos($texte, '@')===false) return $texte; + mailcrypt_init(); + + // echappement des 'input' au cas ou le serveur y injecte des mails persos + if (strpos($texte, ',Umsi', 'cs_liens_echappe_callback', $texte); + // echappement des 'protoc://login:mdp@site.ici' afin ne pas les confondre avec un mail + if(strpos($texte, '://')!==false) + $texte = preg_replace_callback(',[a-z0-9]+://['._cs_liens_AUTORISE.']+:['._cs_liens_AUTORISE.']+@,Umsi', 'cs_liens_echappe_callback', $texte); + // echappement des domaines .htm/.html : ce ne sont pas des mails + if(strpos($texte, '.htm')!==false) + $texte = preg_replace_callback(',href=(["\'])[^>]*@[^>]*\.html?\\1,', 'cs_liens_echappe_callback', $texte); + + // protection des liens HTML + $texte = preg_replace(",[\"\']mailto:([^@\"']+)@([^\"']+)[\"\'],", + '"#" title="$1' . _mailcrypt_AROBASE_JS . '$2" onclick="location.href=lancerlien(\'$1\',\'$2\'); return false;"', $texte); + // retrait des titles en doublon... un peu sale, mais en attendant mieux ? + $texte = preg_replace(',title="[^"]+'._mailcrypt_AROBASE_JSQ.'[^"]+"([^>]+title=[\"\']),', '$1', $texte); + + if(strpos($texte, '@')===false) return echappe_retour($texte, 'LIENS'); + // protection de tout le reste... + $texte = preg_replace(_mailcrypt_REGEXPR2, '$1'._mailcrypt_AROBASE.'$2', $texte); + return echappe_retour($texte, 'LIENS'); +} + +function maildecrypt($texte) { + if(strpos($texte, 'spancrypt')===false && strpos($texte, 'lancerlien')===false) return $texte; + mailcrypt_init(); + + // traiter les chez + $texte = preg_replace(',(.*),U','@',$texte); + // traiter les liens + $texte = preg_replace( + ',href="#" (title=["\'].*?["\']) onclick="location.href=lancerlien\(\'(\S*?)\'\,\'(\S*?)\'\); return false;",', + '$1 href="mailto:$2@$3"', $texte); + // traiter les title + return str_replace(_mailcrypt_AROBASE_JS, '@', $texte); +} +?> \ No newline at end of file