Code

Updated mail methods to use new sieve TLS option.
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Mon, 9 Jun 2008 11:21:03 +0000 (11:21 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Mon, 9 Jun 2008 11:21:03 +0000 (11:21 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@11264 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-plugins/mail/personal/mail/class_mail-methods-cyrus.inc
gosa-plugins/mail/personal/mail/sieve/class_sieve.inc
gosa-plugins/mail/personal/mail/sieve/class_sieveManagement.inc

index c73154f6420e23f65f1ff4604f866af6e47ec818..4022b03d73372cf2203691f46adebfb1fb9c155e 100644 (file)
@@ -275,7 +275,7 @@ class mailMethodCyrus extends mailMethod
 
     /* Log into the mail server */
     $sieve= new sieve($cfg["sieve_server"], $cfg["sieve_port"], $user,
-        $cfg["password"], $cfg["admin"]);
+        $cfg["password"], $cfg["admin"],$cfg["sieve_option"]);
 
     if (!$sieve->sieve_login()){
       msg_dialog::display(_("SIEVE error"), sprintf(_("Cannot log into SIEVE server: %s"), '<br><br><i>'.to_string($sieve->error_raw).'</i>'), ERROR_DIALOG);
index c45d0f18e2da2878bac90b0441461aa487eaf8fa..666ef1c0e8bd8af446b910b0fa64b9ecc08d370f 100644 (file)
@@ -82,6 +82,7 @@ class sieve
   var $error;
   var $error_raw;
   var $responses;
+  var $options = "";
 
   //maybe we should add an errorlvl that the user will pass to new sieve = sieve(,,,,E_WARN)
   //so we can decide how to handle certain errors?!?
@@ -199,7 +200,7 @@ class sieve
     } /* end else */   
   } /* end get_response() */
 
-  function sieve($host, $port, $user, $pass, $auth="", $auth_types="PLAIN DIGEST-MD5")
+  function sieve($host, $port, $user, $pass, $auth="",$options ="", $auth_types="PLAIN DIGEST-MD5")
   {
     $this->host=$host;
     $this->port=$port;
@@ -220,6 +221,7 @@ class sieve
     $this->loggedin=false;
     $this->error= "";
     $this->error_raw="";
+       $this->options = $options;
   }
 
   function parse_for_quotes($string)
@@ -477,9 +479,32 @@ class sieve
           return true;
   }
 
+
   function authenticate()
   {
 
+       /* Check if a TLS bases connection is required 
+     */
+       if(preg_match("/^tls$/",$this->options)){
+
+               /* Check if PHP supports TLS encryption for sockets 
+         */
+               if(function_exists("stream_socket_enable_crypto")){
+                       
+                       if (@ fputs ($this->fp, "STARTTLS\r\n") === false) {
+                               $this->error_raw = "fputs() returned 'false'"; return (false);
+                       } @ $linha = fgets ($this->fp, 1024); if ($linha === false) {
+                               $this->error_raw = "fgets() returned 'false'"; return (false);
+                       } if (! preg_match ("/\\s*OK\\s/i", $linha)) {
+                               $this->error_raw = "expected an 'OK', but server replied: '" . trim ($linha) . "'"; return (false);
+                       } if (! @ stream_socket_enable_crypto ($this->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
+                               $this->error_raw = "stream_socket_enable_crypto() returned 'false'"; return (false);
+                       }else{
+                               echo "Done";
+                       }
+               }
+       }
+
     switch ($this->auth_in_use) {
     
         case "PLAIN":
index a47cd4bda0892fdb39b3247277149fab56cc5e8c..fa829e575e25d4a6cea527ee001a4b34f2bc3046 100644 (file)
@@ -143,7 +143,8 @@ class sieveManagement extends plugin
           $cfg["sieve_port"], 
           $this->parent->$uattrib, 
           $cfg["password"], 
-          $cfg["admin"]);
+          $cfg["admin"],
+          $cfg["sieve_option"]);
 
       /* Try to login */
       if (!@$this->sieve_handle->sieve_login()){