#!/usr/bin/perl package main; BEGIN { $|=1; push(@INC, "/web/pm"); } use strict; use CGI; use CityMap::Allgemein; use CityMap::Abfragen; use CityMap::Words; use CityMap::Intern; use Carp; use vars qw(%cm $db1 $db6); my $r=shift; my $new_location="//web02.city-map.de/pic/pixel.gif"; my $q=new CGI; my $n=$q->param('n'); my $land=""; my $get_hash = ""; my $region=""; my $kundennummer=""; my $seitenr=""; my $logextra=""; my $lg=""; my %mon=( "01"=>"Jan", "02"=>"Feb", "03"=>"Mar", "04"=>"Apr", "05"=>"May", "06"=>"Jun", "07"=>"Jul", "08"=>"Aug", "09"=>"Sep", "10"=>"Oct", "11"=>"Nov", "12"=>"Dec" ); # Redirect to pixel if DB is down if($db6 == undef){ $r->status(302); $r->err_headers_out->add("Location" => $new_location); } if ($n=~/^(\d{2})(\d{2})(\d{5})(\d{2})$/) { # Kundenseite ? $land=$1; $region=$2; my $kundenr=$3; $kundennummer=$land.$region.$kundenr; $seitenr=$4; } elsif ($n=~/^(\d{2})(\d{2})(\d{6})(\d{2})$/) { # Infoseite ? $land=$1; $region=$2; $seitenr=$n; $lg=$3; $logextra=$q->param('x'); } elsif ($n =~ /^0000$/ ) { # titelseite $land="00"; } else { $land=0; } my $regionNo = $land . $region; if ($regionNo == 0) { $regionNo = '0101'; } cmTranslate(cmGetLanguageNoFromRegionId(cmNewRegionId($regionNo))); my $logfile="/web/stats.city-map.de/log/$land/$land$region/access_log"; if (defined($land) && $land=~/^\d\d$/) { if ($kundennummer) { if (int($seitenr)) { #CLog($logfile,"/Kunden/$kundennummer/Seite_$seitenr"); } my $typ=$q->param('t'); my $oid=$q->param('o'); $typ="" unless $typ; my $hp=$q->param('h'); cmCount($kundennummer,$typ) unless $hp; ## liegt auf stats => db6 if ($typ eq "gutscheine") { SQL("UPDATE gutscheine SET hits=hits+1 WHERE kundennummer=? AND id=?",6,$kundennummer,$oid); } elsif ($typ eq "kfz") { SQL("UPDATE kfz SET hits=hits+1 WHERE kundennummer=? AND id=?",6,$kundennummer,$oid); ## in der city-map db => 3 } elsif ($typ eq "immo") { SQL("use citymap",3); SQL("UPDATE immobilien SET hits=hits+1 WHERE kundennummer=? AND immobilien_id=?",3,$kundennummer,$oid); } my $count=$q->param('m'); my $width=$q->param('w'); $width=-2 unless $width; #cmCountMap($kundennummer,$count,$width) if $count; } elsif ($land eq "00") { my $country=$q->param('c'); my $lg=$q->param('lg'); my $bundesland=$q->param('p'); } else { my $log=""; if ($logextra && $logextra !~ /^\d{9}$/) { my $what="Branchen"; if ($seitenr=~/^\d{4}0102/) { $what="Suchworte"; } elsif ($seitenr=~/^\d{4}0103/ || $seitenr =~ /^\d{4}0110/ ) { $what="Orte"; } elsif ($seitenr=~/^\d{4}0111/ ) { $what="Firmen"; } else { my $branchenid=$q->param('b'); if ($branchenid && $branchenid =~ /^\d+$/ ){ cmCountBranche($land.$region, $branchenid); } } $log="/$what/$logextra"; } else { $log="/Info/$seitenr"; } if ($seitenr =~ /^(\d{10})(\d\d)$/) { my $myseitenr=$1; my $mylg=$2; SQL("use stats", 6); my ($sec,$min,$hour,$mday,$mon,$year)=localtime(time); $year+=1900; $mon++; my $lfdseitenr=""; if ($logextra && $logextra =~ /^\d{9}$/) { $lfdseitenr=$logextra; } my $tablename="infoseiten".$year.cmTwo($mon); my ($check)=cmFetchRow("SELECT 1 FROM $tablename WHERE infopage_id=? AND lg=?", 6, $myseitenr, $mylg); if ($check) { SQL("UPDATE $tablename SET hits=hits+1 WHERE infopage_id=? AND lg=? ", 6, $myseitenr, $mylg); } else { SQL("INSERT INTO $tablename (infopage_id, region, lg, hits) VALUES(?, ?, ?, ?)", 6, $myseitenr, $regionNo, $mylg, 1); } if ($myseitenr =~ /^(\d{4})050199$/) { $new_location="https://www1.lottoarena.com/kooperation/citymap?KoopSign=1".$1; } } } } $r->status(302); $r->err_headers_out->add("Location" => $new_location); sub CLog { my ($file,$text)=@_; my ($sec,$min,$hour,$mday,$mon,$year)=localtime(time); $mon++; $year+=1900; if (open(LOG, ">>$file")) { print LOG "$ENV{REMOTE_ADDR} - - [".cmTwo($mday)."/$mon{cmTwo($mon)}/$year:".cmTwo($hour).":".cmTwo($min).":".cmTwo($sec)." +0100] \"GET "; print LOG "$text"; print LOG " HTTP/1.0\" 200 16123\n"; close(LOG); } else { carp sprintf($cm{'konnte_nicht_in_datei_schreiben'}, $file); } }