sub get_remote_addr { exists $ENV{'REMOTE_ADDR'} && do { $ENV{'REMOTE_ADDR'} ? return $ENV{'REMOTE_ADDR'} : return 'empty'; }; return 'empty'; } sub get_referrer { exists $ENV{'HTTP_REFERER'} && do { $ENV{'HTTP_REFERER'} ? return $ENV{'HTTP_REFERER'} : return 'empty'; }; return 'empty'; } sub get_client_ip { exists $ENV{'HTTP_CLIENT_IP'} && do { ($ENV{'HTTP_CLIENT_IP'} and $ENV{'HTTP_CLIENT_IP'} ne '127.0.0.1') ? return $ENV{'HTTP_CLIENT_IP'} : return 'empty'; }; return 'empty'; } sub get_x_ip_client { exists $ENV{'X_CLIENT_IP'} && do { ($ENV{'X_CLIENT_IP'} and $ENV{'X_CLIENT_IP'} ne '127.0.0.1') ? return $ENV{'X_CLIENT_IP'} : return 'empty'; }; return 'empty'; } sub get_http_via { exists $ENV{'HTTP_VIA'} && do { ($ENV{'HTTP_VIA'} and $ENV{'HTTP_VIA'} ne '127.0.0.1') ? return $ENV{'HTTP_VIA'} : return 'empty'; }; return 'empty'; } sub get_x_forwarded { exists $ENV{'HTTP_X_FORWARDED_FOR'} && do { ($ENV{'HTTP_X_FORWARDED_FOR'} and $ENV{'HTTP_X_FORWARDED_FOR'} ne '127.0.0.1') ? return $ENV{'HTTP_X_FORWARDED_FOR'} : return 'empty'; }; return 'empty'; } sub get_client_host { my $client_ip = shift; my ($ip_addr, $client_host); $client_ip ne 'empty' ? do { $ip_addr = inet_aton($client_ip) || 'N/A'; $client_host = gethostbyaddr($ip_addr, AF_INET) || 'N/A'; length($client_host) < 3 && ($client_host = 'N/A'); } : ($client_host = 'N/A'); \$client_host; }