Commit 098745fd authored by Pierre's avatar Pierre

webmail et bureau

parent f26bec85
......@@ -28,25 +28,13 @@ function formulaires_bureau_charger_dist(){
}
function formulaires_bureau_verifier_dist(){
$erreurs = array();
$bureau =_request('bureau');
$parse = parse_url($bureau);
if($parse['host'])
$bureau = $parse['host']; // juste le nom de dom sans http
// spip_log("bureau ".$bureau,'test'._LOG_AVERTISSEMENT);
$result = dns_get_record($bureau, DNS_MX);
if( $result AND isset($result[0]['target'])){
// spip_log("serveur ".$result[0]['target'],'test'._LOG_AVERTISSEMENT);
$serveur = $result[0]['target'];
if(!match($serveur,'.domainepublic.net')){
$erreurs['bureau'] = "Ce nom de domaine n'est pas hébergé par domainepublic";
}
// SI RAMDAM !!!
if($serveur == "mx.domainepublic.net")
$serveur = "bureau.domainepublic.net";
set_request("serveur", "https://".$serveur);
}
$domaine =_request('bureau');
$serveur = bureau_dp ($domaine);
set_request("serveur", $serveur);
if(!$serveur)
$erreurs['bureau'] = "Adresse invalide";
else if(!match($serveur,'.domainepublic.net'))
$erreurs['bureau'] = "Ce nom de domaine n'est pas hébergé par domainepublic";
return $erreurs;
}
......
......@@ -31,24 +31,28 @@ function formulaires_webmail_verifier_dist(){
$erreurs = array();
$webmail =_request('webmail');
$serveur = explode("@",$webmail);
// pas de @ ?
// pas de @ ? = invalide
if(!isset($serveur[1]))
$erreurs['webmail'] = "Adresse invalide";
// OK
else{
// retirer les sous-domaines
preg_match('#[^\.]+[\.]{1}[^\.]+$#', $serveur[1] , $matches);
$serveur = $matches[0];
if(!$serveur){
$erreurs['webmail'] = "Adresse invalide";
}
else{
set_request("serveur", "https://mail.".$serveur."?_user=".$webmail);
}
// spip_log("webmail "._request("serveur"),'test'._LOG_AVERTISSEMENT);
$domaine = $serveur[1]; // juste le nom de domaine
$serveur = webmail_dp($domaine); // serveur MX ?
spip_log("domaine ".$domaine,'test'._LOG_AVERTISSEMENT);
spip_log("serveur ".$serveur,'test'._LOG_AVERTISSEMENT);
if ($serveur != "mx.domainepublic.net")
set_request("serveur", "https://mail.".$domaine."?_user=".$webmail);
else
set_request("serveur", "https://mail.domainepublic.net?_user=".$webmail);
spip_log("serveur mail "._request("serveur"),'test'._LOG_AVERTISSEMENT);
}
// si la fonction php mx_chez_dp ne retourne rien
if(!$serveur){
$erreurs['webmail'] = "Adresse invalide";
}
// CHEZ DP ?
if(!$erreurs['webmail'] AND !mx_chez_dp($serveur)){
$erreurs['webmail'] = "Ce nom de domaine n'est pas hébergé par domainepublic";
if(!$erreurs['webmail'] AND !match($serveur,'domainepublic.net')){
$erreurs['webmail'] = "Cette adresse email n'est pas hébergée par domainepublic";
}
return $erreurs;
}
......
<?php
/**
* Traduction des textes de SPIP ds une langue
* ex :
* [(#VAL{ma_chaine_de trad}|bilingue{en})]
* Retourne le bureau du nom de domaine fourni
* ex : sites_chez_dp('terre-envue.be');
* retourne 'tumulte.domainepublic.net' - 'grabuge.domainepublic.net' - 'bureau.domainepublic.net' - etc ....
* ex : sites_chez_dp('google.be');
* retourne false
* ex : sites_chez_dp('jkhkdfhsdkjh.be');
* retourne false
*/
function trad ($texte, $lang) {
$traduire = charger_fonction('traduire', 'inc');
include_spip('inc/lang');
$text = $traduire($texte, $lang);
//spip_log("text ".$texte,'test'._LOG_AVERTISSEMENT);
return $text;
function bureau_dp ($domaine) {
$parse = parse_url($domaine);
if($parse['host'])
$domaine = $parse['host']; // juste le nom de dom sans http/s ni sous-dom
$result = dns_get_record($domaine, DNS_A);
spip_log("bureau ".print_r($result,1),'test'._LOG_AVERTISSEMENT);
if( $result AND isset($result[0]['ip'])){
spip_log("serveur ip ".$result[0]['ip'],'test'._LOG_AVERTISSEMENT);
// On obtient une IP adress
$serveur = $result[0]['ip'];
// On obtient le nom de domaine de l'adress IP
$serveur = gethostbyaddr ($serveur);
spip_log("serveur name ".$serveur,'test'._LOG_AVERTISSEMENT);
// SI RAMDAM !!! $serveur = "collectif2.all2all.org"
if(($serveur == "collectif2.all2all.org"))
$serveur = "bureau.domainepublic.net";
// SINON RAMDAM !!! $serveur = "tumulte.domainepublic.net" ou "grabuge.domainepublic.net" etc ...
if($serveur)
return "https://".$serveur;
}
return false;
}
/**
* Traduction des textes de SPIP ds une langue
* ex :
* [(#VAL{ma_chaine_de trad}|bilingue{en})]
* Retourne l'ADRESSE' du client email (roundcube) de $domaine
*
* ex : mx_chez_dp('terre-envue.be')
* renvoie vers 'tumulte.domainepublic.net'
*/
function mx_chez_dp ($domaine) {
$bureau =_request('bureau');
$parse = parse_url($domaine);
if($parse['host'])
$domaine = $parse['host']; // juste le nom de dom sans http
// spip_log("bureau ".$bureau,'test'._LOG_AVERTISSEMENT);
function webmail_dp ($domaine) {
spip_log("domaine ".$domaine,'test'._LOG_AVERTISSEMENT);
$result = dns_get_record($domaine, DNS_MX);
spip_log("serveur ".print_r($result,1),'test'._LOG_AVERTISSEMENT);
if( $result AND isset($result[0]['target'])){
// spip_log("serveur ".$result[0]['target'],'test'._LOG_AVERTISSEMENT);
$serveur = $result[0]['target'];
if(match($serveur,'.domainepublic.net')){
return true;
}
spip_log("MX serveur ".$serveur,'test'._LOG_AVERTISSEMENT);
if($serveur)
return $serveur;
}
return false;
}
/* dans /home/pit/workspace/dp/plugins/auto/sarkaspipr/v4.4.16/noisettes/article
* description.html
// [<div class="#EDIT{texte} texte">(#TEXTE**|mailman)</div>]
*
function mailman ($texte) {
//$texte = preg_replace('Membre', '', $texte);
//$texte = propre($texte);
$texte = str_replace("Membre",' ',$texte);
spip_log("texte ".$texte,'test'._LOG_AVERTISSEMENT);
$newtext = "";
$tab_texte = explode("\n", $texte);
foreach ($tab_texte as $ligne){
$ligne= rtrim($ligne);
$tab_ligne = explode(" ", $ligne);
// unset_empty_values($tab_ligne);
$dernier = sizeof($tab_ligne)-1;
$newligne = str_replace_last($ligne, $tab_ligne[$dernier],'&lt;'.ltrim($tab_ligne[$dernier]).'>');
spip_log("ltrim ".ltrim($tab_ligne[$dernier]),'test'._LOG_AVERTISSEMENT);
// spip_log("tab_ligne ".$tab_ligne[sizeof($tab_ligne)-1],'test'._LOG_AVERTISSEMENT);
$newtext .= $newligne."<br />";
spip_log("newligne ".$newligne,'test'._LOG_AVERTISSEMENT);
}
return $newtext;
}
function unset_empty_values(&$array) {
foreach ($array as $k => $v) {
if (empty($v) or $v==" ")
unset($array[$k]);
}
}
function str_replace_last($string ,$search , $replace){
if ((($string_len=strlen($string))==0) || (($search_len=strlen($search))==0)) return $string;
$pos=strrpos($string,$search);
if ($pos>0) return substr($string,0,$pos).$replace.substr($string,$pos+$search_len,max(0,$string_len-($pos+$search_len)));
return $string;
}
*/
/*
// traitement principal. avec ce pipeline, le PDF est mis en cache et recalculé "normalement"
function spipdf_html2pdf_ficelle($html){
include_spip('spipdf_fonctions');
// les librairies possibles
$possible_librairies = array(
'mpdf' => array( // gére le float d'image mais pas les captions de tableau
'float' => true,
'caption' => true,
'traite_balise_page' => true
),
'html2pdf' => array( // ne gére pas le float d'image et les captions
'float' => false,
'caption' => true
),
'dompdf' => array( // domPDF beta 0.6 EXPERIMENTAL
'float' => false,
'caption' => true,
'traite_balise_page' => true
),
);
// choix de la classe de génération via la balise <page lib>
if (preg_match('/\<page*.lib_pdf=["|\'](.*)["|\']/iUms', $html, $match_librairie)
&& !empty($match_librairie[1])
&& array_key_exists(strtolower($match_librairie[1]), $possible_librairies)
){
$librairie_pdf = strtolower($match_librairie[1]);
} else {
$librairie_pdf = 'mpdf';
}
// tester si la librairie est dans /lib à la racine du spip ou dans le répertoire du plugin
if (is_dir(_DIR_LIB . $librairie_pdf)){
$dir_librairie_pdf = _DIR_LIB . $librairie_pdf . '/';
} elseif (is_dir(dirname(__FILE__) . '/lib/' . $librairie_pdf)) {
$dir_librairie_pdf = dirname(__FILE__) . '/lib/' . $librairie_pdf . '/';
} else {
die('Impossible de trouver la librairie de génération de PDF ' . $librairie_pdf . '. vérifiez que vous l\'avez bien téléchargée et installée dans /lib');
}
// nettoyer le HTML et gérer les placements d'image en fonction de la librairie utilisée
$html = spipdf_nettoyer_html($html, $possible_librairies[$librairie_pdf]);
// Debug = voir le html sans génération de PDF
if (isset($_GET['debug_spipdf'])){
echo $html;
exit;
}
// du A4 par defaut
$format_page = _SPIPDF_FORMAT;
// traiter la balise page pour les librairies qui ne la comprennent pas
if (!empty($possible_librairies[$librairie_pdf]['traite_balise_page'])){
$html = traite_balise_page($html);
// dans balise_page, on ne récupère que quelques possibilité dont le format
if (!empty($GLOBALS['valeurs_page'])){
if (!empty($GLOBALS['valeurs_page']['format']))
$format_page = $GLOBALS['valeurs_page']['format'];
if (!empty($GLOBALS['valeurs_page']['backtop']))
$backtop = $GLOBALS['valeurs_page']['backtop'];
else
$backtop = _SPIPDF_MARGIN_TOP;
if (!empty($GLOBALS['valeurs_page']['backbottom']))
$backbottom = $GLOBALS['valeurs_page']['backbottom'];
else
$backbottom = _SPIPDF_MARGIN_BOTTOM;
if (!empty($GLOBALS['valeurs_page']['backleft']))
$backleft = $GLOBALS['valeurs_page']['backleft'];
else
$backleft = _SPIPDF_MARGIN_LEFT;
if (!empty($GLOBALS['valeurs_page']['backright']))
$backright = $GLOBALS['valeurs_page']['backright'];
else
$backright = _SPIPDF_MARGIN_RIGHT;
if (!empty($GLOBALS['valeurs_page']['margin_header']))
$margin_header = $GLOBALS['valeurs_page']['margin_header'];
else
$margin_header = _SPIPDF_MARGIN_HEADER;
if (!empty($GLOBALS['valeurs_page']['margin_footer']))
$margin_footer = $GLOBALS['valeurs_page']['margin_footer'];
else
$margin_footer = _SPIPDF_MARGIN_FOOTER;
}
}
if ($librairie_pdf=='mpdf'){ // la librairie mPDF
// si il y a des options dans la balise page
// http://mpdf1.com/manual/index.php?tid=307
// le chemin relatif vers mPDF
define('_MPDF_PATH', $dir_librairie_pdf);
include_once(_MPDF_PATH . 'mpdf.php');
// la classe mPDF
$mpdf = new mPDF(SPIPDF_CHARSET, $format_page, 0, "", $backleft, $backright, $backtop, $backbottom, $margin_header, $margin_footer);
spip_log("GLOBALS ".lire_config('adresse_site'),'test'._LOG_AVERTISSEMENT);
//spip_log("html ".$html,'test'._LOG_AVERTISSEMENT);
//spip_log("mail_inscription ".$tmp_mail_inscription,'test'._LOG_AVERTISSEMENT);
$mpdf->SetHTMLFooter('<table width="100%" style="vertical-align: bottom; font-family: serif; font-size: 8pt;
color: #000000; font-style: italic;"><tr>
<td width="33%"><span style="font-style: italic;">'.lire_config('adresse_site').'</span></td>
<td width="33%" align="center" style="font-style: italic;">{PAGENO}/{nbpg}</td>
<td width="33%" style="text-align: right; ">Trucs & ficelles</td>
</tr></table>');
$mpdf->WriteHTML($html);
$html = $mpdf->Output('', 'S'); // envoyer le code binaire du PDF dans le flux
$echap_special_pdf_chars = true;
} elseif ($librairie_pdf=='dompdf') { // la librairie dompdf beta 0.6 // EXPERIMENTAL
// le chemin relatif vers mPDF
require_once(_DIR_LIB . 'dompdf/dompdf_config.inc.php');
$dompdf = new DOMPDF();
$dompdf->load_html($html, SPIPDF_CHARSET);
$dompdf->set_paper($format_page);
$dompdf->render();
$html = $dompdf->output(); // envoyer le code binaire du PDF dans le flux
$echap_special_pdf_chars = true;
} else { // la librairie HTML2PDF par défaut
// appel de la classe HTML2pdf
require_once($dir_librairie_pdf . 'html2pdf.class.php');
try {
// les paramétres d'orientation et de format son écrasé par ceux défini dans la balise <page> du squelette
$html2pdf = new HTML2PDF('P', $format_page, $flux['args']['contexte']['lang'], SPIPDF_UNICODE, SPIPDF_CHARSET);
// mode debug de HTML2PDF
if (defined('SPIPDF_DEBUG_HTML2PDF')){
$html2pdf->setModeDebug();
}
// police différente selon unicode ou latin
if (SPIPDF_UNICODE){
$police_caractere = 'FreeSans';
} else {
$police_caractere = 'Arial';
}
$html2pdf->setDefaultFont($police_caractere);
$html2pdf->writeHTML($html);
$html = $html2pdf->Output('', true); // envoyer le code binaire du PDF dans le flux
$echap_special_pdf_chars = true;
} catch (HTML2PDF_exception $e) {
echo $e;
}
}
// On échappe les suites de caractères <? pour éviter des erreurs d'évaluation PHP (seront remis en place avec affichage_final)
// l'erreur d'évaluation est liée à la directive short_open_tag=On dans la configuration de PHP
if (!empty($echap_special_pdf_chars)
AND strpos($html, "<" . "?")!==false
){
$html = str_replace("<" . "?", "<\2\2?", $html);
}
return $html;
/**
* Traduction des textes de SPIP ds une langue
* ex :
* [(#VAL{ma_chaine_de trad}|bilingue{en})]
*/
function trad ($texte, $lang) {
$traduire = charger_fonction('traduire', 'inc');
include_spip('inc/lang');
$text = $traduire($texte, $lang);
//spip_log("text ".$texte,'test'._LOG_AVERTISSEMENT);
return $text;
}
*/
?>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment