Class: RubySMB::Server::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_smb/server/session.rb

Overview

The object representing a single anonymous, guest or authenticated session.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, key: nil, state: :in_progress, user_id: nil) ⇒ Session

Returns a new instance of Session.

Parameters:

  • id (Integer)

    This session's unique identifier.

  • key (String) (defaults to: nil)

    This session's key.

  • state (Symbol) (defaults to: :in_progress)

    The state that this session is in.

  • user_id (defaults to: nil)

    The identity of the user associated with this session.



10
11
12
13
14
15
16
17
18
19
# File 'lib/ruby_smb/server/session.rb', line 10

def initialize(id, key: nil, state: :in_progress, user_id: nil)
  @id = id
  @key = key
  @user_id = user_id
  @state = state
  @signing_required = false
  # tree id => provider processor instance
  @tree_connect_table = {}
  @creation_time = Time.now
end

Instance Attribute Details

#creation_timeObject (readonly)

The time at which this session was created.



68
69
70
# File 'lib/ruby_smb/server/session.rb', line 68

def creation_time
  @creation_time
end

#idInteger

Returns:

  • (Integer)


39
40
41
# File 'lib/ruby_smb/server/session.rb', line 39

def id
  @id
end

#keyString

Returns:

  • (String)


44
45
46
# File 'lib/ruby_smb/server/session.rb', line 44

def key
  @key
end

#signing_requiredBoolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/ruby_smb/server/session.rb', line 58

def signing_required
  @signing_required
end

#stateSymbol

Returns:

  • (Symbol)


53
54
55
# File 'lib/ruby_smb/server/session.rb', line 53

def state
  @state
end

#tree_connect_tableHash

Returns:

  • (Hash)


63
64
65
# File 'lib/ruby_smb/server/session.rb', line 63

def tree_connect_table
  @tree_connect_table
end

#user_idObject

The identity of the authenticated user.



48
49
50
# File 'lib/ruby_smb/server/session.rb', line 48

def user_id
  @user_id
end

Instance Method Details

#inspectObject



21
22
23
# File 'lib/ruby_smb/server/session.rb', line 21

def inspect
  "#<Session id: #{@id.inspect}, user_id: #{@user_id.inspect}, state: #{@state.inspect}>"
end

#is_anonymousBoolean

Whether or not this session is anonymous.

Returns:

  • (Boolean)


27
28
29
# File 'lib/ruby_smb/server/session.rb', line 27

def is_anonymous
  @user_id == Gss::Provider::IDENTITY_ANONYMOUS
end

#logoff!Object



31
32
33
34
# File 'lib/ruby_smb/server/session.rb', line 31

def logoff!
  @tree_connect_table.values.each { |share_processor| share_processor.disconnect! }
  @tree_connect_table.clear
end