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