From 7c089033767ee5869f8c2526d31058c60f42d6d3 Mon Sep 17 00:00:00 2001 From: Steven Mondji-Lerider Date: Wed, 9 May 2012 16:31:58 +0000 Subject: [PATCH] Ajout configuration squirrelmail + bugfixes pour postfix --- .gitattributes | 1 + bureau/class/m_mail_jabber.php | 2 + bureau/class/m_mail_localbox.php | 21 ++++++---- bureau/class/m_mail_squirrelmail.php | 58 ++++++++++++++++++++++++++++ bureau/class/m_quota.php | 2 +- debian/alternc.postinst | 9 +++-- etc/alternc/postfix.cf | 2 +- install/alternc.install | 2 +- 8 files changed, 84 insertions(+), 13 deletions(-) create mode 100644 bureau/class/m_mail_squirrelmail.php diff --git a/.gitattributes b/.gitattributes index b3e9ab17..0c84eff0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -340,6 +340,7 @@ bureau/class/m_mail_alias.php -text bureau/class/m_mail_jabber.php -text bureau/class/m_mail_localbox.php -text bureau/class/m_mail_redirection.php -text +bureau/class/m_mail_squirrelmail.php -text bureau/class/m_mem.php -text bureau/class/m_mysql.php -text bureau/class/m_quota.php -text diff --git a/bureau/class/m_mail_jabber.php b/bureau/class/m_mail_jabber.php index 540893d2..2f09662b 100644 --- a/bureau/class/m_mail_jabber.php +++ b/bureau/class/m_mail_jabber.php @@ -65,7 +65,9 @@ Class m_mail_jabber{ $return = array ( "label" => "jabberdemo", // an internal label "short_desc" => _("Jabber Demo"), // A human short description + "class" => "mail_jabber", "human_desc" => _("This is just a demo.
Look at m_mail_jabber.php"), // A human long description + "form_param" => Array($mail_id), "url" => "javascript:alert('Ici un renvoie vers le formulaire adequat de cette entrée.');", // The URL to go "pass_required" => true, // This feature require the mail to have a global password ? "advanced" => $this->advanced, // Is this an advanced feature ? diff --git a/bureau/class/m_mail_localbox.php b/bureau/class/m_mail_localbox.php index e104ba0d..993aeaca 100644 --- a/bureau/class/m_mail_localbox.php +++ b/bureau/class/m_mail_localbox.php @@ -59,27 +59,34 @@ Class m_mail_localbox{ * @param integer $mail_id */ function set_localbox($mail_id){ - global $db, $err; - $err->log("localbox","set_localbox"); + global $db, $err, $hooks; + $err->log("localbox","set_localbox!!!!!!!!"); $path="mail/"; if(!$db->query("select distinct left(ad.address,1) as letter,ad.address ,d.domaine from address ad, domaines d where ad.domain_id = d.id and ad.id = $mail_id order by letter;")); if(! $db->next_record()){ return null; } + //FIXME passer par un hooks pour squirel + $hooks->invoke('hooks_squirrelmail_init',(array($db->f('address'),$db->f('domaine') ))); $path="/var/alternc/mail/".$db->f('letter')."/".$db->f('address')."_".$db->f('domaine'); - //FIXME faire un touch de la maildir si dovecot ne sait pas le faire. if(!$db->query("INSERT into mailbox (address_id,path,quota) values ($mail_id,'$path',50);")); - + } /* - * Set a localbox + * Unset a localbox * @param integer $mail_id */ function unset_localbox($mail_id){ - global $db, $err; - $err->log("localbox","set_localbox"); + global $db, $err,$hooks; + $err->log("localbox","unset_localbox"); + if(!$db->query("select address,domaine from address,domaines where address.domain_id=domaines.id and address.id=$mail_id ;")); + + if(! $db->next_record()){ + return null; + } + $hooks->invoke('hooks_squirrelmail_delete',(array($db->f('address'),$db->f('domaine') ))); if(!$db->query("DELETE from mailbox where address_id=$mail_id;")); } diff --git a/bureau/class/m_mail_squirrelmail.php b/bureau/class/m_mail_squirrelmail.php new file mode 100644 index 00000000..b548b68a --- /dev/null +++ b/bureau/class/m_mail_squirrelmail.php @@ -0,0 +1,58 @@ +log("mail_squirrelmail","squirrelmail_init",$mail."@".$dom); + $m=substr($mail,0,1); + $gecos=$mail; + if (!$mail) { + // Cas du CATCH-ALL + $gecos="Catch-All"; + $m="_"; + } + + + $f=fopen("/var/lib/squirrelmail/data/".$mail."_".$dom.".pref","wb"); + $g=0; $g=@fopen("/etc/squirrelmail/default_pref","rb"); + fputs($f,"email_address=$mail@$dom\nchosen_theme=default_theme.php\n"); + if ($g) { + while ($s=fgets($g,1024)) { + if (substr($s,0,14)!="email_address=" && substr($s,0,13)!="chosen_theme=") { + fputs($f,$s); + } + } + fclose($g); + } + fclose($f); + @copy("/var/lib/squirrelmail/data/".$mail."_".$dom.".pref","/var/lib/squirrelmail/data/".$mail."@".$dom.".pref"); + return true; + } + + function hooks_squirrelmail_delete($mail,$dom){ + global $err,$cuid,$db; + $err->log("mail_squirrelmail","squirrelmail_delete",$mail."@".$dom); + + @unlink("/var/lib/squirrelmail/data/".$mail."_".$dom.".pref"); + @unlink("/var/lib/squirrelmail/data/".$mail."_".$dom.".abook"); + @unlink("/var/lib/squirrelmail/data/".$mail."@".$dom.".pref"); + @unlink("/var/lib/squirrelmail/data/".$mail."@".$dom.".abook"); + return true; + + } + +} + +?> diff --git a/bureau/class/m_quota.php b/bureau/class/m_quota.php index 1482f9d0..d87e1023 100644 --- a/bureau/class/m_quota.php +++ b/bureau/class/m_quota.php @@ -184,7 +184,7 @@ class m_quota { echo "quota set :::::ciud: $cuid :::: size: $size :::: \n "; // Now we check that the value has been written properly : exec("/usr/lib/alternc/quota_get ".$cuid,$a); - echo "quota get :::::ciud: $cuid :::: size: $size :::: a?: $a "; + print_r($a); if ($size!=$a[1]) { $err->raise("quota",1); return false; diff --git a/debian/alternc.postinst b/debian/alternc.postinst index e1244837..04a985fd 100644 --- a/debian/alternc.postinst +++ b/debian/alternc.postinst @@ -240,8 +240,11 @@ EOF # Update l18n files /usr/share/alternc/install/dopo.sh - - #sudo stuff allowing alterncpanel to use quota + + #squirrelmail fix + chown -R :alterncpanel /var/lib/squirrelmail/data + chmod -R g+w /var/lib/squirrelmail + #sudo stuff allowing alterncpanel to use quota if [ -d /etc/sudoers.d ]; then cp /etc/alternc/alternc-sudoers /etc/sudoers.d/alternc-sudoers chmod 0440 /etc/sudoers.d/alternc-sudoers @@ -249,7 +252,7 @@ EOF echo "running an older version of sudo" #FIXME echo "copy content of /usr/share/doc/examples/example.sudoers into /etc/sudoers.d for to run properly" - fi + fi # important: postinst gele sans ca db_stop diff --git a/etc/alternc/postfix.cf b/etc/alternc/postfix.cf index 01bbe0c1..70b27a49 100644 --- a/etc/alternc/postfix.cf +++ b/etc/alternc/postfix.cf @@ -19,7 +19,7 @@ smtpd_tls_session_cache_timeout = 3600s smtp_tls_dcert_file = $smtpd_tls_dcert_file smtp_tls_dkey_file = $smtpd_tls_dcert_file smtp_tls_CApath = $smtpd_tls_CApath -smtpd_tls_auth_only = yes +smtpd_tls_auth_only = no #SASL options smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = postfix diff --git a/install/alternc.install b/install/alternc.install index 8dcb8ee7..1102d3e0 100644 --- a/install/alternc.install +++ b/install/alternc.install @@ -295,7 +295,7 @@ grep -v '^\ *#' $postfix_conf |while read line ; do done # Conviguring delivery used bu Postfix FIXME change script name -echo `/usr/bin/postfix-add-policy dovecot pipe DRhu vmail:vmail '/usr/bin/sudo /usr/lib/dovecot/deliver -f ${sender} -d ${recipient} '` +echo `/usr/bin/postfix-add-policy dovecot vmail:vmail DRhu pipe'/usr/bin/sudo /usr/lib/dovecot/deliver -f ${sender} -d ${recipient} '` # Bug #1215: configure mydestination when $FQDN is not in OLDDESTINATION=`postconf mydestination | awk -F '=' '{print $2}'`