PluginProbe ʕ •ᴥ•ʔ
UpdraftPlus: WP Backup & Migration Plugin / 1.16.23
UpdraftPlus: WP Backup & Migration Plugin v1.16.23
1.26.4 1.26.3 1.9.19 1.9.25 1.9.26 1.9.30 1.9.31 1.9.32 1.9.4 1.9.40 1.9.41 1.9.42 1.9.43 1.9.44 1.9.45 1.9.46 1.9.5 1.9.50 1.9.51 1.9.60 1.9.62 1.9.63 1.9.64 1.11.12 1.4.8 1.11.15 1.4.9 1.11.17 1.5.16 1.11.18 1.5.20 1.11.2 1.5.21 1.11.20 1.5.22 1.11.23 1.5.5 1.11.24 1.5.6 1.11.25 1.5.7 1.11.26 1.5.8 1.11.27 1.5.9 1.11.28 1.6.1 1.11.3 1.6.17 1.11.4 1.6.2 1.11.5 1.6.46 1.11.8 1.7.0 1.11.9 1.7.1 1.12.0 1.7.18 1.12.1 1.7.20 1.12.12 1.7.3 1.12.13 1.7.34 1.12.15 1.7.35 1.12.17 1.7.39 1.12.2 1.7.40 1.12.20 1.7.41 1.12.23 1.8.1 1.12.24 1.8.11 1.12.25 1.8.12 1.12.28 1.8.13 1.12.29 1.8.2 1.12.30 1.8.5 1.12.32 1.8.8 1.12.34 1.9.0 1.12.35 1.9.13 1.12.37 1.9.15 1.12.39 1.9.17 1.12.4 1.12.40 1.12.6 1.13.1 1.13.11 1.13.12 1.13.15 1.13.16 1.13.2 1.13.3 1.13.4 1.13.5 1.13.6 1.13.7 1.13.8 1.13.9 1.14.10 1.14.11 1.14.12 1.14.13 1.14.2 1.14.3 1.14.4 1.14.5 1.14.7 1.14.9 1.15.0 1.15.2 1.15.3 1.15.5 1.15.6 1.15.7 1.16.0 1.16.10 1.16.11 1.16.12 1.16.13 1.16.14 1.16.15 1.16.16 1.16.17 1.16.20 1.16.21 1.16.22 1.16.23 1.16.24 1.16.25 1.16.26 1.16.28 1.16.29 1.16.32 1.16.34 1.16.35 1.16.36 1.16.37 1.16.4 1.16.40 1.16.41 1.16.42 1.16.43 1.16.44 1.16.45 1.16.46 1.16.47 1.16.48 1.16.49 1.16.5 1.16.50 1.16.51 1.16.53 1.16.55 1.16.56 1.16.59 1.16.6 1.16.60 1.16.61 1.16.62 1.16.63 1.16.64 1.16.65 1.16.66 1.16.67 1.16.68 1.16.69 1.16.7 1.16.8 1.16.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.14 1.2.15 1.2.16 1.2.17 1.2.19 1.2.2 1.2.20 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.33 1.2.35 1.2.36 1.2.38 1.2.39 1.2.4 1.2.40 1.2.41 1.2.42 1.2.43 1.2.44 1.2.45 1.2.46 1.2.5 1.2.7 1.2.8 1.2.9 1.22.1 1.22.10 1.22.11 1.22.12 1.22.14 1.22.15 1.22.16 1.22.17 1.22.18 1.22.19 1.22.20 1.22.21 1.22.22 1.22.23 1.22.24 1.22.3 1.22.4 1.22.5 1.22.6 1.22.7 1.22.8 1.22.9 1.23.1 1.23.10 1.23.11 1.23.12 1.23.13 1.23.15 1.23.16 1.23.2 1.23.3 1.23.4 1.23.5 1.23.6 1.23.7 1.23.8 1.23.9 1.24.1 1.24.10 1.24.11 1.24.12 1.24.2 trunk 1.24.3 0.7.4 1.24.4 0.7.7 1.24.5 0.8.28 1.24.6 0.8.29 1.24.7 0.8.30 1.24.8 0.8.31 1.24.9 0.8.32 1.25.1 0.8.33 1.25.2 0.8.36 1.25.3 0.8.37 1.25.5 0.8.50 1.25.6 0.8.51 1.25.7 0.9.1 1.25.8 0.9.10 1.25.9 0.9.11 1.26.1 0.9.12 1.26.2 0.9.2 1.3.10 0.9.20 1.3.12 0.9.21 1.3.14 0.9.22 1.3.15 1.0.10 1.3.17 1.0.11 1.3.18 1.0.12 1.3.19 1.0.15 1.3.2 1.0.16 1.3.20 1.0.18 1.3.22 1.0.20 1.3.23 1.0.3 1.3.24 1.0.4 1.3.25 1.0.5 1.3.3 1.0.6 1.3.4 1.0.7 1.3.6 1.0.8 1.3.7 1.0.9 1.3.8 1.1.0 1.3.9 1.1.10 1.4.0 1.1.11 1.4.10 1.1.12 1.4.11 1.1.13 1.4.12 1.1.14 1.4.13 1.1.15 1.4.14 1.1.16 1.4.15 1.1.17 1.4.2 1.1.2 1.4.27 1.1.3 1.4.28 1.1.5 1.4.29 1.1.6 1.4.30 1.1.8 1.4.4 1.1.9 1.4.48 1.10.1 1.4.5 1.10.3 1.4.6 1.11.1 1.4.7
updraftplus / includes / ftp.class.php
updraftplus / includes Last commit date
Dropbox2 6 years ago Google 6 years ago checkout-embed 6 years ago cloudfiles 12 years ago handlebars 6 years ago images 9 years ago jquery.serializeJSON 7 years ago jstree 6 years ago labelauty 6 years ago tether 6 years ago tether-shepherd 7 years ago updraftclone 6 years ago S3.php 6 years ago S3compat.php 6 years ago cacert.pem 6 years ago class-backup-history.php 6 years ago class-commands.php 6 years ago class-database-utility.php 6 years ago class-filesystem-functions.php 6 years ago class-job-scheduler.php 6 years ago class-manipulation-functions.php 7 years ago class-partialfileservlet.php 9 years ago class-remote-send.php 6 years ago class-semaphore.php 6 years ago class-storage-methods-interface.php 6 years ago class-udrpc.php 6 years ago class-updraft-dashboard-news.php 6 years ago class-updraftcentral-updraftplus-commands.php 8 years ago class-updraftplus-encryption.php 6 years ago class-wpadmin-commands.php 6 years ago class-zip.php 6 years ago ftp.class.php 7 years ago get-cpanel-quota-usage.pl 12 years ago google-extensions.php 9 years ago jquery-ui.custom.css 7 years ago jquery-ui.custom.min.css 7 years ago jquery-ui.custom.min.css.map 7 years ago jquery.blockUI.js 8 years ago jquery.blockUI.min.js 8 years ago updraft-admin-common.js 6 years ago updraft-admin-common.min.js 6 years ago updraft-notices.php 6 years ago updraft-restorer-skin-compatibility.php 6 years ago updraft-restorer-skin.php 6 years ago updraftcentral.php 7 years ago updraftplus-clone.php 6 years ago updraftplus-login.php 7 years ago updraftplus-notices.php 6 years ago updraftplus-tour.php 7 years ago updraftvault.php 6 years ago
ftp.class.php
240 lines
1 <?php
2
3 if (!defined('UPDRAFTPLUS_DIR')) die('No direct access allowed.');
4
5 /**
6 * Adapted from http://www.solutionbot.com/2009/01/02/php-ftp-class/
7 */
8 class UpdraftPlus_ftp_wrapper {
9
10 private $conn_id;
11
12 private $host;
13
14 private $username;
15
16 private $password;
17
18 private $port;
19
20 public $timeout = 60;
21
22 public $passive = true;
23
24 public $system_type = '';
25
26 public $ssl = false;
27
28 public $use_server_certs = false;
29
30 public $disable_verify = true;
31
32 public $login_type = 'non-encrypted';
33
34 public function __construct($host, $username, $password, $port = 21) {
35 $this->host = $host;
36 $this->username = $username;
37 $this->password = $password;
38 $this->port = $port;
39 }
40
41 public function connect() {
42
43 $time_start = time();
44 $this->conn_id = ftp_connect($this->host, $this->port, 20);
45
46 if ($this->conn_id) $result = ftp_login($this->conn_id, $this->username, $this->password);
47
48 if (!empty($result)) {
49 ftp_set_option($this->conn_id, FTP_TIMEOUT_SEC, $this->timeout);
50 ftp_pasv($this->conn_id, $this->passive);
51 $this->system_type = ftp_systype($this->conn_id);
52 return true;
53 }
54
55 if (time() - $time_start > 19) {
56 global $updraftplus_admin;
57 if (isset($updraftplus_admin->logged) && is_array($updraftplus_admin->logged)) {
58 $updraftplus_admin->logged[] = sprintf(__('The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company.', 'updraftplus'), 'FTP');
59 } else {
60 global $updraftplus;
61 $updraftplus->log(sprintf(__('The %s connection timed out; if you entered the server correctly, then this is usually caused by a firewall blocking the connection - you should check with your web hosting company.', 'updraftplus'), 'FTP'), 'error');
62 }
63 }
64
65 return false;
66 }
67
68 public function put($local_file_path, $remote_file_path, $mode = FTP_BINARY, $resume = false, $updraftplus = false) {
69
70 $file_size = filesize($local_file_path);
71
72 $existing_size = 0;
73 if ($resume) {
74 $existing_size = ftp_size($this->conn_id, $remote_file_path);
75 if ($existing_size <=0) {
76 $resume = false;
77 $existing_size = 0;
78 } else {
79 if (is_a($updraftplus, 'UpdraftPlus')) $updraftplus->log("File already exists at remote site: size $existing_size. Will attempt resumption.");
80 if ($existing_size >= $file_size) {
81 if (is_a($updraftplus, 'UpdraftPlus')) $updraftplus->log("File is apparently already completely uploaded");
82 return true;
83 }
84 }
85 }
86
87 // From here on, $file_size is only used for logging calculations. We want to avoid divsion by zero.
88 $file_size = max($file_size, 1);
89
90 if (!$fh = fopen($local_file_path, 'rb')) return false;
91 if ($existing_size) fseek($fh, $existing_size);
92
93 $ret = ftp_nb_fput($this->conn_id, $remote_file_path, $fh, $mode, $existing_size);
94
95 // $existing_size can now be re-purposed
96
97 while (FTP_MOREDATA == $ret) {
98 if (is_a($updraftplus, 'UpdraftPlus')) {
99 $new_size = ftell($fh);
100 $record_after = 524288;
101 if ($existing_size > 2097152) {
102 $record_after = ($existing_size > 4194304) ? 2097152 : 1048576;
103 }
104 if ($new_size - $existing_size > $record_after) {
105 $existing_size = $new_size;
106 $percent = round(100*$new_size/$file_size, 1);
107 $updraftplus->record_uploaded_chunk($percent, '', $local_file_path);
108 }
109 }
110 // Continue upload
111 $ret = ftp_nb_continue($this->conn_id);
112 }
113
114 fclose($fh);
115
116 if (FTP_FINISHED != $ret) {
117 if (is_a($updraftplus, 'UpdraftPlus')) $updraftplus->log("FTP upload: error ($ret)");
118 return false;
119 }
120
121 return true;
122
123 }
124
125 public function get($local_file_path, $remote_file_path, $mode = FTP_BINARY, $resume = false, $updraftplus = false) {
126
127 $file_last_size = 0;
128
129 if ($resume) {
130 if (!$fh = fopen($local_file_path, 'ab')) return false;
131 clearstatcache($local_file_path);// phpcs:ignore PHPCompatibility.FunctionUse.NewFunctionParameters.clearstatcache_clear_realpath_cacheFound -- The function clearstatcache() does not have a parameter "clear_realpath_cache" in PHP version 5.2 or earlier
132 $file_last_size = filesize($local_file_path);
133 } else {
134 if (!$fh = fopen($local_file_path, 'wb')) return false;
135 }
136
137 $ret = ftp_nb_fget($this->conn_id, $fh, $remote_file_path, $mode, $file_last_size);
138
139 if (false == $ret) return false;
140
141 while (FTP_MOREDATA == $ret) {
142
143 if ($updraftplus) {
144 $file_now_size = filesize($local_file_path);
145 if ($file_now_size - $file_last_size > 524288) {
146 $updraftplus->log("FTP fetch: file size is now: ".sprintf("%0.2f", filesize($local_file_path)/1048576)." Mb");
147 $file_last_size = $file_now_size;
148 }
149 clearstatcache($local_file_path);// phpcs:ignore PHPCompatibility.FunctionUse.NewFunctionParameters.clearstatcache_clear_realpath_cacheFound -- The function clearstatcache() does not have a parameter "clear_realpath_cache" in PHP version 5.2 or earlier
150 }
151
152 $ret = ftp_nb_continue($this->conn_id);
153 }
154
155 fclose($fh);
156
157 if (FTP_FINISHED == $ret) {
158 if ($updraftplus) $updraftplus->log("FTP fetch: fetch complete");
159 return true;
160 } else {
161 if ($updraftplus) $updraftplus->log("FTP fetch: fetch failed");
162 return false;
163 }
164
165 }
166
167 public function chmod($permissions, $remote_filename) {
168 if ($this->is_octal($permissions)) {
169 $result = ftp_chmod($this->conn_id, $permissions, $remote_filename);
170 if ($result) {
171 return true;
172 } else {
173 return false;
174 }
175 } else {
176 throw new Exception('$permissions must be an octal number');
177 }
178 }
179
180 public function chdir($directory) {
181 ftp_chdir($this->conn_id, $directory);
182 }
183
184 public function delete($remote_file_path) {
185 if (ftp_delete($this->conn_id, $remote_file_path)) {
186 return true;
187 } else {
188 return false;
189 }
190 }
191
192 public function make_dir($directory) {
193 if (ftp_mkdir($this->conn_id, $directory)) {
194 return true;
195 } else {
196 return false;
197 }
198 }
199
200 public function rename($old_name, $new_name) {
201 if (ftp_rename($this->conn_id, $old_name, $new_name)) {
202 return true;
203 } else {
204 return false;
205 }
206 }
207
208 public function remove_dir($directory) {
209 if (ftp_rmdir($this->conn_id, $directory)) {
210 return true;
211 } else {
212 return false;
213 }
214 }
215
216 public function dir_list($directory) {
217 return ftp_nlist($this->conn_id, $directory);
218 }
219
220 public function cdup() {
221 ftp_cdup($this->conn_id);
222 }
223
224 public function size($f) {
225 return ftp_size($this->conn_id, $f);
226 }
227
228 public function current_dir() {
229 return ftp_pwd($this->conn_id);
230 }
231
232 private function is_octal($i) {
233 return decoct(octdec($i)) == $i;
234 }
235
236 public function __destruct() {
237 if ($this->conn_id) ftp_close($this->conn_id);
238 }
239 }
240