Class: ProcessWanker::TCPFilteredServer

Inherits:
TCPServer
  • Object
show all
Includes:
Log
Defined in:
lib/net/net_server.rb

Constant Summary

Constants included from Log

Log::DEBUG, Log::ERROR, Log::INFO, Log::WARN

Instance Method Summary collapse

Methods included from Log

debug, error, info, log, set_level, warn

Constructor Details

#initialize(hostname, port, auth) ⇒ TCPFilteredServer

Returns a new instance of TCPFilteredServer.



29
30
31
32
# File 'lib/net/net_server.rb', line 29

def initialize(hostname,port,auth)
	@auth=auth
	super(hostname,port)
end

Instance Method Details

#acceptObject



34
35
36
37
38
39
40
41
42
43
# File 'lib/net/net_server.rb', line 34

def accept()
	while(true)
		con=super()
      debug("got TCP connection from #{con.peeraddr.inspect}")
		return(con) if(validate_auth(con))
		ProcessWanker::with_logged_rescue("accept - reject remote addr") do
			con.close()
		end
	end
end

#validate_auth(con) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/net/net_server.rb', line 45

def validate_auth(con)

	remote_addr=con.peeraddr[3]
	remote_addr=IPAddr.new(remote_addr)
	
	if(!@auth.allow_ip(remote_addr))
		info("reject ip #{remote_addr.inspect}")
		return(false)
	end
	
	true
end