summaryrefslogtreecommitdiff
path: root/includes/filetransfer
diff options
context:
space:
mode:
authorAngie Byron <webchick@24967.no-reply.drupal.org>2011-01-03 02:20:45 +0000
committerAngie Byron <webchick@24967.no-reply.drupal.org>2011-01-03 02:20:45 +0000
commitb9b661ef2fa5bcf965a75a53057ffdb810f6e401 (patch)
tree6f24044c7bca5d176f37f03f6efb8326b10dc711 /includes/filetransfer
parent1b75281915b7cc773006b07e6f5cf358b4e07340 (diff)
downloadbrdo-b9b661ef2fa5bcf965a75a53057ffdb810f6e401.tar.gz
brdo-b9b661ef2fa5bcf965a75a53057ffdb810f6e401.tar.bz2
#1010506 by dww, chx, hgurol: Fixed FileTransfer doesn't properly handle any advanced settings nor the ssh username
Diffstat (limited to 'includes/filetransfer')
-rw-r--r--includes/filetransfer/filetransfer.inc9
-rw-r--r--includes/filetransfer/ftp.inc10
-rw-r--r--includes/filetransfer/ssh.inc10
3 files changed, 18 insertions, 11 deletions
diff --git a/includes/filetransfer/filetransfer.inc b/includes/filetransfer/filetransfer.inc
index 8d4271760..cd62f1d51 100644
--- a/includes/filetransfer/filetransfer.inc
+++ b/includes/filetransfer/filetransfer.inc
@@ -28,8 +28,15 @@ abstract class FileTransfer {
* Classes that extend this class must override the factory() static method.
*
* @param string $jail
+ * The full path where all file operations performed by this object will
+ * be restricted to. This prevents the FileTransfer classes from being
+ * able to touch other parts of the filesystem.
* @param array $settings
- * @return object New instance of the appropriate FileTransfer subclass.
+ * An array of connection settings for the FileTransfer subclass. If the
+ * getSettingsForm() method uses any nested settings, the same structure
+ * will be assumed here.
+ * @return object
+ * New instance of the appropriate FileTransfer subclass.
*/
static function factory($jail, $settings) {
throw new FileTransferException('FileTransfer::factory() static method not overridden by FileTransfer subclass.');
diff --git a/includes/filetransfer/ftp.inc b/includes/filetransfer/ftp.inc
index 3d4cc9f64..ddb0d3eae 100644
--- a/includes/filetransfer/ftp.inc
+++ b/includes/filetransfer/ftp.inc
@@ -24,10 +24,10 @@ abstract class FileTransferFTP extends FileTransfer {
* options. If the FTP PHP extension is available, use it.
*/
static function factory($jail, $settings) {
- $settings['username'] = empty($settings['username']) ? '' : $settings['username'];
- $settings['password'] = empty($settings['password']) ? '' : $settings['password'];
- $settings['hostname'] = empty($settings['hostname']) ? 'localhost' : $settings['hostname'];
- $settings['port'] = empty($settings['port']) ? 21 : $settings['port'];
+ $username = empty($settings['username']) ? '' : $settings['username'];
+ $password = empty($settings['password']) ? '' : $settings['password'];
+ $hostname = empty($settings['advanced']['hostname']) ? 'localhost' : $settings['advanced']['hostname'];
+ $port = empty($settings['advanced']['port']) ? 21 : $settings['advanced']['port'];
if (function_exists('ftp_connect')) {
$class = 'FileTransferFTPExtension';
@@ -36,7 +36,7 @@ abstract class FileTransferFTP extends FileTransfer {
throw new FileTransferException('No FTP backend available.');
}
- return new $class($jail, $settings['username'], $settings['password'], $settings['hostname'], $settings['port']);
+ return new $class($jail, $username, $password, $hostname, $port);
}
/**
diff --git a/includes/filetransfer/ssh.inc b/includes/filetransfer/ssh.inc
index d47360f9c..8113478a3 100644
--- a/includes/filetransfer/ssh.inc
+++ b/includes/filetransfer/ssh.inc
@@ -25,11 +25,11 @@ class FileTransferSSH extends FileTransfer implements FileTransferChmodInterface
}
static function factory($jail, $settings) {
- $settings['username'] = empty($settings['hostname']) ? '' : $settings['username'];
- $settings['password'] = empty($settings['password']) ? '' : $settings['password'];
- $settings['hostname'] = empty($settings['hostname']) ? 'localhost' : $settings['hostname'];
- $settings['port'] = empty($settings['port']) ? 22 : $settings['port'];
- return new FileTransferSSH($jail, $settings['username'], $settings['password'], $settings['hostname'], $settings['port']);
+ $username = empty($settings['username']) ? '' : $settings['username'];
+ $password = empty($settings['password']) ? '' : $settings['password'];
+ $hostname = empty($settings['advanced']['hostname']) ? 'localhost' : $settings['advanced']['hostname'];
+ $port = empty($settings['advanced']['port']) ? 22 : $settings['advanced']['port'];
+ return new FileTransferSSH($jail, $username, $password, $hostname, $port);
}
protected function copyFileJailed($source, $destination) {