Class: Net::SFTP::Protocol::V05::Base
- Inherits:
-
Net::SFTP::Protocol::V04::Base
- Object
- Base
- Net::SFTP::Protocol::V01::Base
- Net::SFTP::Protocol::V02::Base
- Net::SFTP::Protocol::V03::Base
- Net::SFTP::Protocol::V04::Base
- Net::SFTP::Protocol::V05::Base
- Defined in:
- lib/net/sftp/protocol/05/base.rb
Overview
Wraps the low-level SFTP calls for version 5 of the SFTP protocol.
None of these protocol methods block–all of them return immediately, requiring the SSH event loop to be run while the server response is pending.
You will almost certainly never need to use this driver directly. Please see Net::SFTP::Session for the recommended interface.
Direct Known Subclasses
Constant Summary
Constants included from Constants::PacketTypes
Constants::PacketTypes::FXP_ATTRS, Constants::PacketTypes::FXP_BLOCK, Constants::PacketTypes::FXP_CLOSE, Constants::PacketTypes::FXP_DATA, Constants::PacketTypes::FXP_EXTENDED, Constants::PacketTypes::FXP_EXTENDED_REPLY, Constants::PacketTypes::FXP_FSETSTAT, Constants::PacketTypes::FXP_FSTAT, Constants::PacketTypes::FXP_HANDLE, Constants::PacketTypes::FXP_INIT, Constants::PacketTypes::FXP_LINK, Constants::PacketTypes::FXP_LSTAT, Constants::PacketTypes::FXP_MKDIR, Constants::PacketTypes::FXP_NAME, Constants::PacketTypes::FXP_OPEN, Constants::PacketTypes::FXP_OPENDIR, Constants::PacketTypes::FXP_READ, Constants::PacketTypes::FXP_READDIR, Constants::PacketTypes::FXP_READLINK, Constants::PacketTypes::FXP_REALPATH, Constants::PacketTypes::FXP_REMOVE, Constants::PacketTypes::FXP_RENAME, Constants::PacketTypes::FXP_RMDIR, Constants::PacketTypes::FXP_SETSTAT, Constants::PacketTypes::FXP_STAT, Constants::PacketTypes::FXP_STATUS, Constants::PacketTypes::FXP_SYMLINK, Constants::PacketTypes::FXP_UNBLOCK, Constants::PacketTypes::FXP_VERSION, Constants::PacketTypes::FXP_WRITE
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#open(path, flags, options) ⇒ Object
Sends a FXP_OPEN packet to the server and returns the packet identifier.
-
#rename(name, new_name, flags = nil) ⇒ Object
Sends a FXP_RENAME packet to the server to request that the file or directory with the given
name
(must be a full path) be changed tonew_name
(which must also be a path). -
#version ⇒ Object
Returns the protocol version implemented by this driver.
Methods inherited from Net::SFTP::Protocol::V04::Base
#fstat, #lstat, #parse_name_packet, #stat
Methods inherited from Net::SFTP::Protocol::V03::Base
Methods inherited from Net::SFTP::Protocol::V01::Base
#block, #close, #fsetstat, #fstat, #link, #lstat, #mkdir, #opendir, #parse_attrs_packet, #parse_data_packet, #parse_handle_packet, #parse_name_packet, #parse_status_packet, #read, #readdir, #readlink, #realpath, #remove, #rmdir, #setstat, #stat, #symlink, #unblock, #write
Methods inherited from Base
Constructor Details
This class inherits a constructor from Net::SFTP::Protocol::Base
Instance Method Details
#open(path, flags, options) ⇒ Object
Sends a FXP_OPEN packet to the server and returns the packet identifier. The flags
parameter is either an integer (in which case it must be a combination of the IO constants) or a string (in which case it must be one of the mode strings that IO::open accepts). The options
parameter is a hash that is used to construct a new Attribute object, to pass as part of the FXP_OPEN request.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/net/sftp/protocol/05/base.rb', line 35 def open(path, flags, ) flags = normalize_open_flags(flags) sftp_flags, desired_access = if flags & (IO::WRONLY | IO::RDWR) != 0 open = if flags & (IO::CREAT | IO::EXCL) == (IO::CREAT | IO::EXCL) FV5::CREATE_NEW elsif flags & (IO::CREAT | IO::TRUNC) == (IO::CREAT | IO::TRUNC) FV5::CREATE_TRUNCATE elsif flags & IO::CREAT == IO::CREAT FV5::OPEN_OR_CREATE else FV5::OPEN_EXISTING end access = ACE::Mask::WRITE_DATA | ACE::Mask::WRITE_ATTRIBUTES access |= ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES if (flags & IO::RDWR) == IO::RDWR if flags & IO::APPEND == IO::APPEND open |= FV5::APPEND_DATA access |= ACE::Mask::APPEND_DATA end [open, access] else [FV5::OPEN_EXISTING, ACE::Mask::READ_DATA | ACE::Mask::READ_ATTRIBUTES] end attributes = attribute_factory.new() send_request(FXP_OPEN, :string, path, :long, desired_access, :long, sftp_flags, :raw, attributes.to_s) end |
#rename(name, new_name, flags = nil) ⇒ Object
Sends a FXP_RENAME packet to the server to request that the file or directory with the given name
(must be a full path) be changed to new_name
(which must also be a path). The flags
parameter must be either nil
or 0 (the default), or some combination of the Net::SFTP::Constants::RenameFlags constants.
25 26 27 |
# File 'lib/net/sftp/protocol/05/base.rb', line 25 def rename(name, new_name, flags=nil) send_request(FXP_RENAME, :string, name, :string, new_name, :long, flags || 0) end |
#version ⇒ Object
Returns the protocol version implemented by this driver. (5, in this case)
16 17 18 |
# File 'lib/net/sftp/protocol/05/base.rb', line 16 def version 5 end |