Class: RubySMB::SMB2::Tree

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_smb/smb2/tree.rb

Overview

An SMB2 connected remote Tree, as returned by a [RubySMB::SMB2::Packet::TreeConnectRequest]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client:, share:, response:) ⇒ Tree

Returns a new instance of Tree.



28
29
30
31
32
33
# File 'lib/ruby_smb/smb2/tree.rb', line 28

def initialize(client:, share:, response:)
  @client             = client
  @share              = share
  @id                 = response.smb2_header.tree_id
  @permissions        = response.maximal_access
end

Instance Attribute Details

#clientRubySMB::Client

Returns:



11
12
13
# File 'lib/ruby_smb/smb2/tree.rb', line 11

def client
  @client
end

#idInteger

Returns:

  • (Integer)


26
27
28
# File 'lib/ruby_smb/smb2/tree.rb', line 26

def id
  @id
end

#permissionsRubySMB::SMB2::BitField::DirectoryAccessMask



16
17
18
# File 'lib/ruby_smb/smb2/tree.rb', line 16

def permissions
  @permissions
end

#shareString

Returns:

  • (String)


21
22
23
# File 'lib/ruby_smb/smb2/tree.rb', line 21

def share
  @share
end

Instance Method Details

#disconnect!WindowsError::ErrorCode

Disconnects this Tree from the current session

Returns:

  • (WindowsError::ErrorCode)

    the NTStatus sent back by the server.



38
39
40
41
42
43
44
45
46
# File 'lib/ruby_smb/smb2/tree.rb', line 38

def disconnect!
  request = RubySMB::SMB2::Packet::TreeDisconnectRequest.new
  request.smb2_header.tree_id = self.id
  request.smb2_header.credit_charge = 1
  request.smb2_header.credits = 256
  raw_response = self.client.send_recv(request)
  response = RubySMB::SMB2::Packet::TreeDisconnectResponse.read(raw_response)
  response.status_code
end