|
|
|
@ -370,6 +370,7 @@ class SFTP extends \OC\Files\Storage\Common {
|
|
|
|
|
public function fopen($path, $mode) {
|
|
|
|
|
try {
|
|
|
|
|
$absPath = $this->absPath($path);
|
|
|
|
|
$connection = $this->getConnection();
|
|
|
|
|
switch ($mode) {
|
|
|
|
|
case 'r':
|
|
|
|
|
case 'rb':
|
|
|
|
@ -377,13 +378,14 @@ class SFTP extends \OC\Files\Storage\Common {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
SFTPReadStream::register();
|
|
|
|
|
$context = stream_context_create(['sftp' => ['session' => $this->getConnection()]]);
|
|
|
|
|
$context = stream_context_create(['sftp' => ['session' => $connection]]);
|
|
|
|
|
$handle = fopen('sftpread://' . trim($absPath, '/'), 'r', false, $context);
|
|
|
|
|
return RetryWrapper::wrap($handle);
|
|
|
|
|
case 'w':
|
|
|
|
|
case 'wb':
|
|
|
|
|
SFTPWriteStream::register();
|
|
|
|
|
$context = stream_context_create(['sftp' => ['session' => $this->getConnection()]]);
|
|
|
|
|
$connection->_remove_from_stat_cache($absPath);
|
|
|
|
|
$context = stream_context_create(['sftp' => ['session' => $connection]]);
|
|
|
|
|
return fopen('sftpwrite://' . trim($absPath, '/'), 'w', false, $context);
|
|
|
|
|
case 'a':
|
|
|
|
|
case 'ab':
|
|
|
|
@ -395,7 +397,7 @@ class SFTP extends \OC\Files\Storage\Common {
|
|
|
|
|
case 'x+':
|
|
|
|
|
case 'c':
|
|
|
|
|
case 'c+':
|
|
|
|
|
$context = stream_context_create(['sftp' => ['session' => $this->getConnection()]]);
|
|
|
|
|
$context = stream_context_create(['sftp' => ['session' => $connection]]);
|
|
|
|
|
$handle = fopen($this->constructUrl($path), $mode, false, $context);
|
|
|
|
|
return RetryWrapper::wrap($handle);
|
|
|
|
|
}
|
|
|
|
|