web-dev-qa-db-fra.com

Comment obtenir l'IP client et l'IP serveur en utilisant Rails

Quelqu'un peut-il s'il vous plaît aider à obtenir l'adresse IP du client et également celle du serveur en utilisant Ruby on Rails?

59

Merci: karim79 et Titanous.

Écrivez le code dans le contrôleur

Pour IP client:

request.remote_ip

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

Pour IP serveur:

require 'socket'

def local_ip
  orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true  # turn off reverse DNS resolution temporarily

  UDPSocket.open do |s|
    s.connect '64.233.187.99', 1
    s.addr.last
  end
ensure
  Socket.do_not_reverse_lookup = orig
end
35

Depuis votre contrôleur:

request.remote_ip

Si vous utilisez Apache devant un bâtard, remote_ip renverra l'adresse source de la demande, qui dans ce cas sera l'hôte local car le serveur Web Apache fait la demande, alors placez-la à la place dans votre contrôleur:

@remote_ip = request.env["HTTP_X_FORWARDED_FOR"]

Pour obtenir l'IP du serveur, voir:

Obtenir le nom d'hôte ou l'IP dans Ruby on Rails

85
karim79