Edit File by line
/home/zeestwma/ceyloniy.../wp-admin/includes
File: class-ftp.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* PemFTP - An Ftp implementation in pure PHP
[2] Fix | Delete
*
[3] Fix | Delete
* @package PemFTP
[4] Fix | Delete
* @since 2.5.0
[5] Fix | Delete
*
[6] Fix | Delete
* @version 1.0
[7] Fix | Delete
* @copyright Alexey Dotsenko
[8] Fix | Delete
* @author Alexey Dotsenko
[9] Fix | Delete
* @link https://www.phpclasses.org/package/1743-PHP-FTP-client-in-pure-PHP.html
[10] Fix | Delete
* @license LGPL https://opensource.org/licenses/lgpl-license.html
[11] Fix | Delete
*/
[12] Fix | Delete
[13] Fix | Delete
/**
[14] Fix | Delete
* Defines the newline characters, if not defined already.
[15] Fix | Delete
*
[16] Fix | Delete
* This can be redefined.
[17] Fix | Delete
*
[18] Fix | Delete
* @since 2.5.0
[19] Fix | Delete
* @var string
[20] Fix | Delete
*/
[21] Fix | Delete
if ( ! defined( 'CRLF' ) ) {
[22] Fix | Delete
define( 'CRLF', "\r\n" );
[23] Fix | Delete
}
[24] Fix | Delete
[25] Fix | Delete
/**
[26] Fix | Delete
* Sets whatever to autodetect ASCII mode.
[27] Fix | Delete
*
[28] Fix | Delete
* This can be redefined.
[29] Fix | Delete
*
[30] Fix | Delete
* @since 2.5.0
[31] Fix | Delete
* @var int
[32] Fix | Delete
*/
[33] Fix | Delete
if ( ! defined( 'FTP_AUTOASCII' ) ) {
[34] Fix | Delete
define( 'FTP_AUTOASCII', -1 );
[35] Fix | Delete
}
[36] Fix | Delete
[37] Fix | Delete
/**
[38] Fix | Delete
*
[39] Fix | Delete
* This can be redefined.
[40] Fix | Delete
* @since 2.5.0
[41] Fix | Delete
* @var int
[42] Fix | Delete
*/
[43] Fix | Delete
if ( ! defined( 'FTP_BINARY' ) ) {
[44] Fix | Delete
define( 'FTP_BINARY', 1 );
[45] Fix | Delete
}
[46] Fix | Delete
[47] Fix | Delete
/**
[48] Fix | Delete
*
[49] Fix | Delete
* This can be redefined.
[50] Fix | Delete
* @since 2.5.0
[51] Fix | Delete
* @var int
[52] Fix | Delete
*/
[53] Fix | Delete
if ( ! defined( 'FTP_ASCII' ) ) {
[54] Fix | Delete
define( 'FTP_ASCII', 0 );
[55] Fix | Delete
}
[56] Fix | Delete
[57] Fix | Delete
/**
[58] Fix | Delete
* Whether to force FTP.
[59] Fix | Delete
*
[60] Fix | Delete
* This can be redefined.
[61] Fix | Delete
*
[62] Fix | Delete
* @since 2.5.0
[63] Fix | Delete
* @var bool
[64] Fix | Delete
*/
[65] Fix | Delete
if ( ! defined( 'FTP_FORCE' ) ) {
[66] Fix | Delete
define( 'FTP_FORCE', true );
[67] Fix | Delete
}
[68] Fix | Delete
[69] Fix | Delete
/**
[70] Fix | Delete
* @since 2.5.0
[71] Fix | Delete
* @var string
[72] Fix | Delete
*/
[73] Fix | Delete
define('FTP_OS_Unix','u');
[74] Fix | Delete
[75] Fix | Delete
/**
[76] Fix | Delete
* @since 2.5.0
[77] Fix | Delete
* @var string
[78] Fix | Delete
*/
[79] Fix | Delete
define('FTP_OS_Windows','w');
[80] Fix | Delete
[81] Fix | Delete
/**
[82] Fix | Delete
* @since 2.5.0
[83] Fix | Delete
* @var string
[84] Fix | Delete
*/
[85] Fix | Delete
define('FTP_OS_Mac','m');
[86] Fix | Delete
[87] Fix | Delete
/**
[88] Fix | Delete
* PemFTP base class
[89] Fix | Delete
*
[90] Fix | Delete
*/
[91] Fix | Delete
class ftp_base {
[92] Fix | Delete
/* Public variables */
[93] Fix | Delete
var $LocalEcho;
[94] Fix | Delete
var $Verbose;
[95] Fix | Delete
var $OS_local;
[96] Fix | Delete
var $OS_remote;
[97] Fix | Delete
[98] Fix | Delete
/* Private variables */
[99] Fix | Delete
var $_lastaction;
[100] Fix | Delete
var $_errors;
[101] Fix | Delete
var $_type;
[102] Fix | Delete
var $_umask;
[103] Fix | Delete
var $_timeout;
[104] Fix | Delete
var $_passive;
[105] Fix | Delete
var $_host;
[106] Fix | Delete
var $_fullhost;
[107] Fix | Delete
var $_port;
[108] Fix | Delete
var $_datahost;
[109] Fix | Delete
var $_dataport;
[110] Fix | Delete
var $_ftp_control_sock;
[111] Fix | Delete
var $_ftp_data_sock;
[112] Fix | Delete
var $_ftp_temp_sock;
[113] Fix | Delete
var $_ftp_buff_size;
[114] Fix | Delete
var $_login;
[115] Fix | Delete
var $_password;
[116] Fix | Delete
var $_connected;
[117] Fix | Delete
var $_ready;
[118] Fix | Delete
var $_code;
[119] Fix | Delete
var $_message;
[120] Fix | Delete
var $_can_restore;
[121] Fix | Delete
var $_port_available;
[122] Fix | Delete
var $_curtype;
[123] Fix | Delete
var $_features;
[124] Fix | Delete
[125] Fix | Delete
var $_error_array;
[126] Fix | Delete
var $AuthorizedTransferMode;
[127] Fix | Delete
var $OS_FullName;
[128] Fix | Delete
var $_eol_code;
[129] Fix | Delete
var $AutoAsciiExt;
[130] Fix | Delete
[131] Fix | Delete
/* Constructor */
[132] Fix | Delete
function __construct($port_mode=FALSE, $verb=FALSE, $le=FALSE) {
[133] Fix | Delete
$this->LocalEcho=$le;
[134] Fix | Delete
$this->Verbose=$verb;
[135] Fix | Delete
$this->_lastaction=NULL;
[136] Fix | Delete
$this->_error_array=array();
[137] Fix | Delete
$this->_eol_code=array(FTP_OS_Unix=>"\n", FTP_OS_Mac=>"\r", FTP_OS_Windows=>"\r\n");
[138] Fix | Delete
$this->AuthorizedTransferMode=array(FTP_AUTOASCII, FTP_ASCII, FTP_BINARY);
[139] Fix | Delete
$this->OS_FullName=array(FTP_OS_Unix => 'UNIX', FTP_OS_Windows => 'WINDOWS', FTP_OS_Mac => 'MACOS');
[140] Fix | Delete
$this->AutoAsciiExt=array("ASP","BAT","C","CPP","CSS","CSV","JS","H","HTM","HTML","SHTML","INI","LOG","PHP3","PHTML","PL","PERL","SH","SQL","TXT");
[141] Fix | Delete
$this->_port_available=($port_mode==TRUE);
[142] Fix | Delete
$this->SendMSG("Staring FTP client class".($this->_port_available?"":" without PORT mode support"));
[143] Fix | Delete
$this->_connected=FALSE;
[144] Fix | Delete
$this->_ready=FALSE;
[145] Fix | Delete
$this->_can_restore=FALSE;
[146] Fix | Delete
$this->_code=0;
[147] Fix | Delete
$this->_message="";
[148] Fix | Delete
$this->_ftp_buff_size=4096;
[149] Fix | Delete
$this->_curtype=NULL;
[150] Fix | Delete
$this->SetUmask(0022);
[151] Fix | Delete
$this->SetType(FTP_AUTOASCII);
[152] Fix | Delete
$this->SetTimeout(30);
[153] Fix | Delete
$this->Passive(!$this->_port_available);
[154] Fix | Delete
$this->_login="anonymous";
[155] Fix | Delete
$this->_password="anon@ftp.com";
[156] Fix | Delete
$this->_features=array();
[157] Fix | Delete
$this->OS_local=FTP_OS_Unix;
[158] Fix | Delete
$this->OS_remote=FTP_OS_Unix;
[159] Fix | Delete
$this->features=array();
[160] Fix | Delete
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $this->OS_local=FTP_OS_Windows;
[161] Fix | Delete
elseif(strtoupper(substr(PHP_OS, 0, 3)) === 'MAC') $this->OS_local=FTP_OS_Mac;
[162] Fix | Delete
}
[163] Fix | Delete
[164] Fix | Delete
function ftp_base($port_mode=FALSE) {
[165] Fix | Delete
$this->__construct($port_mode);
[166] Fix | Delete
}
[167] Fix | Delete
[168] Fix | Delete
// <!-- --------------------------------------------------------------------------------------- -->
[169] Fix | Delete
// <!-- Public functions -->
[170] Fix | Delete
// <!-- --------------------------------------------------------------------------------------- -->
[171] Fix | Delete
[172] Fix | Delete
function parselisting($line) {
[173] Fix | Delete
$is_windows = ($this->OS_remote == FTP_OS_Windows);
[174] Fix | Delete
if ($is_windows && preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|<DIR>) +(.+)/",$line,$lucifer)) {
[175] Fix | Delete
$b = array();
[176] Fix | Delete
if ($lucifer[3]<70) { $lucifer[3]+=2000; } else { $lucifer[3]+=1900; } // 4digit year fix
[177] Fix | Delete
$b['isdir'] = ($lucifer[7]=="<DIR>");
[178] Fix | Delete
if ( $b['isdir'] )
[179] Fix | Delete
$b['type'] = 'd';
[180] Fix | Delete
else
[181] Fix | Delete
$b['type'] = 'f';
[182] Fix | Delete
$b['size'] = $lucifer[7];
[183] Fix | Delete
$b['month'] = $lucifer[1];
[184] Fix | Delete
$b['day'] = $lucifer[2];
[185] Fix | Delete
$b['year'] = $lucifer[3];
[186] Fix | Delete
$b['hour'] = $lucifer[4];
[187] Fix | Delete
$b['minute'] = $lucifer[5];
[188] Fix | Delete
$b['time'] = @mktime($lucifer[4]+(strcasecmp($lucifer[6],"PM")==0?12:0),$lucifer[5],0,$lucifer[1],$lucifer[2],$lucifer[3]);
[189] Fix | Delete
$b['am/pm'] = $lucifer[6];
[190] Fix | Delete
$b['name'] = $lucifer[8];
[191] Fix | Delete
} else if (!$is_windows && $lucifer=preg_split("/[ ]/",$line,9,PREG_SPLIT_NO_EMPTY)) {
[192] Fix | Delete
//echo $line."\n";
[193] Fix | Delete
$lcount=count($lucifer);
[194] Fix | Delete
if ($lcount<8) return '';
[195] Fix | Delete
$b = array();
[196] Fix | Delete
$b['isdir'] = $lucifer[0][0] === "d";
[197] Fix | Delete
$b['islink'] = $lucifer[0][0] === "l";
[198] Fix | Delete
if ( $b['isdir'] )
[199] Fix | Delete
$b['type'] = 'd';
[200] Fix | Delete
elseif ( $b['islink'] )
[201] Fix | Delete
$b['type'] = 'l';
[202] Fix | Delete
else
[203] Fix | Delete
$b['type'] = 'f';
[204] Fix | Delete
$b['perms'] = $lucifer[0];
[205] Fix | Delete
$b['number'] = $lucifer[1];
[206] Fix | Delete
$b['owner'] = $lucifer[2];
[207] Fix | Delete
$b['group'] = $lucifer[3];
[208] Fix | Delete
$b['size'] = $lucifer[4];
[209] Fix | Delete
if ($lcount==8) {
[210] Fix | Delete
sscanf($lucifer[5],"%d-%d-%d",$b['year'],$b['month'],$b['day']);
[211] Fix | Delete
sscanf($lucifer[6],"%d:%d",$b['hour'],$b['minute']);
[212] Fix | Delete
$b['time'] = @mktime($b['hour'],$b['minute'],0,$b['month'],$b['day'],$b['year']);
[213] Fix | Delete
$b['name'] = $lucifer[7];
[214] Fix | Delete
} else {
[215] Fix | Delete
$b['month'] = $lucifer[5];
[216] Fix | Delete
$b['day'] = $lucifer[6];
[217] Fix | Delete
if (preg_match("/([0-9]{2}):([0-9]{2})/",$lucifer[7],$l2)) {
[218] Fix | Delete
$b['year'] = gmdate("Y");
[219] Fix | Delete
$b['hour'] = $l2[1];
[220] Fix | Delete
$b['minute'] = $l2[2];
[221] Fix | Delete
} else {
[222] Fix | Delete
$b['year'] = $lucifer[7];
[223] Fix | Delete
$b['hour'] = 0;
[224] Fix | Delete
$b['minute'] = 0;
[225] Fix | Delete
}
[226] Fix | Delete
$b['time'] = strtotime(sprintf("%d %s %d %02d:%02d",$b['day'],$b['month'],$b['year'],$b['hour'],$b['minute']));
[227] Fix | Delete
$b['name'] = $lucifer[8];
[228] Fix | Delete
}
[229] Fix | Delete
}
[230] Fix | Delete
[231] Fix | Delete
return $b;
[232] Fix | Delete
}
[233] Fix | Delete
[234] Fix | Delete
function SendMSG($message = "", $crlf=true) {
[235] Fix | Delete
if ($this->Verbose) {
[236] Fix | Delete
echo $message.($crlf?CRLF:"");
[237] Fix | Delete
flush();
[238] Fix | Delete
}
[239] Fix | Delete
return TRUE;
[240] Fix | Delete
}
[241] Fix | Delete
[242] Fix | Delete
function SetType($mode=FTP_AUTOASCII) {
[243] Fix | Delete
if(!in_array($mode, $this->AuthorizedTransferMode)) {
[244] Fix | Delete
$this->SendMSG("Wrong type");
[245] Fix | Delete
return FALSE;
[246] Fix | Delete
}
[247] Fix | Delete
$this->_type=$mode;
[248] Fix | Delete
$this->SendMSG("Transfer type: ".($this->_type==FTP_BINARY?"binary":($this->_type==FTP_ASCII?"ASCII":"auto ASCII") ) );
[249] Fix | Delete
return TRUE;
[250] Fix | Delete
}
[251] Fix | Delete
[252] Fix | Delete
function _settype($mode=FTP_ASCII) {
[253] Fix | Delete
if($this->_ready) {
[254] Fix | Delete
if($mode==FTP_BINARY) {
[255] Fix | Delete
if($this->_curtype!=FTP_BINARY) {
[256] Fix | Delete
if(!$this->_exec("TYPE I", "SetType")) return FALSE;
[257] Fix | Delete
$this->_curtype=FTP_BINARY;
[258] Fix | Delete
}
[259] Fix | Delete
} elseif($this->_curtype!=FTP_ASCII) {
[260] Fix | Delete
if(!$this->_exec("TYPE A", "SetType")) return FALSE;
[261] Fix | Delete
$this->_curtype=FTP_ASCII;
[262] Fix | Delete
}
[263] Fix | Delete
} else return FALSE;
[264] Fix | Delete
return TRUE;
[265] Fix | Delete
}
[266] Fix | Delete
[267] Fix | Delete
function Passive($pasv=NULL) {
[268] Fix | Delete
if(is_null($pasv)) $this->_passive=!$this->_passive;
[269] Fix | Delete
else $this->_passive=$pasv;
[270] Fix | Delete
if(!$this->_port_available and !$this->_passive) {
[271] Fix | Delete
$this->SendMSG("Only passive connections available!");
[272] Fix | Delete
$this->_passive=TRUE;
[273] Fix | Delete
return FALSE;
[274] Fix | Delete
}
[275] Fix | Delete
$this->SendMSG("Passive mode ".($this->_passive?"on":"off"));
[276] Fix | Delete
return TRUE;
[277] Fix | Delete
}
[278] Fix | Delete
[279] Fix | Delete
function SetServer($host, $port=21, $reconnect=true) {
[280] Fix | Delete
if(!is_long($port)) {
[281] Fix | Delete
$this->verbose=true;
[282] Fix | Delete
$this->SendMSG("Incorrect port syntax");
[283] Fix | Delete
return FALSE;
[284] Fix | Delete
} else {
[285] Fix | Delete
$ip=@gethostbyname($host);
[286] Fix | Delete
$dns=@gethostbyaddr($host);
[287] Fix | Delete
if(!$ip) $ip=$host;
[288] Fix | Delete
if(!$dns) $dns=$host;
[289] Fix | Delete
// Validate the IPAddress PHP4 returns -1 for invalid, PHP5 false
[290] Fix | Delete
// -1 === "255.255.255.255" which is the broadcast address which is also going to be invalid
[291] Fix | Delete
$ipaslong = ip2long($ip);
[292] Fix | Delete
if ( ($ipaslong == false) || ($ipaslong === -1) ) {
[293] Fix | Delete
$this->SendMSG("Wrong host name/address \"".$host."\"");
[294] Fix | Delete
return FALSE;
[295] Fix | Delete
}
[296] Fix | Delete
$this->_host=$ip;
[297] Fix | Delete
$this->_fullhost=$dns;
[298] Fix | Delete
$this->_port=$port;
[299] Fix | Delete
$this->_dataport=$port-1;
[300] Fix | Delete
}
[301] Fix | Delete
$this->SendMSG("Host \"".$this->_fullhost."(".$this->_host."):".$this->_port."\"");
[302] Fix | Delete
if($reconnect){
[303] Fix | Delete
if($this->_connected) {
[304] Fix | Delete
$this->SendMSG("Reconnecting");
[305] Fix | Delete
if(!$this->quit(FTP_FORCE)) return FALSE;
[306] Fix | Delete
if(!$this->connect()) return FALSE;
[307] Fix | Delete
}
[308] Fix | Delete
}
[309] Fix | Delete
return TRUE;
[310] Fix | Delete
}
[311] Fix | Delete
[312] Fix | Delete
function SetUmask($umask=0022) {
[313] Fix | Delete
$this->_umask=$umask;
[314] Fix | Delete
umask($this->_umask);
[315] Fix | Delete
$this->SendMSG("UMASK 0".decoct($this->_umask));
[316] Fix | Delete
return TRUE;
[317] Fix | Delete
}
[318] Fix | Delete
[319] Fix | Delete
function SetTimeout($timeout=30) {
[320] Fix | Delete
$this->_timeout=$timeout;
[321] Fix | Delete
$this->SendMSG("Timeout ".$this->_timeout);
[322] Fix | Delete
if($this->_connected)
[323] Fix | Delete
if(!$this->_settimeout($this->_ftp_control_sock)) return FALSE;
[324] Fix | Delete
return TRUE;
[325] Fix | Delete
}
[326] Fix | Delete
[327] Fix | Delete
function connect($server=NULL) {
[328] Fix | Delete
if(!empty($server)) {
[329] Fix | Delete
if(!$this->SetServer($server)) return false;
[330] Fix | Delete
}
[331] Fix | Delete
if($this->_ready) return true;
[332] Fix | Delete
$this->SendMsg('Local OS : '.$this->OS_FullName[$this->OS_local]);
[333] Fix | Delete
if(!($this->_ftp_control_sock = $this->_connect($this->_host, $this->_port))) {
[334] Fix | Delete
$this->SendMSG("Error : Cannot connect to remote host \"".$this->_fullhost." :".$this->_port."\"");
[335] Fix | Delete
return FALSE;
[336] Fix | Delete
}
[337] Fix | Delete
$this->SendMSG("Connected to remote host \"".$this->_fullhost.":".$this->_port."\". Waiting for greeting.");
[338] Fix | Delete
do {
[339] Fix | Delete
if(!$this->_readmsg()) return FALSE;
[340] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[341] Fix | Delete
$this->_lastaction=time();
[342] Fix | Delete
} while($this->_code<200);
[343] Fix | Delete
$this->_ready=true;
[344] Fix | Delete
$syst=$this->systype();
[345] Fix | Delete
if(!$syst) $this->SendMSG("Cannot detect remote OS");
[346] Fix | Delete
else {
[347] Fix | Delete
if(preg_match("/win|dos|novell/i", $syst[0])) $this->OS_remote=FTP_OS_Windows;
[348] Fix | Delete
elseif(preg_match("/os/i", $syst[0])) $this->OS_remote=FTP_OS_Mac;
[349] Fix | Delete
elseif(preg_match("/(li|u)nix/i", $syst[0])) $this->OS_remote=FTP_OS_Unix;
[350] Fix | Delete
else $this->OS_remote=FTP_OS_Mac;
[351] Fix | Delete
$this->SendMSG("Remote OS: ".$this->OS_FullName[$this->OS_remote]);
[352] Fix | Delete
}
[353] Fix | Delete
if(!$this->features()) $this->SendMSG("Cannot get features list. All supported - disabled");
[354] Fix | Delete
else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features)));
[355] Fix | Delete
return TRUE;
[356] Fix | Delete
}
[357] Fix | Delete
[358] Fix | Delete
function quit($force=false) {
[359] Fix | Delete
if($this->_ready) {
[360] Fix | Delete
if(!$this->_exec("QUIT") and !$force) return FALSE;
[361] Fix | Delete
if(!$this->_checkCode() and !$force) return FALSE;
[362] Fix | Delete
$this->_ready=false;
[363] Fix | Delete
$this->SendMSG("Session finished");
[364] Fix | Delete
}
[365] Fix | Delete
$this->_quit();
[366] Fix | Delete
return TRUE;
[367] Fix | Delete
}
[368] Fix | Delete
[369] Fix | Delete
function login($user=NULL, $pass=NULL) {
[370] Fix | Delete
if(!is_null($user)) $this->_login=$user;
[371] Fix | Delete
else $this->_login="anonymous";
[372] Fix | Delete
if(!is_null($pass)) $this->_password=$pass;
[373] Fix | Delete
else $this->_password="anon@anon.com";
[374] Fix | Delete
if(!$this->_exec("USER ".$this->_login, "login")) return FALSE;
[375] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[376] Fix | Delete
if($this->_code!=230) {
[377] Fix | Delete
if(!$this->_exec((($this->_code==331)?"PASS ":"ACCT ").$this->_password, "login")) return FALSE;
[378] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[379] Fix | Delete
}
[380] Fix | Delete
$this->SendMSG("Authentication succeeded");
[381] Fix | Delete
if(empty($this->_features)) {
[382] Fix | Delete
if(!$this->features()) $this->SendMSG("Cannot get features list. All supported - disabled");
[383] Fix | Delete
else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features)));
[384] Fix | Delete
}
[385] Fix | Delete
return TRUE;
[386] Fix | Delete
}
[387] Fix | Delete
[388] Fix | Delete
function pwd() {
[389] Fix | Delete
if(!$this->_exec("PWD", "pwd")) return FALSE;
[390] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[391] Fix | Delete
return preg_replace("/^[0-9]{3} \"(.+)\".*$/s", "\\1", $this->_message);
[392] Fix | Delete
}
[393] Fix | Delete
[394] Fix | Delete
function cdup() {
[395] Fix | Delete
if(!$this->_exec("CDUP", "cdup")) return FALSE;
[396] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[397] Fix | Delete
return true;
[398] Fix | Delete
}
[399] Fix | Delete
[400] Fix | Delete
function chdir($pathname) {
[401] Fix | Delete
if(!$this->_exec("CWD ".$pathname, "chdir")) return FALSE;
[402] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[403] Fix | Delete
return TRUE;
[404] Fix | Delete
}
[405] Fix | Delete
[406] Fix | Delete
function rmdir($pathname) {
[407] Fix | Delete
if(!$this->_exec("RMD ".$pathname, "rmdir")) return FALSE;
[408] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[409] Fix | Delete
return TRUE;
[410] Fix | Delete
}
[411] Fix | Delete
[412] Fix | Delete
function mkdir($pathname) {
[413] Fix | Delete
if(!$this->_exec("MKD ".$pathname, "mkdir")) return FALSE;
[414] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[415] Fix | Delete
return TRUE;
[416] Fix | Delete
}
[417] Fix | Delete
[418] Fix | Delete
function rename($from, $to) {
[419] Fix | Delete
if(!$this->_exec("RNFR ".$from, "rename")) return FALSE;
[420] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[421] Fix | Delete
if($this->_code==350) {
[422] Fix | Delete
if(!$this->_exec("RNTO ".$to, "rename")) return FALSE;
[423] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[424] Fix | Delete
} else return FALSE;
[425] Fix | Delete
return TRUE;
[426] Fix | Delete
}
[427] Fix | Delete
[428] Fix | Delete
function filesize($pathname) {
[429] Fix | Delete
if(!isset($this->_features["SIZE"])) {
[430] Fix | Delete
$this->PushError("filesize", "not supported by server");
[431] Fix | Delete
return FALSE;
[432] Fix | Delete
}
[433] Fix | Delete
if(!$this->_exec("SIZE ".$pathname, "filesize")) return FALSE;
[434] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[435] Fix | Delete
return preg_replace("/^[0-9]{3} ([0-9]+).*$/s", "\\1", $this->_message);
[436] Fix | Delete
}
[437] Fix | Delete
[438] Fix | Delete
function abort() {
[439] Fix | Delete
if(!$this->_exec("ABOR", "abort")) return FALSE;
[440] Fix | Delete
if(!$this->_checkCode()) {
[441] Fix | Delete
if($this->_code!=426) return FALSE;
[442] Fix | Delete
if(!$this->_readmsg("abort")) return FALSE;
[443] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[444] Fix | Delete
}
[445] Fix | Delete
return true;
[446] Fix | Delete
}
[447] Fix | Delete
[448] Fix | Delete
function mdtm($pathname) {
[449] Fix | Delete
if(!isset($this->_features["MDTM"])) {
[450] Fix | Delete
$this->PushError("mdtm", "not supported by server");
[451] Fix | Delete
return FALSE;
[452] Fix | Delete
}
[453] Fix | Delete
if(!$this->_exec("MDTM ".$pathname, "mdtm")) return FALSE;
[454] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[455] Fix | Delete
$mdtm = preg_replace("/^[0-9]{3} ([0-9]+).*$/s", "\\1", $this->_message);
[456] Fix | Delete
$date = sscanf($mdtm, "%4d%2d%2d%2d%2d%2d");
[457] Fix | Delete
$timestamp = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]);
[458] Fix | Delete
return $timestamp;
[459] Fix | Delete
}
[460] Fix | Delete
[461] Fix | Delete
function systype() {
[462] Fix | Delete
if(!$this->_exec("SYST", "systype")) return FALSE;
[463] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[464] Fix | Delete
$DATA = explode(" ", $this->_message);
[465] Fix | Delete
return array($DATA[1], $DATA[3]);
[466] Fix | Delete
}
[467] Fix | Delete
[468] Fix | Delete
function delete($pathname) {
[469] Fix | Delete
if(!$this->_exec("DELE ".$pathname, "delete")) return FALSE;
[470] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[471] Fix | Delete
return TRUE;
[472] Fix | Delete
}
[473] Fix | Delete
[474] Fix | Delete
function site($command, $fnction="site") {
[475] Fix | Delete
if(!$this->_exec("SITE ".$command, $fnction)) return FALSE;
[476] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[477] Fix | Delete
return TRUE;
[478] Fix | Delete
}
[479] Fix | Delete
[480] Fix | Delete
function chmod($pathname, $mode) {
[481] Fix | Delete
if(!$this->site( sprintf('CHMOD %o %s', $mode, $pathname), "chmod")) return FALSE;
[482] Fix | Delete
return TRUE;
[483] Fix | Delete
}
[484] Fix | Delete
[485] Fix | Delete
function restore($from) {
[486] Fix | Delete
if(!isset($this->_features["REST"])) {
[487] Fix | Delete
$this->PushError("restore", "not supported by server");
[488] Fix | Delete
return FALSE;
[489] Fix | Delete
}
[490] Fix | Delete
if($this->_curtype!=FTP_BINARY) {
[491] Fix | Delete
$this->PushError("restore", "cannot restore in ASCII mode");
[492] Fix | Delete
return FALSE;
[493] Fix | Delete
}
[494] Fix | Delete
if(!$this->_exec("REST ".$from, "restore")) return FALSE;
[495] Fix | Delete
if(!$this->_checkCode()) return FALSE;
[496] Fix | Delete
return TRUE;
[497] Fix | Delete
}
[498] Fix | Delete
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function