diff --git a/lib/ep_function.php b/lib/ep_function.php deleted file mode 100644 index cd21177..0000000 --- a/lib/ep_function.php +++ /dev/null @@ -1,486 +0,0 @@ - array(NS1, NS2))); - try { - $result = $r->query($domaine[1], 'MX'); - } catch(Net_DNS2_Exception $e) { - return false; - } - if ($result->answer) { - return true; - } else { - return false; - } - } else { - return true; - } -} - -// postmap command -function UpdateVirtualDB() { - global $dbco; - try { - $selectcmd = $dbco->prepare("SELECT status, alias, email - FROM ".DBTABLEPREFIX."alias - WHERE status > 0 - ORDER BY alias ASC"); - $selectcmd->execute(); - } catch ( PDOException $e ) { - echo "DB error : ", $e->getMessage(); - die(); - } - $file_content=null; - while($alias_db = $selectcmd->fetch()) { - if ($alias_db['status'] == 5) { - $file_content .= $alias_db['alias'].' '.$alias_db['email']."\n"; - } else if ($alias_db['status'] == 3) { - $file_content .= $alias_db['alias']." devnull\n"; - } - } - $alias_file=fopen(FICHIERALIAS,'w'); - fputs($alias_file, $file_content); - fclose($alias_file); - exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return); -} - -// add new alias -function AjouterAlias($status, $alias,$email, $life, $comment) { - global $dbco; - $dateCreat=date('Y-m-d H:i:s'); - if ($life == 0) { - $dateExpir=NULL; - } else { - $dateExpir=date('Y-m-d H:i:s', time()+$life); - } - try { - $insertcmd = $dbco->prepare("INSERT INTO ".DBTABLEPREFIX."alias (status, alias, email, dateCreat, dateExpir, comment) - VALUES (:status, :alias, :email, :dateCreat, :dateExpir, :comment)"); - $insertcmd->bindParam('status', $status, PDO::PARAM_INT); - $insertcmd->bindParam('alias', $alias, PDO::PARAM_STR); - $insertcmd->bindParam('email', $email, PDO::PARAM_STR); - $insertcmd->bindParam('dateCreat', $dateCreat, PDO::PARAM_STR); - $insertcmd->bindParam('dateExpir', $dateExpir, PDO::PARAM_STR); - $insertcmd->bindParam('comment', $comment, PDO::PARAM_STR); - $insertcmd->execute(); - } catch ( PDOException $e ) { - echo "DB error : ", $e->getMessage(); - die(); - } - UpdateVirtualDB(); - return $dbco->lastInsertId(); -} - -// delete email -function DeleteEmail($email) { - global $dbco; - if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE email = '".$email."'")->fetchColumn() != 0) { - try { - $deletecmd = $dbco->prepare("DELETE FROM ".DBTABLEPREFIX."alias WHERE email = :email"); - $deletecmd->bindParam('email', $email, PDO::PARAM_STR); - $deletecmd->execute(); - echo '
'.$email.' '._('has been deleted with all these aliases').'.
'; - } catch ( PDOException $e ) { - echo "DB error : ", $e->getMessage(); - die(); - } - } else { - echo '
'._('Erreur').' : '.$email.' '._('has not been deleted').'.
'; - } - UpdateVirtualDB(); -} - -function AddBlacklistEmail($email) { - $contenu = '/^'.$email.'$/'; - $fichier = fopen(BLACKLIST, 'a'); - fwrite($fichier, $contenu."\n"); - fclose($fichier); - echo '
La mention '.$contenu.' a été ajouté au fichier de blackliste '.BLACKLIST.'
'; -} -// delete alias -function DeleteAlias($id, $alias_full) { - global $dbco; - if ($dbco->query("SELECT COUNT(*) FROM ".DBTABLEPREFIX."alias WHERE alias = '".$alias_full."' AND id = ".$id)->fetchColumn() != 0) { - try { - $deletecmd = $dbco->prepare("DELETE FROM ".DBTABLEPREFIX."alias WHERE id = :id AND alias = :alias_full"); - $deletecmd->bindParam('id', $id, PDO::PARAM_INT); - $deletecmd->bindParam('alias_full', $alias_full, PDO::PARAM_STR); - $deletecmd->execute(); - echo '
'.$alias_full.' '._('has been deleted').'
'; - } catch ( PDOException $e ) { - echo "DB error : ", $e->getMessage(); - die(); - } - } else { - echo '
'._('Error: email trash unknown').'
'; - } - UpdateVirtualDB(); -} - -// enable alias -function EnableAlias($id, $alias_full, $email) { - global $dbco; - if ($id == null) { - $selectcmd = $dbco->prepare("SELECT id,status FROM ".DBTABLEPREFIX."alias WHERE email = :email AND alias = :alias_full"); - $selectcmd->bindParam('email', $email, PDO::PARAM_STR); - } else { - $selectcmd = $dbco->prepare("SELECT id,status FROM ".DBTABLEPREFIX."alias WHERE id = :id AND alias = :alias_full"); - $selectcmd->bindParam('id', $id, PDO::PARAM_INT); - } - $selectcmd->bindParam('alias_full', $alias_full, PDO::PARAM_STR); - $selectcmd->execute(); - $alias_fetch = $selectcmd->fetch(); - if (! $alias_fetch) { - echo '
'._('Error: Can not find this trash email').'
'; - } else if ($alias_fetch['status'] == 3) { - UpdateStatusAlias($alias_fetch['id'], $alias_full, 5); - echo '
'._('The reception on').' '.$alias_full.' '._('is active again').'.
'; - } else if ($alias_fetch['status'] == 5) { - echo '
'._('The reception on').' '.$alias_full.' '._('is already active').'.
'; - } else if ($alias_fetch['status'] == 0) { - echo '
'._('The reception on').' '.$alias_full.''; - } else { - echo '
'._('Error: unknown status').'
'; - } - UpdateVirtualDB(); -} - -// disable alias -function DisableAlias($id, $alias_full, $email) { - global $dbco; - if ($id == null) { - $selectcmd = $dbco->prepare("SELECT id,status FROM ".DBTABLEPREFIX."alias WHERE email = :email AND alias = :alias_full"); - $selectcmd->bindParam('email', $email, PDO::PARAM_STR); - } else { - $selectcmd = $dbco->prepare("SELECT id,status FROM ".DBTABLEPREFIX."alias WHERE id = :id AND alias = :alias_full"); - $selectcmd->bindParam('id', $id, PDO::PARAM_INT); - } - $selectcmd->bindParam('alias_full', $alias_full, PDO::PARAM_STR); - $selectcmd->execute(); - $alias_fetch = $selectcmd->fetch(); - if (! $alias_fetch) { - echo '
'._('Error: Can not find this trash email').'
'; - } else if ($alias_fetch['status'] == 5) { - UpdateStatusAlias($alias_fetch['id'], $alias_full, 3); - echo '
'._('The reception on').' '.$alias_full.' '._('is now suspended').'.
'; - } else if ($alias_fetch['status'] == 3) { - echo '
'._('The reception on').' '.$alias_full.' '._('is already suspended').'.
'; - } else if ($alias_fetch['status'] == 0) { - echo '
'._('The reception on').' '.$alias_full.' '._('can not be suspended because it has not been activated yet').'.
'; - } else { - echo '
'._('Error: unknown status').'
'; - } - UpdateVirtualDB(); -} - -// update alias status -function UpdateStatusAlias($id, $alias_full, $status) { - global $dbco; - try { - $updatecmd = $dbco->prepare("UPDATE ".DBTABLEPREFIX."alias SET status = $status WHERE id = :id AND alias = :alias_full"); - $updatecmd->bindParam('id', $id, PDO::PARAM_INT); - $updatecmd->bindParam('alias_full', $alias_full, PDO::PARAM_STR); - $updatecmd->execute(); - } catch ( PDOException $e ) { - echo "DB error : ", $e->getMessage(); - die(); - } - UpdateVirtualDB(); -} - -// parse file for blacklist and aliasdeny -function parseFileRegex($file, $chaine) { - $return=false; - $handle = fopen($file, 'r'); - while (!feof($handle)) { - $buffer = fgets($handle); - $buffer = str_replace("\n", "", $buffer); - if ($buffer) { - if (!preg_match('/^(#|$|;)/', $buffer) && preg_match($buffer, $chaine)) { - $return=true; - break; - } - } - } - fclose($handle); - return $return; -} - -// check blacklistemail -function BlacklistEmail($email) { - if (defined('BLACKLIST')) { - return parseFileRegex(BLACKLIST, $email); - } else { - return false; - } -} - -// check aliasdeny -function AliasDeny($alias) { - if (defined('ALIASDENY')) { - return parseFileRegex(ALIASDENY, $alias); - } else { - return false; - } -} - -// list alias -function ListeAlias($email) { - global $dbco; - try { - $selectcmd = $dbco->prepare("SELECT id, status, alias, dateCreat, dateExpir, comment - FROM ".DBTABLEPREFIX."alias - WHERE email = :email AND status > 0 - ORDER BY status DESC"); - $selectcmd->bindParam('email', $email, PDO::PARAM_STR); - $selectcmd->execute(); - } catch ( PDOException $e ) { - echo "DB error : ", $e->getMessage(); - die(); - } - $nb_alias=0; - $nb_alias_disable=0; - $message= "## "._('List trash email activate')." : \n\n"; - while($alias_db = $selectcmd->fetch()) { - if ($alias_db['status'] == 3 && $nb_alias_disable == 0) { - $message.= "## "._('List trash email disable')." : \n\n"; - } - $message.=" * ".$alias_db['alias']." "._('Create ')." ".$alias_db['dateCreat']; - if ($alias_db['dateExpir']) { - $message.=" "._('and expires on')." ".$alias_db['dateExpir']; - } - $message.="\n"; - if ($alias_db['comment']) { - $message.="\t"._('Comment :')." ".$alias_db['comment']."\n"; - } - if ($alias_db['status'] == 5) { - $message.="\t"._('Disable :')." ".urlGen('disable',$alias_db['id'],$alias_db['alias'])."\n"; - $nb_alias++; - } else { - $message.="\t"._('Activate :')." ".urlGen('enable',$alias_db['id'],$alias_db['alias'])."\n"; - $nb_alias_disable++; - } - $message.="\t"._('Delete :')." ".urlGen('delete',$alias_db['id'],$alias_db['alias'])."\n\n"; - } - $nb_alias_total = $nb_alias + $nb_alias_disable; - if ($nb_alias_total == 0) { - return false; - } else { - SendEmail($email,_('List trash email'),$message); - return true; - } -} - -function SendEmail($recipient, $sujet, $message) { - $header = "From: ".EMAILFROM."\n"; - $header.= "MIME-Version: 1.0\n"; -/* - if (preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $recipient)) { - $header = str_replace("\n", "\r\n", $header); - $message = str_replace("\n", "\r\n", $header); - } -*/ - $message="Bonjour,\n\n".$message."\n\n". - mail($recipient,EMAILTAGSUJET.' '.$sujet,$message,$header); -} - -function urlGen($act,$id,$alias_full) { - $idUrl=base64_encode($id.';'.$alias_full); - if (URLREWRITE_START && URLREWRITE_MIDDLE && URLREWRITE_END) { - return URLREWRITE_START.$act.URLREWRITE_MIDDLE.$idUrl.URLREWRITE_END; - } else { - return URLPAGE."?act=".$act."&value=".$idUrl; - } -} -function urlUnGen($get_value) { - $explode_get_value = explode(';', base64_decode($get_value)); - $return['id']=$explode_get_value[0]; - $return['alias_full']=$explode_get_value[1]; - return $return; -} - -// Source http://css-tricks.com/serious-form-security/ -function StripCleanToHtml($s){ - // Restores the added slashes (ie.: " I\'m John " for security in output, and escapes them in htmlentities(ie.: " etc.) - // Also strips any tags it may encouter - // Use: Anything that shouldn't contain html (pretty much everything that is not a textarea) - return htmlentities(trim(strip_tags(stripslashes($s))), ENT_NOQUOTES, "UTF-8"); -} -function CleanToHtml($s){ - // Restores the added slashes (ie.: " I\'m John " for security in output, and escapes them in htmlentities(ie.: " etc.) - // It preserves any tags in that they are encoded aswell (like <html>) - // As an extra security, if people would try to inject tags that would become tags after stripping away bad characters, - // we do still strip tags but only after htmlentities, so any genuine code examples will stay - // Use: For input fields that may contain html, like a textarea - return strip_tags(htmlentities(trim(stripslashes($s))), ENT_NOQUOTES, "UTF-8"); -} - -////////////////// -// Admin function -////////////////// - -function CheckUpdate() { - if (CHECKUPDATE) { - if (! is_file(DATA.'/checkupdate') || filemtime(DATA.'/checkupdate') + CHECKUPDATE < time()) { - $ep_get_version = @file_get_contents('http://poubelle.zici.fr/ep_checkupdate'); - $ep_version_file=fopen(DATA.'/checkupdate','w'); - fputs($ep_version_file, $ep_get_version); - fclose($ep_version_file); - if (DEBUG) { echo 'ep_checkupdate_downloaded : '.file_get_contents(DATA.'/checkupdate').'\n'; } - } - $file_current_version = trim(file_get_contents(DATA.'/checkupdate')); - if ($file_current_version != '' && $file_current_version != VERSION) { - return '

Upgrade note: Your version is in '.VERSION.' while the current version is in '.$file_current_version.'

'; - } else { - return false; - } - } -} - -function LifeExpire() { - global $dbco; - try { - $deletecmd = $dbco->prepare("DELETE FROM ".DBTABLEPREFIX."alias WHERE dateExpir IS NOT NULL AND dateExpir < '".date('Y-m-d H:i:s')."'"); - $deletecmd->execute(); - } catch ( PDOException $e ) { - echo "DB error : ", $e->getMessage(); - die(); - } -} - -// Vérifie que le domaine de l'alias est bien dans la configuration -function domainePresent($postDom) { - $domains = explode(';', DOMAIN); - $return=true; - if (count($domains) == 1) { - if (!preg_match('#'.$postDom.'#',DOMAIN)) { - $return=false; - } - } else { - foreach ($domains as $one_domain) { - if (!preg_match('#'.$postDom.'#',$one_domain)) { - $return=false; - } - } - } - return $return; -} -// Vérifie que l'email n'est pas un alias avec un domain "poubelle" (éviter boucle forward) -function emailIsAlias($postemail) { - $domains = explode(';', DOMAIN); - $return=false; - if (count($domains) == 1) { - if (preg_match('#'.DOMAIN.'$#',$postemail)) { - $return=true; - } - } else { - foreach ($domains as $one_domain) { - if (preg_match('#'.$one_domain.'$#',$postemail)) { - $return=true; - } - } - } - return $return; -} - - -function get_ip() { - // IP si internet partagé - if (isset($_SERVER['HTTP_CLIENT_IP'])) { - return $_SERVER['HTTP_CLIENT_IP']; - } - // IP derrière un proxy - elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { - return $_SERVER['HTTP_X_FORWARDED_FOR']; - } - // Sinon : IP normale - else { - return (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''); - } -} - -// Fonction langues : -function languesSwitch() { - echo ' -
-
- - fr - it - en -
-
'; -} - -function lang2locale($langue) { - global $langueEtLocalDispo; - if ($langueEtLocalDispo[$langue] != '') { - return $langueEtLocalDispo[$langue]; - } else { - // par défaut - return 'en_US'; - } -} -function locale2lang($localeRecherche) { - global $langueEtLocalDispo; - foreach($langueEtLocalDispo as $code=>$locale) { - if ($locale == $localeRecherche) { - return $code; - break; - } - } - // par défaut - return 'en'; -} - -// Ajoute la langue à une URL qui n'en a pas -function addLang2url($lang) { - global $_SERVER; - $URIexplode=explode('?', $_SERVER['REQUEST_URI']); - if ($URIexplode[1] != '') { - return $URIexplode[0].$URIexplode[1].'&langue='.$lang; - } else { - return $URIexplode[0].'?langue='.$lang; - } -} -function replaceLang2url($lang) { - global $_SERVER; - $URIexplode=explode('?', $_SERVER['REQUEST_URI']); - $debutUrl=substr($URIexplode[0], 0, -langCountChar($URIexplode[0])); - if ($URIexplode[1] != '') { - return $debutUrl.$lang.'?'.$URIexplode[1]; - } else { - return $debutUrl.$lang; - } -} -function langCountChar($url) { - // $url reçu c'est l'URL avant la query : ?machin=1 - if (preg_match('#/sr-Cyrl-ME$#',$url)) { - return 10; - } elseif (preg_match('#/[a-z]{2}-[A-Z]{2}$#',$url)) { - return 5; - } elseif (preg_match('#/[a-z]{3}-[A-Z]{2}$#',$url)) { - return 6; - } elseif (preg_match('#/[a-z]{3}$#',$url)) { - return 3; - } elseif (preg_match('#/[a-z]{2}$#',$url)) { - return 2; - } -} -?>