Sha256: 4c9cb476a0762f426be180cf1863d2529788741b24bc6d808bc0e11a1182cfb4

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

# -*- coding: binary -*-
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 Rex::IO::StreamServer 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

2 entries across 2 versions & 1 rubygems

Version Path
librex-0.0.68 lib/rex/socket/tcp_server.rb
librex-0.0.66 lib/rex/socket/tcp_server.rb