Horde_Vfs_Ssh2
extends Horde_Vfs_Base
in package
VFS implementation for an SSH2 server.
This module requires the SSH2 (version 0.10+) PECL package.
Required values for $params:
username - (string) The username with which to connect to the ssh2 server. password - (string) The password with which to connect to the ssh2 server. hostspec - (string) The ssh2 server to connect to.
Optional values for $params:
port - (integer) The port used to connect to the ssh2 server if other than 22.
Copyright 2006-2017 Horde LLC (http://www.horde.org/)
See the enclosed file LICENSE for license information (LGPL). If you did not receive this file, see http://www.horde.org/licenses/lgpl21.
Tags
Table of Contents
- $_credentials : array<string|int, mixed>
- List of additional credentials required for this VFS backend.
- $_cwd : string
- The current working directory.
- $_features : array<string|int, mixed>
- List of features that the VFS driver supports.
- $_gids : array<string|int, mixed>
- Local cache array for group IDs.
- $_params : array<string|int, mixed>
- Hash containing connection parameters.
- $_permissions : array<string|int, mixed>
- List of permissions and if they can be changed in this VFS backend.
- $_sftp : resource
- The SFTP resource stream.
- $_stream : resource
- Variable holding the connection to the ssh2 server.
- $_uids : array<string|int, mixed>
- Local cache array for user IDs.
- $_vfsSize : int
- The current size, in bytes, of the VFS tree.
- __construct() : mixed
- Constructor.
- autocreatePath() : mixed
- Automatically creates any necessary parent directories in the specified $path.
- changePermissions() : mixed
- Changes permissions for an item on the VFS.
- checkCredentials() : mixed
- Checks the credentials that we have by calling _connect(), to see if there is a valid login.
- copy() : mixed
- Copies a file through the backend.
- createFolder() : mixed
- Creates a folder on the VFS.
- delete() : mixed
- Alias to deleteFile()
- deleteFile() : mixed
- Deletes a file from the VFS.
- deleteFolder() : mixed
- Deletes a folder from the VFS.
- emptyFolder() : mixed
- Recursively remove all files and subfolders from the given folder.
- exists() : bool
- Returns if a given file or folder exists in a folder.
- getCurrentDirectory() : string
- Returns the current working directory on the SSH2 server.
- getFolderSize() : int
- Returns the size of a folder.
- getModifiablePermissions() : array<string|int, mixed>
- Returns an array specifying what permissions are changeable for this VFS implementation.
- getParam() : mixed
- Returns configuration parameters.
- getQuota() : mixed
- Get quota information (used/allocated), in bytes.
- getRequiredCredentials() : array<string|int, mixed>
- Returns the list of additional credentials required, if any.
- getVFSSize() : int
- Returns the size of the VFS item.
- hasFeature() : bool
- Returns whether the drivers supports a certain feature.
- isFolder() : bool
- Checks if a given item is a folder.
- listFolder() : array<string|int, mixed>
- Returns a file list of the directory passed in.
- move() : mixed
- Moves a file through the backend.
- read() : string
- Retrieves a file from the VFS.
- readByteRange() : string
- Retrieves a part of a file from the VFS. Particularly useful when reading large files which would exceed the PHP memory limits if they were stored in a string.
- readFile() : string
- Retrieves a file from the VFS as an on-disk local file.
- readStream() : resource
- Open a stream to a file in the VFS.
- rename() : mixed
- Renames a file in the VFS.
- setParams() : mixed
- Sets configuration parameters.
- setQuota() : mixed
- Sets the VFS quota limit.
- setQuotaRoot() : mixed
- Sets the VFS quota root.
- size() : int
- Returns the size of a file.
- write() : mixed
- Stores a file in the VFS.
- writeData() : mixed
- Stores a file in the VFS from raw data.
- _checkDestination() : mixed
- Checks whether a source and destination directory are the same.
- _checkQuotaDelete() : mixed
- Checks the quota when preparing to delete data.
- _checkQuotaWrite() : mixed
- Checks the quota when preparing to write data.
- _connect() : mixed
- Attempts to open a connection to the SSH2 server.
- _copyRecursive() : mixed
- Recursively copies a directory through the backend.
- _ensureSeekable() : mixed
- _filterMatch() : bool
- Returns whether or not a file or directory name matches an filter element.
- _getDataSize() : int
- Return the size of $data.
- _getPath() : mixed
- Returns the full path of an item.
- _listFolder() : array<string|int, mixed>
- Returns an unsorted file list of the specified directory.
- _parentDir() : string
- Returns the parent directory of the specified path.
- _recv() : bool
- Receives file from remote host.
- _send() : bool
- Sends local file to remote host.
- _setPath() : mixed
- Changes the current directory on the server.
- _wrap() : string
- Generate a stream wrapper file spec for a remote file path
Properties
$_credentials
List of additional credentials required for this VFS backend.
protected
array<string|int, mixed>
$_credentials
= array('username', 'password')
$_cwd
The current working directory.
protected
string
$_cwd
$_features
List of features that the VFS driver supports.
protected
array<string|int, mixed>
$_features
= array('readByteRange' => \false)
$_gids
Local cache array for group IDs.
protected
array<string|int, mixed>
$_gids
= array()
$_params
Hash containing connection parameters.
protected
array<string|int, mixed>
$_params
= array()
$_permissions
List of permissions and if they can be changed in this VFS backend.
protected
array<string|int, mixed>
$_permissions
= array('owner' => array('read' => \true, 'write' => \true, 'execute' => \true), 'group' => array('read' => \true, 'write' => \true, 'execute' => \true), 'all' => array('read' => \true, 'write' => \true, 'execute' => \true))
$_sftp
The SFTP resource stream.
protected
resource
$_sftp
$_stream
Variable holding the connection to the ssh2 server.
protected
resource
$_stream
= \false
$_uids
Local cache array for user IDs.
protected
array<string|int, mixed>
$_uids
= array()
$_vfsSize
The current size, in bytes, of the VFS tree.
protected
int
$_vfsSize
= \null
Methods
__construct()
Constructor.
public
__construct([array<string|int, mixed> $params = array() ]) : mixed
Parameters
- $params : array<string|int, mixed> = array()
-
A hash containing connection parameters.
Return values
mixed —autocreatePath()
Automatically creates any necessary parent directories in the specified $path.
public
autocreatePath(string $path) : mixed
Parameters
- $path : string
-
The VFS path to autocreate.
Tags
Return values
mixed —changePermissions()
Changes permissions for an item on the VFS.
public
changePermissions(string $path, string $name, string $permission) : mixed
Parameters
- $path : string
-
The parent folder of the item.
- $name : string
-
The name of the item.
- $permission : string
-
The permission to set in octal notation.
Tags
Return values
mixed —checkCredentials()
Checks the credentials that we have by calling _connect(), to see if there is a valid login.
public
checkCredentials() : mixed
Tags
Return values
mixed —copy()
Copies a file through the backend.
public
copy(string $path, string $name, string $dest[, bool $autocreate = false ]) : mixed
Parameters
- $path : string
-
The path of the original file.
- $name : string
-
The name of the original file.
- $dest : string
-
The name of the destination directory.
- $autocreate : bool = false
-
Auto-create the directory if it doesn't exist?
Tags
Return values
mixed —createFolder()
Creates a folder on the VFS.
public
createFolder(string $path, string $name) : mixed
Parameters
- $path : string
-
The parent folder.
- $name : string
-
The name of the new folder.
Tags
Return values
mixed —delete()
Alias to deleteFile()
public
delete(mixed $path, mixed $name) : mixed
Parameters
- $path : mixed
- $name : mixed
Return values
mixed —deleteFile()
Deletes a file from the VFS.
public
deleteFile(string $path, string $name) : mixed
Parameters
- $path : string
-
The path to delete the file from.
- $name : string
-
The filename to delete.
Tags
Return values
mixed —deleteFolder()
Deletes a folder from the VFS.
public
deleteFolder(string $path, string $name[, bool $recursive = false ]) : mixed
Parameters
- $path : string
-
The parent folder.
- $name : string
-
The name of the folder to delete.
- $recursive : bool = false
-
Force a recursive delete?
Tags
Return values
mixed —emptyFolder()
Recursively remove all files and subfolders from the given folder.
public
emptyFolder(string $path) : mixed
Parameters
- $path : string
-
The path of the folder to empty.
Tags
Return values
mixed —exists()
Returns if a given file or folder exists in a folder.
public
exists(string $path, string $name) : bool
Parameters
- $path : string
-
The path to the folder.
- $name : string
-
The file or folder name.
Return values
bool —True if it exists, false otherwise.
getCurrentDirectory()
Returns the current working directory on the SSH2 server.
public
getCurrentDirectory() : string
Tags
Return values
string —The current working directory.
getFolderSize()
Returns the size of a folder.
public
getFolderSize([string $path = null ]) : int
Parameters
- $path : string = null
-
The path of the folder.
Tags
Return values
int —The size of the folder, in bytes.
getModifiablePermissions()
Returns an array specifying what permissions are changeable for this VFS implementation.
public
getModifiablePermissions() : array<string|int, mixed>
Return values
array<string|int, mixed> —Changeable permisions.
getParam()
Returns configuration parameters.
public
getParam(string $name) : mixed
Parameters
- $name : string
-
The parameter to return.
Return values
mixed —The parameter value or null if it doesn't exist.
getQuota()
Get quota information (used/allocated), in bytes.
public
getQuota() : mixed
Tags
Return values
mixed —An associative array.
'limit' = Maximum quota allowed 'usage' = Currently used portion of quota (in bytes)
getRequiredCredentials()
Returns the list of additional credentials required, if any.
public
getRequiredCredentials() : array<string|int, mixed>
Return values
array<string|int, mixed> —Credential list.
getVFSSize()
Returns the size of the VFS item.
public
getVFSSize() : int
Return values
int —The size, in bytes, of the VFS item.
hasFeature()
Returns whether the drivers supports a certain feature.
public
hasFeature(string $feature) : bool
Parameters
Return values
bool —True if the feature is supported.
isFolder()
Checks if a given item is a folder.
public
isFolder(string $path, string $name) : bool
Parameters
- $path : string
-
The parent folder.
- $name : string
-
The item name.
Return values
bool —True if it is a folder, false otherwise.
listFolder()
Returns a file list of the directory passed in.
public
listFolder(string $path[, string|array<string|int, mixed> $filter = null ][, bool $dotfiles = true ][, bool $dironly = false ][, bool $recursive = false ]) : array<string|int, mixed>
Parameters
- $path : string
-
The path of the directory.
- $filter : string|array<string|int, mixed> = null
-
Regular expression(s) to filter file/directory name on.
- $dotfiles : bool = true
-
Show dotfiles?
- $dironly : bool = false
-
Show only directories?
- $recursive : bool = false
-
Return all directory levels recursively?
Tags
Return values
array<string|int, mixed> —File list.
move()
Moves a file through the backend.
public
move(string $path, string $name, string $dest[, bool $autocreate = false ]) : mixed
Parameters
- $path : string
-
The path of the original file.
- $name : string
-
The name of the original file.
- $dest : string
-
The destination file name.
- $autocreate : bool = false
-
Auto-create the directory if it doesn't exist?
Tags
Return values
mixed —read()
Retrieves a file from the VFS.
public
read(string $path, string $name) : string
Parameters
- $path : string
-
The pathname to the file.
- $name : string
-
The filename to retrieve.
Tags
Return values
string —The file data.
readByteRange()
Retrieves a part of a file from the VFS. Particularly useful when reading large files which would exceed the PHP memory limits if they were stored in a string.
public
readByteRange(string $path, string $name, int &$offset, int $length, int &$remaining) : string
Parameters
- $path : string
-
The pathname to the file.
- $name : string
-
The filename to retrieve.
- $offset : int
-
The offset of the part. (The new offset will be stored in here).
- $length : int
-
The length of the part. If the length = -1, the whole part after the offset is retrieved. If more bytes are given as exists after the given offset. Only the available bytes are read.
- $remaining : int
-
The bytes that are left, after the part that is retrieved.
Tags
Return values
string —The file data.
readFile()
Retrieves a file from the VFS as an on-disk local file.
public
readFile(string $path, string $name) : string
This function provides a file on local disk with the data of a VFS file in it. This file cannot be modified! The behavior if you do modify it is undefined. It will be removed at the end of the request.
Parameters
- $path : string
-
The pathname to the file.
- $name : string
-
The filename to retrieve.
Tags
Return values
string —A local filename.
readStream()
Open a stream to a file in the VFS.
public
readStream(string $path, string $name) : resource
Parameters
- $path : string
-
The pathname to the file.
- $name : string
-
The filename to retrieve.
Tags
Return values
resource —The stream.
rename()
Renames a file in the VFS.
public
rename(string $oldpath, string $oldname, string $newpath, string $newname) : mixed
Parameters
- $oldpath : string
-
The old path to the file.
- $oldname : string
-
The old filename.
- $newpath : string
-
The new path of the file.
- $newname : string
-
The new filename.
Tags
Return values
mixed —setParams()
Sets configuration parameters.
public
setParams([array<string|int, mixed> $params = array() ]) : mixed
Parameters
- $params : array<string|int, mixed> = array()
-
An associative array with parameter names as keys.
Return values
mixed —setQuota()
Sets the VFS quota limit.
public
setQuota(int $quota[, int $metric = Horde_Vfs::QUOTA_METRIC_BYTE ]) : mixed
Parameters
- $quota : int
-
The limit to apply.
- $metric : int = Horde_Vfs::QUOTA_METRIC_BYTE
-
The metric to multiply the quota into.
Return values
mixed —setQuotaRoot()
Sets the VFS quota root.
public
setQuotaRoot(string $dir) : mixed
Parameters
- $dir : string
-
The root directory for the quota determination.
Return values
mixed —size()
Returns the size of a file.
public
size(string $path, string $name) : int
Parameters
- $path : string
-
The path of the file.
- $name : string
-
The filename.
Tags
Return values
int —The size of the file in bytes.
write()
Stores a file in the VFS.
public
write(string $path, string $name, string $tmpFile[, bool $autocreate = false ]) : mixed
Parameters
- $path : string
-
The path to store the file in.
- $name : string
-
The filename to use.
- $tmpFile : string
-
The temporary file containing the data to be stored.
- $autocreate : bool = false
-
Automatically create directories?
Tags
Return values
mixed —writeData()
Stores a file in the VFS from raw data.
public
writeData(string $path, string $name, string|resource $data[, bool $autocreate = false ]) : mixed
Parameters
- $path : string
-
The path to store the file in.
- $name : string
-
The filename to use.
- $data : string|resource
-
The data as a string or stream resource. Resources allowed @since 2.4.0
- $autocreate : bool = false
-
Automatically create directories?
Tags
Return values
mixed —_checkDestination()
Checks whether a source and destination directory are the same.
protected
_checkDestination(string $path, string $dest) : mixed
Parameters
- $path : string
-
A source path.
- $dest : string
-
A destination path.
Tags
Return values
mixed —_checkQuotaDelete()
Checks the quota when preparing to delete data.
protected
_checkQuotaDelete(string $path, string $name) : mixed
Parameters
- $path : string
-
The path the file is located in.
- $name : string
-
The filename.
Tags
Return values
mixed —_checkQuotaWrite()
Checks the quota when preparing to write data.
protected
_checkQuotaWrite(string $mode, string $data[, string $path = null ][, string $name = null ]) : mixed
Parameters
- $mode : string
-
Either 'string' or 'file'. If 'string', $data is the data to be written. If 'file', $data is the filename containing the data to be written.
- $data : string
-
Either the data or the filename to the data.
- $path : string = null
-
The path the file is located in.
- $name : string = null
-
The filename.
Tags
Return values
mixed —_connect()
Attempts to open a connection to the SSH2 server.
protected
_connect() : mixed
Tags
Return values
mixed —_copyRecursive()
Recursively copies a directory through the backend.
protected
_copyRecursive(string $path, string $name, string $dest) : mixed
Parameters
- $path : string
-
The path of the original file.
- $name : string
-
The name of the original file.
- $dest : string
-
The name of the destination directory.
Tags
Return values
mixed —_ensureSeekable()
protected
_ensureSeekable(mixed $stream) : mixed
Parameters
- $stream : mixed
Return values
mixed —_filterMatch()
Returns whether or not a file or directory name matches an filter element.
protected
_filterMatch(string|array<string|int, mixed> $filter, string $filename) : bool
Parameters
- $filter : string|array<string|int, mixed>
-
Regular expression(s) to build the filter from.
- $filename : string
-
String containing the file/directory name to match.
Return values
bool —True on match, false on no match.
_getDataSize()
Return the size of $data.
protected
_getDataSize(string|resource $data) : int
Parameters
- $data : string|resource
-
The data.
Return values
int —The data length.
_getPath()
Returns the full path of an item.
protected
_getPath(string $path, string $name) : mixed
Parameters
- $path : string
-
The directory of the item.
- $name : string
-
The name of the item.
Return values
mixed —Full path to the file when $path is not empty and just $name when not set.
_listFolder()
Returns an unsorted file list of the specified directory.
protected
_listFolder([string $path = '' ][, string|array<string|int, mixed> $filter = null ][, bool $dotfiles = true ][, bool $dironly = false ]) : array<string|int, mixed>
Parameters
- $path : string = ''
-
The path of the directory.
- $filter : string|array<string|int, mixed> = null
-
Regular expression(s) to filter file/directory name on.
- $dotfiles : bool = true
-
Show dotfiles?
- $dironly : bool = false
-
Show only directories?
Tags
Return values
array<string|int, mixed> —File list.
_parentDir()
Returns the parent directory of the specified path.
protected
_parentDir(string $path) : string
Parameters
- $path : string
-
The path to get the parent of.
Tags
Return values
string —The parent directory.
_recv()
Receives file from remote host.
protected
_recv(string $remote, string $local) : bool
This function exists because the ssh2_scp_recv function doesn't seem to work on some hosts.
Parameters
- $remote : string
-
Full path to the remote location.
- $local : string
-
Full path to the local file.
Return values
bool —Success.
_send()
Sends local file to remote host.
protected
_send(string $local, string $remote) : bool
This function exists because the ssh2_scp_send function doesn't seem to work on some hosts.
Parameters
- $local : string
-
Full path to the local file.
- $remote : string
-
Full path to the remote location.
Return values
bool —Success.
_setPath()
Changes the current directory on the server.
protected
_setPath(string $path) : mixed
Parameters
- $path : string
-
The path to change to.
Tags
Return values
mixed —_wrap()
Generate a stream wrapper file spec for a remote file path
protected
_wrap(string $remote) : string
Parameters
- $remote : string
-
Full path to the remote location
Return values
string —A full stream wrapper path to the remote location