Class: HrrRbSftp::Protocol::Version3::Packets::SSH_FXP_MKDIR
- Inherits:
-
Version2::Packets::SSH_FXP_MKDIR
- Object
- Version2::Packets::SSH_FXP_MKDIR
- HrrRbSftp::Protocol::Version3::Packets::SSH_FXP_MKDIR
- Defined in:
- lib/hrr_rb_sftp/protocol/version3/packets/014_ssh_fxp_mkdir.rb
Overview
This class implements SFTP protocol version 3 SSH_FXP_MKDIR packet type, format, and responder.
Constant Summary collapse
- FORMAT =
Represents SSH_FXP_MKDIR packet format.
[ [DataTypes::Byte, :"type" ], [DataTypes::Uint32, :"request-id"], [DataTypes::String, :"path" ], [DataTypes::Attrs, :"attrs" ], ]
Instance Method Summary collapse
-
#respond_to(request) ⇒ Hash{Symbol=>Object}
Responds to SSH_FXP_MKDIR request.
Instance Method Details
#respond_to(request) ⇒ Hash{Symbol=>Object}
Responds to SSH_FXP_MKDIR request.
27 28 29 30 31 32 33 34 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 63 64 65 66 67 68 69 70 |
# File 'lib/hrr_rb_sftp/protocol/version3/packets/014_ssh_fxp_mkdir.rb', line 27 def respond_to request begin args = [request[:"path"]] if request[:"attrs"].has_key?(:"permissions") args.push request[:"attrs"][:"permissions"] end log_debug { "Dir.mkdir(#{args.map(&:inspect).join(", ")})" } Dir.mkdir(*args) { :"type" => Packets::SSH_FXP_STATUS::TYPE, :"request-id" => request[:"request-id"], :"code" => Packets::SSH_FXP_STATUS::SSH_FX_OK, :"error message" => "Success", :"language tag" => "", } rescue Errno::EACCES => e log_debug { e. } { :"type" => Packets::SSH_FXP_STATUS::TYPE, :"request-id" => request[:"request-id"], :"code" => Packets::SSH_FXP_STATUS::SSH_FX_PERMISSION_DENIED, :"error message" => "Permission denied", :"language tag" => "", } rescue Errno::EEXIST => e log_debug { e. } { :"type" => Packets::SSH_FXP_STATUS::TYPE, :"request-id" => request[:"request-id"], :"code" => Packets::SSH_FXP_STATUS::SSH_FX_FAILURE, :"error message" => "File exists", :"language tag" => "", } rescue => e log_error { [e.backtrace[0], ": ", e., " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join } { :"type" => Packets::SSH_FXP_STATUS::TYPE, :"request-id" => request[:"request-id"], :"code" => Packets::SSH_FXP_STATUS::SSH_FX_FAILURE, :"error message" => e., :"language tag" => "", } end end |