module Rex::Socket::Comm

This mixin provides the basic interface that a derived class must implement in order to be a compatible comm class. The base comm class also supports registering event handlers that can be notified when sockets are being created and have been created. This allows code to extend sockets on creation from the single point that they are created.

Public Class Methods

create(param) click to toggle source

Creates a compatible socket based on the supplied uniform parameters.

# File lib/rex/socket/comm.rb, line 47
def self.create(param)
  raise NotImplementedError
end

Public Instance Methods

chainable?() click to toggle source

Indicates whether or not this comm can be chained with other chainable comms. This is particularly important for things like Proxy Comms that can be proxied through one another. The semantics of this are currently undefined and will probably need some more thought.

# File lib/rex/socket/comm.rb, line 57
def chainable?
  false
end
deregister_event_handler(handler) click to toggle source

Deregisters a previously registered event handler.

# File lib/rex/socket/comm.rb, line 77
def deregister_event_handler(handler)
  if (handlers)
    handlers.delete(handler)
  end
end
each_event_handler(&block) click to toggle source

Enumerates each registered event handler so that they can be notified of an event.

# File lib/rex/socket/comm.rb, line 87
def each_event_handler(&block)
  if (handlers)
    handlers.each(&block)
  end
end
notify_before_socket_create(comm, param) click to toggle source

Notifies handlers of the before socket create event.

# File lib/rex/socket/comm.rb, line 96
def notify_before_socket_create(comm, param)
  each_event_handler() { |handler|
    handler.on_before_socket_create(comm, param)
  }
end
notify_socket_created(comm, sock, param) click to toggle source

Notifies handlers of the socket created event.

# File lib/rex/socket/comm.rb, line 105
def notify_socket_created(comm, sock, param)
  each_event_handler() { |handler|
    handler.on_socket_created(comm, sock, param)
  }
end
register_event_handler(handler) click to toggle source

Registers an event handler that implements the Rex::Socket::Comm::Event interface in at least some fashion. Event handlers are notified when sockets are created through the Comm instance that they register against.

# File lib/rex/socket/comm.rb, line 66
def register_event_handler(handler)
  if (handlers == nil)
    self.handlers        = []
  end

  self.handlers << handler
end