htdocs/cgi-bin/send
changeset 10 0e2b0e64bc21
parent 9 a915e7231d63
child 11 bd470c2d0a0a
equal deleted inserted replaced
9:a915e7231d63 10:0e2b0e64bc21
       
     1 #!/usr/bin/perl
       
     2 
       
     3 use warnings;
       
     4 use strict;
       
     5 use LWP::UserAgent;
       
     6 use CGI qw(-utf8);
       
     7 use CGI::Carp qw(fatalsToBrowser);
       
     8 use Net::SCP;
       
     9 use Template;
       
    10 use Cwd;
       
    11 use FindBin qw($RealBin);
       
    12 use Data::UUID;
       
    13 
       
    14 my $cgi = new CGI;
       
    15 my $tt = Template->new({INCLUDE_PATH => "$RealBin/../templates"})
       
    16    or die "Can't create template object: $Template::ERROR\n";
       
    17 
       
    18 if (!$cgi->param("_submit")) {
       
    19 
       
    20    print CGI::header(-type => "text/html", -charset => "utf-8");
       
    21 
       
    22    $tt->process("index.html");
       
    23    exit 0;
       
    24 }
       
    25 
       
    26 # formular wurde ausgefuellt, wir muessen es pruefen und evtl. noch mal
       
    27 # anzeigen
       
    28 
       
    29 # CHECK
       
    30 
       
    31    my (%error, $ffarbe, $ofarbe, $mfarbe, $rfarbe);
       
    32    if ($cgi->param("firma") eq ''){
       
    33       $error{firma} = "missing company";
       
    34       $ffarbe='rot';
       
    35    }
       
    36    else{$ffarbe='black'}
       
    37    if ($cgi->param("mail") eq ''){
       
    38       $error{mail}= "missing mail";
       
    39       $mfarbe='red';
       
    40    }
       
    41    elsif ($cgi->param("mail") !~ m/^[a-zA-Z0-9\.-_]*\@\w+\.\w{2,}/){
       
    42       $error{mail}="no valid mail";
       
    43       $mfarbe='red';
       
    44    }
       
    45    else{$mfarbe='black'}
       
    46    if ($cgi->param("ort") eq ''){
       
    47       $error{ort}= "missing city";
       
    48       $ofarbe='red';
       
    49    }
       
    50    else{$ofarbe='black'}
       
    51    if ($cgi->param("req") eq ''){
       
    52       $error{req}="missing request";
       
    53       $rfarbe='red';
       
    54    }
       
    55    else{$rfarbe='black'}
       
    56    if (%error) {
       
    57       print CGI::header(-type => "text/html", -charset => "utf-8");
       
    58       $tt->process("index.html", {
       
    59             dump => $cgi->Dump(),
       
    60             now => time(),
       
    61             error => \%error,
       
    62             firma => $cgi->param("firma"),
       
    63             ffarbe=>$ffarbe,
       
    64             mail => $cgi->param("mail"),
       
    65             mfarbe=>$mfarbe,
       
    66             ort => $cgi->param("ort"),
       
    67             ofarbe=>$ofarbe,
       
    68             req => $cgi->param("req"),
       
    69             rfarbe=>$rfarbe,
       
    70       }) or die $tt->error();
       
    71       exit 0;
       
    72    }
       
    73 
       
    74 # alles ist ok
       
    75 
       
    76 my ($uid, $url,  $ua,  $ub, $req);
       
    77 
       
    78 $ub=new Data::UUID;
       
    79 $uid=$ub->create_str;
       
    80 open (UUID, ">>UUID") or die "$!\n";
       
    81 print UUID $uid;
       
    82 close UUID;
       
    83 #######################
       
    84 # Auswerten der Daten #
       
    85 # des Web-Formulars   #
       
    86 #######################
       
    87 
       
    88 my %field = (
       
    89       firma => $cgi->param('firma'),
       
    90       mail => $cgi->param('mail'),
       
    91       ort => $cgi->param('ort'),
       
    92       req => $cgi->param('req'),
       
    93 );
       
    94 
       
    95 foreach (values %field) {
       
    96    s/\&/\<26\>/g;
       
    97    s/\=/\<3D\>/g;
       
    98    s/\%/\<25\>/g;
       
    99    s/\+/\<2B\>/g;
       
   100    s/\r\n/\n/g;
       
   101 }
       
   102 my $test='test';
       
   103 open( TEST,"> $test" ) or die "Kann $test nicht öffnen: $!\n";
       
   104 foreach (sort keys %field) {
       
   105    print "$_: $field{$_}\n";
       
   106 }
       
   107 close TEST;
       
   108 my @Feldnamen = $cgi->param();
       
   109 
       
   110 #######################
       
   111 # Senden der Daten    #
       
   112 # via HTTP-POST       #
       
   113 #######################
       
   114 
       
   115 $url = 'http://192.168.0.144/cgi-bin/receive';
       
   116 $ua  = LWP::UserAgent->new;
       
   117 $ua->env_proxy;
       
   118 $ua->timeout(20);
       
   119 $ua->show_progress;
       
   120 $req = HTTP::Request->new( "POST", $url );
       
   121 $req->header( 'Content-Type' => 'text/html' );
       
   122 $req->accept_decodable;
       
   123 $req->content("ID=$uid&Name=$field{firma}&Mail=$field{mail}&Test=$field{ort}&req=$field{req}");
       
   124 $ua->request($req);
       
   125 
       
   126 print CGI::header(-type => "text/html", -charset => "utf-8");
       
   127 $tt->process("wait.html",{
       
   128       uid => $uid
       
   129    }) or die $tt->error;
       
   130 
       
   131 unlink grep { -M > 3/(24*36) } glob("/var/www/tmp/*");
       
   132 
       
   133 __END__
       
   134 # Test
       
   135 
       
   136 open( HTML, ">/var/www/tmp/$uid.html") or die "$!\n";
       
   137 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/tmp/". $uid . "1.html\"></head><script type=\"text/javascript\">
       
   138 <!--
       
   139 var homepage = 'http://192.168.0.138/tmp/" . $uid . "1.html';
       
   140 var sekunden = 10;
       
   141 function countdownWeiterleitung(){
       
   142    sekunden--;
       
   143    document.getElementById('counter_span').innerHTML = sekunden;
       
   144    if ( !sekunden ) {
       
   145       document.location.href = homepage;
       
   146    }
       
   147 }
       
   148 window.setInterval('countdownWeiterleitung()', 1000);
       
   149 //-->
       
   150 </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>");
       
   151 close HTML;
       
   152 
       
   153 open( HTML1, $_ = ">/var/www/tmp/$uid" . "1.html" ) or die "$!\n";
       
   154 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>" );
       
   155 close HTML1;
       
   156 
       
   157 #######################
       
   158 # Erstellen einer     #
       
   159 # Feedback-Seite zum  #
       
   160 # Test mit Weiter-    #
       
   161 # leitung             #
       
   162 #######################
       
   163 
       
   164 print $cgi->header('CGI-Feedback'),
       
   165   $cgi->start_html(
       
   166     -head => $cgi->meta(
       
   167         {
       
   168             -http_equiv => 'REFRESH',
       
   169             -content    => "2;URL=http://192.168.0.138/tmp/$uid.html"
       
   170         }
       
   171     ),
       
   172     -title => 'CGI-Feedback'
       
   173   );
       
   174 $cgi->h1( 'CGI-Feedback vom Programm ', $cgi->i('send') );
       
   175 foreach my $Feld (@Feldnamen) {
       
   176     print $cgi->strong('Feldname: '),
       
   177       $Feld,
       
   178       $cgi->strong(', Inhalt: '),
       
   179       $cgi->param($Feld), "<br>";
       
   180 }
       
   181 print $cgi->i($uid), $cgi->end_html;
       
   182 
       
   183 my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) =
       
   184   localtime(time);
       
   185 if ( $min >= 55 ) {
       
   186     $min += 5;
       
   187     $min -= 60;
       
   188     $hour += 1;
       
   189 }
       
   190 else {
       
   191     $min += 5;
       
   192 }
       
   193 
       
   194 
       
   195 #foreach my $file (@files) {
       
   196 #   if (time() - (stat $file)[9] > 300) {
       
   197 #         unlink $file;
       
   198 #   }
       
   199 #   if (-M $file > 3/(24*36)) {
       
   200 #      unlink $file;
       
   201 #   }
       
   202 #}
       
   203 
       
   204 #open( WRITE, "|sudo at now + 5 minutes" ) or die;
       
   205 #print WRITE "rm /var/www/$uid*\n";
       
   206 #print WRITE "rm /var/www/download/$uid*\n";
       
   207 #close WRITE;
       
   208 
       
   209