diff -r a915e7231d63 -r 0e2b0e64bc21 htdocs/cgi-bin/send --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/htdocs/cgi-bin/send Wed Feb 06 13:22:28 2013 +0100 @@ -0,0 +1,209 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use LWP::UserAgent; +use CGI qw(-utf8); +use CGI::Carp qw(fatalsToBrowser); +use Net::SCP; +use Template; +use Cwd; +use FindBin qw($RealBin); +use Data::UUID; + +my $cgi = new CGI; +my $tt = Template->new({INCLUDE_PATH => "$RealBin/../templates"}) + or die "Can't create template object: $Template::ERROR\n"; + +if (!$cgi->param("_submit")) { + + print CGI::header(-type => "text/html", -charset => "utf-8"); + + $tt->process("index.html"); + exit 0; +} + +# formular wurde ausgefuellt, wir muessen es pruefen und evtl. noch mal +# anzeigen + +# CHECK + + my (%error, $ffarbe, $ofarbe, $mfarbe, $rfarbe); + if ($cgi->param("firma") eq ''){ + $error{firma} = "missing company"; + $ffarbe='rot'; + } + else{$ffarbe='black'} + if ($cgi->param("mail") eq ''){ + $error{mail}= "missing mail"; + $mfarbe='red'; + } + elsif ($cgi->param("mail") !~ m/^[a-zA-Z0-9\.-_]*\@\w+\.\w{2,}/){ + $error{mail}="no valid mail"; + $mfarbe='red'; + } + else{$mfarbe='black'} + if ($cgi->param("ort") eq ''){ + $error{ort}= "missing city"; + $ofarbe='red'; + } + else{$ofarbe='black'} + if ($cgi->param("req") eq ''){ + $error{req}="missing request"; + $rfarbe='red'; + } + else{$rfarbe='black'} + if (%error) { + print CGI::header(-type => "text/html", -charset => "utf-8"); + $tt->process("index.html", { + dump => $cgi->Dump(), + now => time(), + error => \%error, + firma => $cgi->param("firma"), + ffarbe=>$ffarbe, + mail => $cgi->param("mail"), + mfarbe=>$mfarbe, + ort => $cgi->param("ort"), + ofarbe=>$ofarbe, + req => $cgi->param("req"), + rfarbe=>$rfarbe, + }) or die $tt->error(); + exit 0; + } + +# alles ist ok + +my ($uid, $url, $ua, $ub, $req); + +$ub=new Data::UUID; +$uid=$ub->create_str; +open (UUID, ">>UUID") or die "$!\n"; +print UUID $uid; +close UUID; +####################### +# Auswerten der Daten # +# des Web-Formulars # +####################### + +my %field = ( + firma => $cgi->param('firma'), + mail => $cgi->param('mail'), + ort => $cgi->param('ort'), + req => $cgi->param('req'), +); + +foreach (values %field) { + s/\&/\<26\>/g; + s/\=/\<3D\>/g; + s/\%/\<25\>/g; + s/\+/\<2B\>/g; + s/\r\n/\n/g; +} +my $test='test'; +open( TEST,"> $test" ) or die "Kann $test nicht öffnen: $!\n"; +foreach (sort keys %field) { + print "$_: $field{$_}\n"; +} +close TEST; +my @Feldnamen = $cgi->param(); + +####################### +# Senden der Daten # +# via HTTP-POST # +####################### + +$url = 'http://192.168.0.144/cgi-bin/receive'; +$ua = LWP::UserAgent->new; +$ua->env_proxy; +$ua->timeout(20); +$ua->show_progress; +$req = HTTP::Request->new( "POST", $url ); +$req->header( 'Content-Type' => 'text/html' ); +$req->accept_decodable; +$req->content("ID=$uid&Name=$field{firma}&Mail=$field{mail}&Test=$field{ort}&req=$field{req}"); +$ua->request($req); + +print CGI::header(-type => "text/html", -charset => "utf-8"); +$tt->process("wait.html",{ + uid => $uid + }) or die $tt->error; + +unlink grep { -M > 3/(24*36) } glob("/var/www/tmp/*"); + +__END__ +# Test + +open( HTML, ">/var/www/tmp/$uid.html") or die "$!\n"; +print HTML ("
Ihr Download steht in kürze bereit!
Sie werden in 10 sekunden automatisch Weitergeleitet.
Sollte die automatische Weiterleitung nicht funktionieren, klicken Sie bitte hier.
Bitte beachten Sie, dass Ihr Download nur 5 minuten gültig ist.
"); +close HTML; + +open( HTML1, $_ = ">/var/www/tmp/$uid" . "1.html" ) or die "$!\n"; +print HTML1 ("Klicken Sie bitte auf den Link um ihre Datei zu Downloaden oder anzuzeigen.
Zum Speichern des Inhaltes klicken Sie den Link mit der rechten Maustaste an und wählen \"Ziel speichern unter...\"