Module: Rex::IO::SocketAbstraction

Included in:
DatagramAbstraction, StreamAbstraction
Defined in:
lib/rex/io/socket_abstraction.rb

Overview

This class provides an abstraction to a stream based connection through the use of a streaming socketpair.

Defined Under Namespace

Modules: Ext

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#lsockObject

The left side of the stream.



111
112
113
# File 'lib/rex/io/socket_abstraction.rb', line 111

def lsock
  @lsock
end

#rsockObject

The right side of the stream.



115
116
117
# File 'lib/rex/io/socket_abstraction.rb', line 115

def rsock
  @rsock
end

Instance Method Details

#cleanup_abstractionObject

This method cleans up the abstraction layer.



57
58
59
60
61
62
63
# File 'lib/rex/io/socket_abstraction.rb', line 57

def cleanup_abstraction
  self.lsock.close if (self.lsock and !self.lsock.closed?)
  self.rsock.close if (self.rsock and !self.rsock.closed?)

  self.lsock = nil
  self.rsock = nil
end

#closeObject

Closes both sides of the stream abstraction.



89
90
91
92
# File 'lib/rex/io/socket_abstraction.rb', line 89

def close
  cleanup_abstraction
  super
end

#initialize_abstractionObject

Override this method to init the abstraction



50
51
52
# File 'lib/rex/io/socket_abstraction.rb', line 50

def initialize_abstraction
  self.lsock, self.rsock = Rex::Compat.pipe
end

#localinfoObject

Symbolic local information.



104
105
106
# File 'lib/rex/io/socket_abstraction.rb', line 104

def localinfo
  "Local-side of Pipe"
end

#peerinfoObject

Symbolic peer information.



97
98
99
# File 'lib/rex/io/socket_abstraction.rb', line 97

def peerinfo
  "Remote-side of Pipe"
end

#shutdown(how) ⇒ Object

Shuts down the local side of the stream abstraction.



82
83
84
# File 'lib/rex/io/socket_abstraction.rb', line 82

def shutdown(how)
  lsock.shutdown(how)
end

#sysread(length) ⇒ Object

Low-level read from the local side.



75
76
77
# File 'lib/rex/io/socket_abstraction.rb', line 75

def sysread(length)
  lsock.sysread(length)
end

#syswrite(buffer) ⇒ Object

Low-level write to the local side.



68
69
70
# File 'lib/rex/io/socket_abstraction.rb', line 68

def syswrite(buffer)
  lsock.syswrite(buffer)
end