Current File : /home/lifechur/carp/carp/PHPFTP.php |
<?php
/*
PHPFTP 1.0
by Antone Roundy
public domain
*/
class PHPFTP {
var $use_usleep=0; // change to 1 for faster execution
// don't change to 1 on Windows servers unless you have PHP 5
var $sleeptime=125000;
var $loginsleeptime=1000000;
var $fp=NULL;
/*
0 = success
1 = couldn't open network connection
2 = unknown host
3 = login failed
4 = PHP version too low
*/
function Connect($server,$user,$pass) {
$rv=0;
$vers=explode('.',PHP_VERSION);
$needvers=array(4,3,0);
$j=count($vers);
$k=count($needvers);
if ($k<$j) $j=$k;
for ($i=0;$i<$j;$i++) {
if (($vers[$i]+0)>$needvers[$i]) break;
if (($vers[$i]+0)<$needvers[$i]) return 4;
}
$this->Disconnect();
if (strlen($server)) {
if (preg_match('/[^0-9.]/',$server)) {
$ip=gethostbyname($server);
if ($ip==$server) {
$ip='';
$rv=2;
}
} else $ip=$server;
} else $ip='127.0.0.1';
if (strlen($ip)) {
if ($this->fp=@fsockopen($ip,21)) {
if ($this->use_usleep) usleep($this->sleeptime);
$this->GetResponse($n,$t);
if ($n==220) {
$this->DoCommand("user $user",$n,$t);
if ($n==331) $this->DoCommand("pass $pass",$n,$t);
if ($n!=230) $rv=3;
} else $rv=1;
} else $rv=1;
}
return $rv;
}
function Disconnect($exit=1) {
if ($this->fp) {
if ($exit) $this->DoCommand('quit',$j1,$j2);
fclose($this->fp);
$this->fp=NULL;
}
}
function DoCommand($c,&$rn,&$rt) {
$rn=0;
$rt='';
if ($this->fp) {
fputs($this->fp,"$c\r\n");
if ($this->use_usleep) usleep($this->sleeptime);
else sleep(1);
$this->GetResponse($rn,$rt);
}
return $this->fp?1:0;
}
function GetResponse(&$rn,&$rt) {
$more=1;
$rn=0;
$rt='';
do {
$l=preg_replace("/[\r\n]+/",' ',fread($this->fp,5000));
if (preg_match('/^([0-9]{3})( |-)(.*)$/',$l,$m)) {
$rn=$m[1]+0;
$rt.=$m[3];
if ($m[2]==' ') $more=0;
} else $rt.=$l;
$s=socket_get_status($this->fp);
} while ($more&&$s['unread_bytes']);
$rt=trim($rt);
}
}
return;
?>