Module: Ftpd::GetsPeerAddress
- Included in:
- ConnectionTracker
- Defined in:
- lib/ftpd/gets_peer_address.rb
Instance Method Summary collapse
-
#peer_ip(socket) ⇒ String
Obtain the IP that the client connected from.
Instance Method Details
#peer_ip(socket) ⇒ String
Obtain the IP that the client connected from.
How this is done depends upon which type of socket (SSL or not) and what version of Ruby.
- SSL socket
- #peeraddr. Uses BasicSocket.do_not_reverse_lookup.
- Ruby 1.8.7
- #peeraddr, which does not take the "reverse lookup" argument, relying instead using BasicSocket.do_not_reverse_lookup.
- #getpeername, which does not do a reverse lookup. It is a little uglier than #peeraddr.
- Ruby >=1.9.3
- #peeraddr, which takes the "reverse lookup" argument.
- #getpeername - same as 1.8.7
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/ftpd/gets_peer_address.rb', line 26 def peer_ip(socket) if socket.respond_to?(:getpeername) # Non SSL sockaddr = socket.getpeername _port, host = Socket.unpack_sockaddr_in(sockaddr) host else # SSL BasicSocket.do_not_reverse_lookup = true socket.peeraddr.last end end |