Sha256: 2c9a668de16692deba864c1b597cb73e63ee28d330ba4944bb9c3e151d10bab5

Contents?: true

Size: 1.05 KB

Versions: 8

Compression:

Stored size: 1.05 KB

Contents

require 'rex/socket'
require 'rex/socket/tcp'
require 'rex/io/stream_server'

###
#
# This class provides methods for interacting with a TCP server.  It
# implements the StreamServer IO interface.
#
#
###
module  Rex::Socket::TcpServer

	include Rex::Socket
	include Rex::IO::StreamServer

	##
	#
	# Factory
	#
	##

	#
	# Creates the server using the supplied hash.
	#
	def self.create(hash = {})
		hash['Proto'] = 'tcp'
		hash['Server'] = true
		self.create_param(Rex::Socket::Parameters.from_hash(hash))
	end

	#
	# Wrapper around the base class' creation method that automatically sets
	# the parameter's protocol to TCP and sets the server flag to true.
	#
	def self.create_param(param)
		param.proto  = 'tcp'
		param.server = true
		Rex::Socket.create_param(param)
	end

	#
	# Accepts a child connection.
	#
	def accept(opts = {})
		t = super()

		# jRuby compatibility
		if t.respond_to?('[]')
			t = t[0]
		end

		if (t)
			t.extend(Rex::Socket::Tcp)
			t.context = self.context

			pn = t.getpeername

			t.peerhost = pn[1]
			t.peerport = pn[2]
		end

		t
	end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
librex-0.0.13 lib/rex/socket/tcp_server.rb
librex-0.0.12 lib/rex/socket/tcp_server.rb
librex-0.0.7 lib/rex/socket/tcp_server.rb
librex-0.0.6 lib/rex/socket/tcp_server.rb
librex-0.0.5 lib/rex/socket/tcp_server.rb
librex-0.0.4 lib/rex/socket/tcp_server.rb
librex-0.0.3 lib/rex/socket/tcp_server.rb
librex-0.0.1 lib/rex/socket/tcp_server.rb