Module: RubySMB::Client::TreeConnect
- Included in:
- RubySMB::Client
- Defined in:
- lib/ruby_smb/client/tree_connect.rb
Overview
This module contains all of the methods for a client to connect to a remote share or named pipe.
Instance Method Summary collapse
-
#smb1_tree_connect(share) ⇒ RubySMB::SMB1::Tree
Sends a request to connect to a remote Tree and returns the SMB1::Tree.
-
#smb1_tree_from_response(share, response) ⇒ RubySMB::SMB1::Tree
Parses a Tree structure from a Tree Connect Response.
-
#smb2_tree_connect(share) ⇒ RubySMB::SMB2::Tree
Sends a request to connect to a remote Tree and returns the SMB2::Tree.
-
#smb2_tree_from_response(share, response) ⇒ RubySMB::SMB2::Tree
Parses a Tree structure from a Tree Connect Response.
Instance Method Details
#smb1_tree_connect(share) ⇒ RubySMB::SMB1::Tree
Sends a request to connect to a remote Tree and returns the SMB1::Tree
15 16 17 18 19 20 21 22 |
# File 'lib/ruby_smb/client/tree_connect.rb', line 15 def smb1_tree_connect(share) request = RubySMB::SMB1::Packet::TreeConnectRequest.new request.smb_header.tid = 65_535 request.data_block.path = share raw_response = send_recv(request) response = RubySMB::SMB1::Packet::TreeConnectResponse.read(raw_response) smb1_tree_from_response(share, response) end |
#smb1_tree_from_response(share, response) ⇒ RubySMB::SMB1::Tree
Parses a Tree structure from a Tree Connect Response
31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ruby_smb/client/tree_connect.rb', line 31 def smb1_tree_from_response(share, response) unless response.valid? raise RubySMB::Error::InvalidPacket.new( expected_proto: RubySMB::SMB1::SMB_PROTOCOL_ID, expected_cmd: RubySMB::SMB1::Packet::TreeConnectResponse::COMMAND, packet: response ) end unless response.status_code == WindowsError::NTStatus::STATUS_SUCCESS raise RubySMB::Error::UnexpectedStatusCode, response.status_code end RubySMB::SMB1::Tree.new(client: self, share: share, response: response) end |
#smb2_tree_connect(share) ⇒ RubySMB::SMB2::Tree
Sends a request to connect to a remote Tree and returns the SMB2::Tree
54 55 56 57 58 59 60 61 |
# File 'lib/ruby_smb/client/tree_connect.rb', line 54 def smb2_tree_connect(share) request = RubySMB::SMB2::Packet::TreeConnectRequest.new request.smb2_header.tree_id = 65_535 request.path = share raw_response = send_recv(request) response = RubySMB::SMB2::Packet::TreeConnectResponse.read(raw_response) smb2_tree_from_response(share, response) end |
#smb2_tree_from_response(share, response) ⇒ RubySMB::SMB2::Tree
Parses a Tree structure from a Tree Connect Response
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/ruby_smb/client/tree_connect.rb', line 70 def smb2_tree_from_response(share, response) unless response.valid? raise RubySMB::Error::InvalidPacket.new( expected_proto: RubySMB::SMB2::SMB2_PROTOCOL_ID, expected_cmd: RubySMB::SMB2::Packet::TreeConnectResponse::COMMAND, packet: response ) end unless response.status_code == WindowsError::NTStatus::STATUS_SUCCESS raise RubySMB::Error::UnexpectedStatusCode, response.status_code end RubySMB::SMB2::Tree.new(client: self, share: share, response: response, encrypt: response.share_flags.encrypt == 1) end |