Upgrade class-pop3. Props Nazgul. fixes #3864

git-svn-id: http://svn.automattic.com/wordpress/trunk@4945 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2007-02-25 18:19:21 +00:00
parent d2ccc08c17
commit 2826681a18

View File

@ -3,7 +3,7 @@
/**
* mail_fetch/setup.php
*
* Copyright (c) 1999-2002 The SquirrelMail Project Team
* Copyright (c) 1999-2006 The SquirrelMail Project Team
*
* Copyright (c) 1999 CDI (cdi@thewebmasters.net) All Rights Reserved
* Modified by Philippe Mingo 2001 mingo@rotedic.com
@ -40,9 +40,6 @@ class POP3 {
var $BANNER = ''; // Holds the banner returned by the
// pop server - used for apop()
var $RFC1939 = TRUE; // Set by noop(). See rfc1939.txt
//
var $ALLOWAPOP = FALSE; // Allow or disallow apop()
// This must be set to true
// manually
@ -59,12 +56,14 @@ class POP3 {
if(!empty($timeout)) {
settype($timeout,"integer");
$this->TIMEOUT = $timeout;
if (!ini_get('safe_mode'))
set_time_limit($timeout);
}
return true;
}
function update_timer () {
if (!ini_get('safe_mode'))
set_time_limit($this->TIMEOUT);
return true;
}
@ -75,6 +74,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;
@ -84,7 +84,7 @@ 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]";
@ -105,25 +105,7 @@ class POP3 {
}
$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 = "") {
@ -158,20 +140,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;
}
}
}
@ -214,13 +190,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;
}
}
}
@ -330,7 +300,7 @@ class POP3 {
$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";
@ -353,7 +323,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)
{
@ -428,7 +398,7 @@ class POP3 {
return $last;
}
$Vars = explode(" ",$reply);
$Vars = preg_split('/\s+/',$reply);
$count = $Vars[1];
$size = $Vars[2];
settype($count,"integer");
@ -559,7 +529,7 @@ class POP3 {
$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();
@ -590,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;
@ -661,7 +631,7 @@ class POP3 {
for($count =0; $count < $length; $count++)
{
$digit = substr($server_text, $count, 1);
if ( false !== $digit ) {
if (!empty($digit)) {
if( (!$outside) && ($digit != '<') && ($digit != '>') )
{
$banner .= $digit;