#!/usr/bin/perl # Entrada.cgi ########################################################################## ## ## ## Alfasexy v 1.1 ## ## --------------------------------- ## ## por TaLu (webmaster@sexyvista.com) ## ## http://www.alfasexy.com/ ## ## ## ## ## ## (c) copyright 2001 Alfasexy.com ## ########################################################################## $|= 1; #print "Content-type: text/html \n\n"; require "variables.cgi"; # Parseo los datos &parsear_form; $usuario=$FORM{'usuario'}; $entrar=$FORM{'entrar'}; &resetear; #Back Up &respaldo; if (not(defined $entrar)) { &existe; if ($ponerpuerta eq 1) { &puerta; } else { &busca_repetidos; &guardo_datos; &grabo_hit; &Total_hit; &alahome; } } sub existe{ open(EXISTE,"data/db1.dat"); @data = ; close(EXISTE); foreach $line(@data) { chomp($line); @linedata = split (/\|/, $line); if($linedata[4] eq $FORM{'usuario'}) { $userexiste= "1"; } } if ($userexiste != "1") { &alahome; exit; } } #Grabo la Ip $ip=$ENV{'REMOTE_ADDR'}; sub puerta { open(DATA,"html/puerta.html"); @puerta = ; close(DATA); $puerta = join('',@puerta); $puerta =~ s/\[usuario\]/$usuario/g; $puerta =~ s/\[urlsitio\]/$urlsitio/g; $puerta =~ s/\[camino\]/$camino/g; $puerta =~ s/\[nombresitio\]/$nombresitio/g; print "Content-type: text/html \n\n"; print "$puerta\n\n"; print "

Funciona con Alfasexy $version - http://www.alfasexy.com/"; exit; } if ($entrar == "si") { &busca_repetidos; &guardo_datos; &grabo_hit; &Total_hit; &alahome; } #Busca ips repetidas sub busca_repetidos{ open(IP,"usuarios/$usuario.dat"); @data = ; close(IP); foreach $line(@data) { chomp($line); @linedata = split (/\|/, $line); if($linedata[0] eq $ip) { print "Location: $urlenviar\n\n"; exit; } } } #Si todo esta bien, guardo los datos sub guardo_datos{ open(IP,"usuarios/$usuario.dat"); @linksdata = ; close(IP); open(IP,">>usuarios/$usuario.dat"); flock (IP,2); print IP "$ip\n" or &error("

No se puede escribir en el archivo de usuario

"); flock (IP,8); close (IP); } sub grabo_hit{ open (ORGDB,"; close (ORGDB); open (DATABASE,">data/db2.dat"); @DB=; foreach $rec (@ODB){ chomp($rec); ($hitsin,$hitsout,$usuarioA)=split(/\|/,$rec); if ($usuario eq $usuarioA){ $hitsin = $hitsin + 1; print DATABASE "$hitsin|$hitsout|$usuario\n" or &error("

No se puede escribir en el archivo de Links

"); }else{ print DATABASE "$hitsin|$hitsout|$usuarioA\n" or &error("

No se puede escribir en el archivo de Links

"); } } close (DATABASE); } #Le sumo un hit al total sub Total_hit{ open (ORGDB,"; close (ORGDB); open (DATABASE,">data/total.dat"); @DB=; foreach $rec (@ODB){ chomp($rec); ($hitsinT,$hitsoutT)=split(/\|/,$rec); $nuevohitsinT = $hitsinT + 1; flock (DATABASE,2); print DATABASE "$nuevohitsinT|$hitsoutT\n" or &error("

No se puede escribir en el archivo de Total

"); } flock (DATABASE,8); close (DATABASE); } #Lo mando a la home sub alahome{ print "Location: $urlenviar\n\n"; } #Resetear Links sub resetear{ open(RESET,"data/reset.dat"); @data = ; close(RESET); foreach $line(@data) { chomp($line); @linedata = split (/\n/, $line); $resto = $tiempoactual - $linedata[0]; } if ($resto >= 3600*$horasreset) { #Le envio reporte cada dia &reporte; open(RESET,"data/reset.dat"); @linksdata = ; close(RESET); open(RESET,">data/reset.dat"); flock (RESET,2); print RESET "$tiempoactual\n" or &error("

No se puede escribir en el archivo de RESET

"); flock (RESET,8); close (RESET); #Reseteo los hits open (ORGDB,"; close (ORGDB); open (DATABASE3,">data/db2.dat"); @DB=; foreach $rec3 (@ODB){ chomp($rec3); ($hitsin,$hitsout,$usuario)=split(/\|/,$rec3); #Reseteo las ip open(IP,"usuarios/$usuario.dat"); @linksdata = ; close(IP); open(IP,">usuarios/$usuario.dat"); flock (IP,2); print IP "" or &error("

No se puede escribir en el archivo de usuario

"); flock (IP,8); close (IP); flock (DATABASE,2); print DATABASE "0|0|$usuario\n" or &error("

No se puede escribir en el archivo de Links

"); } flock (DATABASE,8); close (DATABASE); #Reseteo los hits totales open (HITS,"; close (HITS); open(TOT,">data/total.dat"); flock (TOT,2); print TOT "0|0" or &error("

No se puede escribir en el archivo de Totales

"); flock (TOT,8); close (TOT); } } #Enviar reporte sub reporte{ open (REPORTE,"; close (REPORTE); open (REPORTE,"; foreach $rep (@REP){ chomp($rep); ($hitsinR,$hitsoutR,$usuarioB)=split(/\|/,$rep); } close (REPORTE); open (REPOR,"; close (REPOR); open (REPOR,"; foreach $ret (@RES){ chomp($ret); ($urlR,$nombreR,$emailR,$passwordR,$usuarioR,$reporteR,$descripcionR,$fechaR)=split(/\|/,$ret); if ($reporteR eq 1 and $usuarioB eq $usuarioR) { $asunto="Reporte diario - $nombresitio"; open(MAIL,"|$mailprog -t")or &error("No puedo enviar el email porque no me puedo conectar al programa de emails.\n"); print MAIL "To: $emailR\n"; print MAIL "From: $nombresitio<$adminemail>\n"; print MAIL "Reply-to: $adminemail\n"; print MAIL "Subject: $asunto\n\n"; print MAIL "Reporte diario de visitas de $nombresitio:\n"; print MAIL "----------------------------------------------\n\n"; print MAIL "Informe del sitio: $nombreR\n"; print MAIL "URL: $urlR\n\n"; print MAIL "Visitas In (Las que Ud. nos envia): $hitsinR\n"; print MAIL "Visitas Out (Las que nosotros le enviamos): $hitsoutR\n\n"; print MAIL "Recuerde que puede cambiar sus datos en:\n"; print MAIL "$urlsitio$camino/miembros.cgi\n\n"; print MAIL "----------------------------------------------\n\n"; print MAIL "Muchos saludos\n"; print MAIL "$nombrewebamster\n"; print MAIL "$nombresitio\n"; print MAIL "$urlsitio\n"; print MAIL "$adminemail\n"; close (MAIL); } } close (REPOR); } #Back Up sub respaldo{ if (not(-s "data/db2.dat" eq 0)) { use File::Copy; copy("data/db2.dat","respaldo/db2.dat"); } if (not(-s "data/db1.dat" eq 0)) { use File::Copy; copy("data/db1.dat","respaldo/db1.dat"); } }