Class: RubySMB::SMB1::Packet::TreeConnectResponse

Inherits:
GenericPacket
  • Object
show all
Defined in:
lib/ruby_smb/smb1/packet/tree_connect_response.rb

Overview

A SMB1 TreeConnect Response Packet as defined in 2.2.4.7.2 Server Response Extensions

Defined Under Namespace

Classes: DataBlock, ParameterBlock

Constant Summary collapse

COMMAND =
RubySMB::SMB1::Commands::SMB_COM_TREE_CONNECT

Instance Method Summary collapse

Methods inherited from GenericPacket

describe, #display, fields_hashed, format_field, from_hex, #packet_smb_version, read, #status_code, #valid?, walk_fields

Instance Method Details

#access_rightsRubySMB::SMB1::BitField::DirectoryAccessMask, RubySMB::SMB1::BitField::FileAccessMask

Returns the ACCESS_MASK for the Maximal Share Access Rights. The packet defaults this to a BitField::DirectoryAccessMask. If it is anything other than a directory that has been connected to, it will re-cast it as a {}RubySMB::SMB1::BitField::FileAccessMask}

Returns:

Raises:



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/ruby_smb/smb1/packet/tree_connect_response.rb', line 48

def access_rights
  if is_directory?
    parameter_block.access_rights
  else
    mask = parameter_block.access_rights.to_binary_s
    begin
      RubySMB::SMB1::BitField::FileAccessMask.read(mask)
    rescue IOError
      raise RubySMB::Error::InvalidBitField, 'Invalid ACCESS_MASK for the Maximal Share Access Rights'
    end
  end
end

#guest_access_rightsRubySMB::SMB1::BitField::DirectoryAccessMask, RubySMB::SMB1::BitField::FileAccessMask

Returns the ACCESS_MASK for the Guest Share Access Rights. The packet defaults this to a BitField::DirectoryAccessMask. If it is anything other than a directory that has been connected to, it will re-cast it as a BitField::FileAccessMask

Returns:



67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/ruby_smb/smb1/packet/tree_connect_response.rb', line 67

def guest_access_rights
  if is_directory?
    parameter_block.guest_access_rights
  else
    mask = parameter_block.guest_access_rights.to_binary_s
    begin
      RubySMB::SMB1::BitField::FileAccessMask.read(mask)
    rescue IOError
      raise RubySMB::Error::InvalidBitField, 'Invalid ACCESS_MASK for the Guest Share Access Rights'
    end
  end
end

#initialize_instanceObject



36
37
38
39
# File 'lib/ruby_smb/smb1/packet/tree_connect_response.rb', line 36

def initialize_instance
  super
  smb_header.flags.reply = 1
end

#is_directory?TrueClass, FalseClass

Checks whether the response is for a Directory This alters the type of access mask that is used.

Returns:

  • (TrueClass)

    if service is 'A:'

  • (FalseClass)

    if service is NOT 'A:'



85
86
87
# File 'lib/ruby_smb/smb1/packet/tree_connect_response.rb', line 85

def is_directory?
  data_block.service == 'A:'
end