Module: Arachni::Reactor::Connection::PeerInfo

Defined in:
lib/arachni/reactor/connection/peer_info.rb

Overview

Author:

Instance Method Summary collapse

Instance Method Details

#peer_addressString

Returns Peer's IP address or socket path.

Returns:

  • (String)

    Peer's IP address or socket path.



66
67
68
# File 'lib/arachni/reactor/connection/peer_info.rb', line 66

def peer_address
    peer_ip_address || peer_address_info[:path]
end

#peer_address_info(resolve = false) ⇒ Hash

Returns Peer address information:

  • IP socket:

    • Without resolve:

      {
          protocol:   'AF_INET',
          port:       10314,
          hostname:   '127.0.0.1',
          ip_address: '127.0.0.1'
      }
      
    • With resolve:

      {
          protocol:   'AF_INET',
          port:       10314,
          hostname:   'localhost',
          ip_address: '127.0.0.1'
      }
      
  • UNIX-domain socket:

    {
        protocol: 'AF_UNIX',
        path:     '/tmp/my-socket'
    }.
    

Parameters:

  • resolve (Bool) (defaults to: false)

    Resolve IP address to hostname.

Returns:

  • (Hash)

    Peer address information:

    • IP socket:

      • Without resolve:

        {
            protocol:   'AF_INET',
            port:       10314,
            hostname:   '127.0.0.1',
            ip_address: '127.0.0.1'
        }
        
      • With resolve:

        {
            protocol:   'AF_INET',
            port:       10314,
            hostname:   'localhost',
            ip_address: '127.0.0.1'
        }
        
    • UNIX-domain socket:

      {
          protocol: 'AF_UNIX',
          path:     '/tmp/my-socket'
      }
      


46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/arachni/reactor/connection/peer_info.rb', line 46

def peer_address_info( resolve = false )
    if Arachni::Reactor.supports_unix_sockets? && to_io.is_a?( UNIXSocket )
        {
            protocol: to_io.peeraddr.first,
            path:     to_io.path
        }
    else
        protocol, port, hostname, ip_address = to_io.peeraddr( resolve )

        {
            protocol:   protocol,
            port:       port,
            hostname:   hostname,
            ip_address: ip_address
        }
    end
end

#peer_hostnameString

Returns Peer's hostname.

Returns:

  • (String)

    Peer's hostname.



78
79
80
# File 'lib/arachni/reactor/connection/peer_info.rb', line 78

def peer_hostname
    peer_address_info(true)[:hostname]
end

#peer_ip_addressString

Returns Peer's IP address.

Returns:

  • (String)

    Peer's IP address.



72
73
74
# File 'lib/arachni/reactor/connection/peer_info.rb', line 72

def peer_ip_address
    peer_address_info[:ip_address]
end

#peer_portString

Returns Peer's port.

Returns:

  • (String)

    Peer's port.



84
85
86
# File 'lib/arachni/reactor/connection/peer_info.rb', line 84

def peer_port
    peer_address_info[:port]
end