NAME CGI::Application::Plugin::RemoteIP - Unified Remote IP handling SYNOPSIS use CGI::Application::Plugin::RemoteIP; # Your application sub run_mode { my ($self) = ( @_); my $ip = $self->remote_ip(); } DESCRIPTION This module simplifies the detection of the remote IP address of your visitors. MOTIVATION This module allows you to remove scattered references in your code, such as: # Get IP my $ip = $ENV{'REMOTE_ADDR'}; # Remove faux IPv6-prefix. $ip =~ s/^::ffff://g; .. Instead your code and use the simpler expression: my $ip = $self->remote_ip(); SECURITY The code in this module will successfully understand the "X-Forwarded-For" header and trust it. Unless you have setup any proxy, or webserver, to scrub this header this means the value that is used is at risk of being spoofed, bogus, or otherwise malicious. METHODS import Add our three public-methods into the caller's namespace: remote_ip The remote IP of the client. is_ipv4 A method to return 1 if the visitor is using IPv4 and 0 otherwise. is_ipv6 A method to return 1 if the visitor is using IPv6 and 0 otherwise. remote_ip Return the remote IP of the visitor, whether via the "X-Forwarded-For" header or via the standard CGI environmental variable "REMOTE_ADDR". is_ipv4 Determine whether the remote IP address is IPv4. is_ipv6 Determine whether the remote IP address is IPv6. AUTHOR Steve Kemp COPYRIGHT AND LICENSE Copyright (C) 2015 Steve Kemp . This library is free software. You can modify and or distribute it under the same terms as Perl itself.