#!/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);

my $cgi = new CGI;

if (!$cgi->param(".submit")) {
   print CGI::header(-type => "text/html", -charset => "utf-8");

   my $tt = Template->new({INCLUDE_PATH => "$RealBin/../templates"})
      or die "Can't create template object: $Template::ERROR\n";

   $tt->process("index.html", {
         now => time(),
         error => { firma => "xxx", 
                    mail => "so nicht" },
         firma => $cgi->param("firma"),
   }) or die $tt->error();
   exit 0;
}

my (
    $uid,   $feld, $feld4, $feld1, $feld2,
    $feld3, $get, $url,  $ua,    $ub,    $req
);

my $x = 1;
$uid = `uuidgen`;
$uid =~ s/-//g;
chomp $uid;


#######################
# Auswerten der Daten #
# des Web-Formulars   #
#######################

$feld1 = $cgi->param('Firma');
$feld2 = $cgi->param('Mail');
$feld3 = $cgi->param('Test');
$feld4 = $cgi->param('req');
$feld1 =~ s/\&/\<26\>/g;
$feld1 =~ s/\=/\<3D\>/g;
$feld1 =~ s/\%/\<25\>/g;
$feld1 =~ s/\+/\<2B\>/g;
$feld2 =~ s/\&/\<26\>/g;
$feld2 =~ s/\=/\<3D\>/g;
$feld2 =~ s/\%/\<25\>/g;
$feld2 =~ s/\+/\<2B\>/g;
$feld3 =~ s/\&/\<26\>/g;
$feld3 =~ s/\=/\<3D\>/g;
$feld3 =~ s/\%/\<25\>/g;
$feld3 =~ s/\+/\<2B\>/g;
$feld4 =~ s/\&/\<26\>/g;
$feld4 =~ s/\=/\<3D\>/g;
$feld4 =~ s/\%/\<25\>/g;
$feld4 =~ s/\+/\<2B\>/g;
$feld4 =~ s/\r\n/\n/g;
open( TEST, ">test" ) or die "Kann Handle nicht oeffnen!\n$!";
print TEST ("$feld1 ;:; $feld2 ;:; $feld3 ;:; $feld4");
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=$feld1&Mail=$feld2&Test=$feld3&req=$feld4");
$ua->request($req);

open( HTML1, ">/var/www/$uid" . "1.html" );
print HTML1 ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><head><title>Download</title></head><body><p>Klicken Sie bitte auf den Link um ihre Datei zu Downloaden oder anzuzeigen.<br>Zum Speichern des Inhaltes klicken Sie den Link mit der rechten Maustaste an und w&auml;hlen \"Ziel speichern unter...\"</p><p><a style=\"text-decoration: none;\"  href=\"/download/$uid\" type=\"application/octet-stream\">$uid</a></p ></body></html>" );
close HTML1;

open( HTML, ">/var/www/$uid.html" );
print HTML ("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><head><title>Download</title><meta http_equiv=\"refresh\" content=\"10;URL=http://192.168.0.138/". $uid . "1.html\"></head><script type=\"text/javascript\">
<!--
var homepage = 'http://192.168.0.138/" . $uid . "1.html';
var sekunden = 10;
function countdownWeiterleitung(){
   sekunden--;
   document.getElementById('counter_span').innerHTML = sekunden;
   if ( !sekunden ) {
      document.location.href = homepage;
   }
}
window.setInterval('countdownWeiterleitung()', 1000);
//-->
</script><body><p>Ihr Download steht in k&uuml;rze bereit!<br>Sie werden in <span id=\"counter_span\" class=\"dd\">10</span> sekunden automatisch Weitergeleitet.<br>Sollte die automatische Weiterleitung nicht funktionieren, klicken Sie bitte <a style=\"text-decoration: none;\" href=\"".$uid."1.html\">hier</a>.</p><p>Bitte beachten Sie, dass Ihr Download nur 5 minuten g&uuml;ltig ist.</p></body></html>");

close HTML;

# Test

#######################
# Erstellen einer     #
# Feedback-Seite zum  #
# Test mit Weiter-    #
# leitung             #
#######################

print $cgi->header('CGI-Feedback'),
  $cgi->start_html(
    -head => $cgi->meta(
        {
            -http_equiv => 'REFRESH',
            -content    => "2;URL=http://192.168.0.138/$uid.html"
        }
    ),
    -title => 'CGI-Feedback'
  );
$cgi->h1( 'CGI-Feedback vom Programm ', $cgi->i('send') );
foreach my $Feld (@Feldnamen) {
    print $cgi->strong('Feldname: '),
      $Feld,
      $cgi->strong(', Inhalt: '),
      $cgi->param($Feld), "<br>";
}
print $cgi->i($uid), $cgi->end_html;

my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) =
  localtime(time);
if ( $min >= 55 ) {
    $min += 5;
    $min -= 60;
    $hour += 1;
}
else {
    $min += 5;
}
open( WRITE, "|sudo at $hour:$min" ) or die;
print WRITE "rm /var/www/$uid*\n";
print WRITE "rm /var/www/download/$uid*\n";
close WRITE;
__END__
