package env; use strict; use vars qw( $VERSION ); use HTTP::BrowserDetect; use Geo::IP::PurePerl; $VERSION = '0.01'; sub new { my $obj = shift; my $ref = {}; $ref->{'browser'} = 'Firefox'; $ref->{'browserVersion'} = 0; $ref->{'browserCountry'} = ''; $ref->{'browserLang'} = ''; $ref->{'OS'} = ''; $ref->{'lang'} = 'de'; # ISO 639-1 e.g.: de,en,fr... $ref->{'country'} = 'AT'; # ISO 3166 $ref->{'countryName'} = ''; # Full Country Name $ref->{'cssSyntax'} = $ref->{'browser'}; $ref->{'mozillaVersion'} = 0; # try to get Mozilla if( $ENV{'HTTP_USER_AGENT'} =~ /Mozilla\/(\d\.\d)/i ) { $ref->{'mozillaVersion'} = $1; } # try for language if( $ENV{'HTTP_ACCEPT_LANGUAGE'} =~ /^([a-z][a-z])/ ) { $ref->{'browserLang'} = $1; } # try for contry if( $ENV{'HTTP_ACCEPT_LANGUAGE'} =~ /\-([a-z][a-z])/i ) { $ref->{'browserCountry'} = uc $1; } # try for contry with geoIP my $geo = Geo::IP::PurePerl->new(); $ref->{'country'} = $geo->country_code_by_addr( $ENV{'REMOTE_ADDR'} ); $ref->{'countryName'} = $geo->country_name_by_addr( $ENV{'REMOTE_ADDR'} ); # Detect Browser / OS my $brow = HTTP::BrowserDetect->new( $ENV{'HTTP_USER_AGENT'} ); $ref->{'browser'} = $brow->browser_string(); $ref->{'browserVersion'} = $brow->version(); $ref->{'OS'} = $brow->os_string(); if( $ref->{'browser'} ) { if( $ref->{'browser'} ne 'Netscape' ) { $ref->{'cssSyntax'} = $ref->{'browser'}; } else { $ref->{'cssSyntax'} = 'Firefox'; } } # TEST #$ref->{'lang'} = 'de'; #$ref->{'country'} = 'RU'; #$ref->{'cssSyntax'} = $ref->{'browser'}; bless($ref,$obj); return($ref); } sub getBrowser { my ($ref) = @_; return $ref->{'browser'}; } sub getBrowserCountry { my ($ref) = @_; return $ref->{'browserCountry'}; } sub getBrowserLang { my ($ref) = @_; return $ref->{'browserLang'}; } sub getBrowserVersion { my ($ref) = @_; return $ref->{'browserVersion'}; } sub getOS { my ($ref) = @_; return $ref->{'OS'}; } sub getLang { my ($ref) = @_; return $ref->{'lang'}; } sub getCountry { my ($ref) = @_; return $ref->{'country'} } sub getCountryName { my ($ref) = @_; return $ref->{'countryName'} } sub getCssSyntax { my ($ref) = @_; return $ref->{'cssSyntax'}; } sub getMozilla { my ($ref) = @_; return $ref->{'mozillaVersion'}; } 1;