Apache2-ApacheMobileFilter
view release on metacpan or search on metacpan
lib/Apache2/AMFLiteDetectionFilter.pm view on Meta::CPAN
if ($ENV{AMFCheckVersion}) {
$checkVersion=$ENV{AMFCheckVersion};
}
if ($ENV{AMFMobileHome}) {
$configMobileFile="$ENV{AMFMobileHome}/amflitedetection.config";
$configTabletFile="$ENV{AMFMobileHome}/amflitedetection_tablet.config";
$configTouchFile="$ENV{AMFMobileHome}/amflitedetection_touch.config";
$configTVFile="$ENV{AMFMobileHome}/amflitedetection_tv.config";
} else {
$CommonLib->printLog("AMFMobileHome not exist. Please set the variable AMFMobileHome into httpd.conf");
ModPerl::Util::exit();
}
if ($ENV{AMFProductionMode}) {
$cookiecachesystem=$ENV{AMFProductionMode};
$CommonLib->printLog("AMFProductionMode is: $cookiecachesystem");
} else {
$CommonLib->printLog("AMFProductionMode is not setted the default value is $cookiecachesystem");
}
if ($ENV{AMFMobileKeys}) {
my @dummyMobileKeys = split(/,/, $ENV{AMFMobileKeys});
foreach my $dummy (@dummyMobileKeys) {
$MobileArray{$dummy}='mobile';
}
$CommonLib->printLog("AMFMobileKeys is: $ENV{AMFMobileKeys}");
}
if ($ENV{RestMode}) {
$restmode=$ENV{RestMode};
$CommonLib->printLog("RestMode is: $restmode");
}
if ($ENV{AMFDownloadParam}) {
$downloadparam=$ENV{AMFDownloadParam};
$CommonLib->printLog("DownloadAMFParam is: $downloadparam");
}
if ($downloadparam eq 'true' && $forceBlockDownload eq "false") {
&readMobileParamFromUrl;
&readTabletParamFromUrl;
&readTouchParamFromUrl;
&readTVParamFromUrl;
} else {
&readMobileParamFromFile;
&readTabletParamFromFile;
&readTouchParamFromFile;
&readTVParamFromFile;
}
if ($ENV{ForceTabletAsFullBrowser}) {
if ($ENV{ForceTabletAsFullBrowser} eq 'true') {
$CommonLib->printLog("AMFMobileHome not exist. Please set the variable AMFMobileHome into httpd.conf");
$forcetablet="true";
} else {
$forcetablet="false";
}
}
if ($ENV{FullBrowserMobileAccessKey}) {
$mobilenable="$ENV{FullBrowserMobileAccessKey}";
$CommonLib->printLog("FullBrowserMobileAccessKey is: $ENV{FullBrowserMobileAccessKey}");
$CommonLib->printLog("For access the device to fullbrowser set the link: <url>?$mobilenable=true");
}
sub readMobileParamFromUrl {
$CommonLib->printLog("Read data from ".$urlmobile);
my $req = HTTP::Request->new(HEAD => $urlmobile);
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
if ($res->is_success) {
$CommonLib->printLog("Redirect to:" . $res->request()->uri());
$urlmobile=$res->request()->uri();
my $request = $ua->get ($urlmobile);
my $content=$request->content;
if ($content) {
$CommonLib->printLog("Download OK");
$content =~ s/\n//g;
my @dummyMobileKeys = split(/,/, lc($content));
foreach my $dummy (@dummyMobileKeys) {
$MobileArray{$dummy}='mobile';
}
open (MYFILE, ">$configMobileFile") || die ("Cannot Open File: $configMobileFile");
print MYFILE $content;
close (MYFILE);
} else {
$CommonLib->printLog("Download error ".$correctHostName);
$CommonLib->printLog("Try download previews version");
&readMobileParamFromFile;
}
} else {
$CommonLib->printLog("Download error ".$correctHostName);
$CommonLib->printLog("Try download previews version");
&readMobileParamFromFile;
}
}
sub readMobileParamFromFile {
$CommonLib->printLog("Read for mobile data from $configMobileFile");
my $content="";
if (open (IN,$configMobileFile)) {
while (<IN>) {
$content=$content.$_;
}
close IN;
} else {
$CommonLib->printLog("Error open file:$configMobileFile");
ModPerl::Util::exit();
}
$content =~ s/\n//g;
my @dummyMobileKeys = split(/,/, lc($content));
foreach my $dummy (@dummyMobileKeys) {
$MobileArray{$dummy}='mobile';
}
}
sub readTabletParamFromUrl {
$CommonLib->printLog("Read data for tablet detection from ".$urlTablet);
my $req = HTTP::Request->new(HEAD => $urlTablet);
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
if ($res->is_success) {
$CommonLib->printLog("Redirect to:" . $res->request()->uri());
$urlTablet=$res->request()->uri();
my $request = $ua->get ($urlTablet);
my $content=$request->content;
if ($content) {
$CommonLib->printLog("Download OK");
$content =~ s/\n//g;
my @dummyMobileKeys = split(/,/, lc($content));
foreach my $dummy (@dummyMobileKeys) {
$MobileTabletArray{$dummy}='mobile';
}
open (MYFILE, ">$configTabletFile") || die ("Cannot Open File: $configMobileFile");
print MYFILE $content;
close (MYFILE);
} else {
$CommonLib->printLog("Download error from ".$correctHostName);
$CommonLib->printLog("Try download previews version");
&readTabletParamFromFile;
}
} else {
$CommonLib->printLog("Error: " . $res->status_line);
$CommonLib->printLog("Download error from ".$correctHostName);
$CommonLib->printLog("Try download previews version");
&readTabletParamFromFile;
}
}
sub readTabletParamFromFile {
$CommonLib->printLog("Read for tablet data from $configTabletFile");
my $content="";
if (open (IN,$configTabletFile)) {
while (<IN>) {
$content=$content.$_;
}
close IN;
} else {
$CommonLib->printLog("Error open file:$configTabletFile");
ModPerl::Util::exit();
}
$content =~ s/\n//g;
my @dummyMobileKeys = split(/,/, lc($content));
foreach my $dummy (@dummyMobileKeys) {
$MobileTabletArray{$dummy}='mobile';
}
}
sub readTouchParamFromUrl {
$CommonLib->printLog("Read for touch data for touch detection from ".$urlTouch);
my $req = HTTP::Request->new(HEAD => $urlTouch);
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
if ($res->is_success) {
$CommonLib->printLog("Redirect to:" . $res->request()->uri());
$urlmobile=$urlmobile;
my $request = $ua->get ($urlTouch);
my $content=$request->content;
if ($content) {
$CommonLib->printLog("Download OK");
$content =~ s/\n//g;
my @dummyMobileKeys = split(/,/, lc($content));
foreach my $dummy (@dummyMobileKeys) {
$MobileTouchArray{$dummy}='mobile';
}
open (MYFILE, ">$configTouchFile") || die ("Cannot Open File: $configMobileFile");
print MYFILE $content;
close (MYFILE);
} else {
$CommonLib->printLog("Download error from ".$correctHostName);
$CommonLib->printLog("Try download previews version");
&readTouchParamFromFile;
}
} else {
$CommonLib->printLog("Error: " . $res->status_line);
$CommonLib->printLog("Download error from ".$correctHostName);
$CommonLib->printLog("Try download previews version");
&readTouchParamFromFile;
}
}
sub readTouchParamFromFile {
$CommonLib->printLog("Read data from $configTouchFile");
my $content="";
if (open (IN,$configTouchFile)) {
while (<IN>) {
$content=$content.$_;
}
close IN;
} else {
$CommonLib->printLog("Error open file:$configTouchFile");
ModPerl::Util::exit();
}
$content =~ s/\n//g;
my @dummyMobileKeys = split(/,/, lc($content));
foreach my $dummy (@dummyMobileKeys) {
$MobileTouchArray{$dummy}='mobile';
}
}
sub readTVParamFromUrl {
$CommonLib->printLog("Read data for TV detection from ".$urlTv);
my $req = HTTP::Request->new(HEAD => $urlTv);
$req->header('Accept' => 'text/html');
my $res = $ua->request($req);
if ($res->is_success) {
$CommonLib->printLog("Redirect to:" . $res->request()->uri());
$urlmobile= $res->request()->uri();
my $request = $ua->get ($urlTv);
my $content=$request->content;
if ($content) {
$CommonLib->printLog("Download OK");
$content =~ s/\n//g;
my @dummyMobileKeys = split(/,/, lc($content));
foreach my $dummy (@dummyMobileKeys) {
$MobileTVArray{$dummy}='mobile';
}
open (MYFILE, ">$configTVFile") || die ("Cannot Open File: $configTVFile");
print MYFILE $content;
close (MYFILE);
} else {
$CommonLib->printLog("Download error from ".$correctHostName);
$CommonLib->printLog("Try download previews version");
&readTVParamFromFile;
}
} else {
$CommonLib->printLog("Error: " . $res->status_line);
$CommonLib->printLog("Download error from ".$correctHostName);
$CommonLib->printLog("Try download previews version");
&readTVParamFromFile;
}
}
sub readTVParamFromFile {
$CommonLib->printLog("Read for tv data from $configTVFile");
my $content="";
if (open (IN,$configTVFile)) {
while (<IN>) {
$content=$content.$_;
}
close IN;
} else {
$CommonLib->printLog("Error open file:$configTVFile");
ModPerl::Util::exit();
}
$content =~ s/\n//g;
my @dummyMobileKeys = split(/,/, lc($content));
foreach my $dummy (@dummyMobileKeys) {
$MobileTVArray{$dummy}='mobile';
}
}
sub isMobile {
my ($UserAgent) = @_;
my $ind=0;
my $isMobileValue='false';
my $pair;
my $length=0;
foreach $pair (sort keys %MobileArray) {
if ($UserAgent =~ m/\Q$pair\E/) {
$isMobileValue='true';
}
( run in 1.205 second using v1.01-cache-2.11-cpan-2398b32b56e )