X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=plugins%2Fmail_fetch%2Fclass.POP3.php;h=d4f55b16179d2cb028ec620644238261aed21747;hb=929da10db42a7764d611a14ac36b07a1a6089710;hp=dec5a0bfc79cf02b25588cfd15d2be073cfce9a6;hpb=d3c893575fc6e39a7e6399e3457d3abc03a893b4;p=squirrelmail.git diff --git a/plugins/mail_fetch/class.POP3.php b/plugins/mail_fetch/class.POP3.php index dec5a0bf..d4f55b16 100644 --- a/plugins/mail_fetch/class.POP3.php +++ b/plugins/mail_fetch/class.POP3.php @@ -1,20 +1,26 @@ -TIMEOUT = $timeout; - set_time_limit($timeout); + if (!ini_get('safe_mode')) + set_time_limit($timeout); } return true; } function update_timer () { - set_time_limit($this->TIMEOUT); + if (!ini_get('safe_mode')) + set_time_limit($this->TIMEOUT); return true; } @@ -74,6 +79,7 @@ class POP3 { // If MAILSERVER is set, override $server with it's value + if (!isset($port) || !$port) {$port = 110;} if(!empty($this->MAILSERVER)) $server = $this->MAILSERVER; @@ -83,10 +89,10 @@ class POP3 { return false; } - $fp = fsockopen("$server", $port, $errno, $errstr); + $fp = @fsockopen("$server", $port, $errno, $errstr); if(!$fp) { - $this->ERROR = _("POP3 connect:") . ' ' . _("Error ") . "[$errno] [$errstr]"; + $this->ERROR = _("POP3 connect:") . ' ' . _("Error") . ' ' . "[$errno] [$errstr]"; unset($this->FP); return false; } @@ -98,31 +104,13 @@ class POP3 { if($this->DEBUG) error_log("POP3 SEND [connect: $server] GOT [$reply]",0); if(!$this->is_ok($reply)) { - $this->ERROR = _("POP3 connect:") . ' ' . _("Error ") . "[$reply]"; + $this->ERROR = _("POP3 connect:") . ' ' . _("Error") . ' ' . "[$reply]"; unset($this->FP); return false; } $this->FP = $fp; $this->BANNER = $this->parse_banner($reply); - $this->RFC1939 = $this->noop(); - if($this->RFC1939) { - $this->ERROR = _("POP3: premature NOOP OK, NOT an RFC 1939 Compliant server"); - $this->quit(); - return false; - } else - return true; - } - - function noop () { - - if(!isset($this->FP)) { - $this->ERROR = _("POP3 noop:") . ' ' . _("No connection to server"); - return false; - } else { - $cmd = "NOOP"; - $reply = $this->send_cmd( $cmd ); - return( $this->is_ok( $reply ) ); - } + return true; } function user ($user = "") { @@ -137,7 +125,7 @@ class POP3 { } else { $reply = $this->send_cmd("USER $user"); if(!$this->is_ok($reply)) { - $this->ERROR = _("POP3 user:") . ' ' . _("Error ") . "[$reply]"; + $this->ERROR = _("POP3 user:") . ' ' . _("Error") . ' ' . "[$reply]"; return false; } else return true; @@ -157,20 +145,14 @@ class POP3 { } else { $reply = $this->send_cmd("PASS $pass"); if(!$this->is_ok($reply)) { - $this->ERROR = _("POP3 pass:") . ' ' . _("authentication failed ") . "[$reply]"; + $this->ERROR = _("POP3 pass:") . ' ' . _("Authentication failed") . " [$reply]"; $this->quit(); return false; } else { // Auth successful. $count = $this->last("count"); $this->COUNT = $count; - $this->RFC1939 = $this->noop(); - if(!$this->RFC1939) { - $this->ERROR = _("POP3 pass:") . ' ' . _("NOOP failed. Server not RFC 1939 compliant"); - $this->quit(); - return false; - } else - return $count; + return $count; } } } @@ -213,13 +195,7 @@ class POP3 { // Auth successful. $count = $this->last("count"); $this->COUNT = $count; - $this->RFC1939 = $this->noop(); - if(!$this->RFC1939) { - $this->ERROR = _("POP3 apop:") . ' ' . _("NOOP failed. Server not RFC 1939 compliant"); - $this->quit(); - return false; - } else - return $count; + return $count; } } } @@ -272,7 +248,7 @@ class POP3 { } if(!$this->is_ok($reply)) { - $this->ERROR = _("POP3 top:") . ' ' . _("Error ") . "[$reply]"; + $this->ERROR = _("POP3 top:") . ' ' . _("Error") . ' ' . "[$reply]"; return false; } @@ -326,10 +302,10 @@ class POP3 { } if(!$this->is_ok($reply)) { - $this->ERROR = _("POP3 pop_list:") . ' ' . _("Error ") . "[$reply]"; + $this->ERROR = _("POP3 pop_list:") . ' ' . _("Error") . ' ' . "[$reply]"; return false; } - list($junk,$num,$size) = explode(" ",$reply); + list($junk,$num,$size) = preg_split('/\s+/',$reply); return $size; } $cmd = "LIST"; @@ -337,7 +313,7 @@ class POP3 { if(!$this->is_ok($reply)) { $reply = $this->strip_clf($reply); - $this->ERROR = _("POP3 pop_list:") . ' ' . _("Error ") . "[$reply]"; + $this->ERROR = _("POP3 pop_list:") . ' ' . _("Error") . ' ' . "[$reply]"; return false; } $MsgArray = array(); @@ -352,7 +328,7 @@ class POP3 { $this->ERROR = _("POP3 pop_list:") . ' ' . _("Premature end of list"); return false; } - list($thisMsg,$msgSize) = explode(" ",$line); + list($thisMsg,$msgSize) = preg_split('/\s+/',$line); settype($thisMsg,"integer"); if($thisMsg != $msgC) { @@ -385,7 +361,7 @@ class POP3 { if(!$this->is_ok($reply)) { - $this->ERROR = _("POP3 get:") . ' ' . _("Error ") . "[$reply]"; + $this->ERROR = _("POP3 get:") . ' ' . _("Error") . ' ' . "[$reply]"; return false; } @@ -418,11 +394,11 @@ class POP3 { $reply = $this->send_cmd("STAT"); if(!$this->is_ok($reply)) { - $this->ERROR = _("POP3 last:") . ' ' . _("Error ") . "[$reply]"; + $this->ERROR = _("POP3 last:") . ' ' . _("Error") . ' ' . "[$reply]"; return $last; } - $Vars = explode(" ",$reply); + $Vars = preg_split('/\s+/',$reply); $count = $Vars[1]; $size = $Vars[2]; settype($count,"integer"); @@ -451,7 +427,7 @@ class POP3 { // response - if it ever does, something truely // wild is going on. - $this->ERROR = _("POP3 reset:") . ' ' . _("Error ") . "[$reply]"; + $this->ERROR = _("POP3 reset:") . ' ' . _("Error") . ' ' . "[$reply]"; @error_log("POP3 reset: ERROR [$reply]",0); } $this->quit(); @@ -550,10 +526,10 @@ class POP3 { $reply = $this->send_cmd($cmd); if(!$this->is_ok($reply)) { - $this->ERROR = _("POP3 uidl:") . ' ' . _("Error ") . "[$reply]"; + $this->ERROR = _("POP3 uidl:") . ' ' . _("Error") . ' ' . "[$reply]"; return false; } - list ($ok,$num,$myUidl) = explode(" ",$reply); + list ($ok,$num,$myUidl) = preg_split('/\s+/',$reply); return $myUidl; } else { $this->update_timer(); @@ -573,7 +549,7 @@ class POP3 { if($this->DEBUG) { @error_log("POP3 SEND [$cmd] GOT [$reply]",0); } if(!$this->is_ok($reply)) { - $this->ERROR = _("POP3 uidl:") . ' ' . _("Error ") . "[$reply]"; + $this->ERROR = _("POP3 uidl:") . ' ' . _("Error") . ' ' . "[$reply]"; return false; } @@ -584,7 +560,7 @@ class POP3 { if(ereg("^\.\r\n",$line)) { break; } - list ($msg,$msgUidl) = explode(" ",$line); + list ($msg,$msgUidl) = preg_split('/\s+/',$line); $msgUidl = $this->strip_clf($msgUidl); if($count == $msg) { $UIDLArray[$msg] = $msgUidl; @@ -617,7 +593,7 @@ class POP3 { $reply = $this->send_cmd("DELE $msgNum"); if(!$this->is_ok($reply)) { - $this->ERROR = _("POP3 delete:") . ' ' . _("Command failed ") . "[$reply]"; + $this->ERROR = _("POP3 delete:") . ' ' . _("Command failed") . ' ' . "[$reply]"; return false; } return true; @@ -676,4 +652,3 @@ class POP3 { } // End class -?>