Changes draft
authorEric Schmalfuß (prakti) <eric.schmalfuss@schlittermann.de>
Tue, 05 Feb 2013 08:05:54 +0100
changeset 7 2f11b54a69fe
parent 6 892a4fac1939
child 8 73d827714711
Changes
htdocs/cgi-bin/receive
htdocs/cgi-bin/send_n
htdocs/index.html
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/cgi-bin/receive	Tue Feb 05 08:05:54 2013 +0100
@@ -0,0 +1,65 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use CGI;
+use CGI::Carp qw(fatalsToBrowser);
+
+my (
+    $Daten, $value, $name, $text,  $anhang, $input,
+    $q,     $key,   $wert, $param, %result, $uid
+);
+my %Formular;
+my @Formularfelder;
+
+#$anhang = $ENV{'QUERY_STRING'};
+read( STDIN, $Daten, $ENV{'CONTENT_LENGTH'} );
+print $Daten;
+&verarbeiten;
+
+sub verarbeiten {
+    @Formularfelder = split( /&/, $Daten );
+    foreach my $Feld (@Formularfelder) {
+        ( $name, $value ) = split( /=/, $Feld );
+		$value=~ s/\<26\>/&/;
+        	$value =~ tr/+/ /;
+        	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
+        $Formular{$name} = $value;
+    }
+}
+$uid=$Formular{ID};
+chomp$uid;
+my @test=$Formular{req};
+my @schluessel = keys(%Formular);
+@schluessel = reverse @schluessel;
+my @values = values(%Formular);
+@values = reverse @values;
+
+# Folgend Test-Script
+
+open OUT,">test";
+print OUT "\@schluessel: @schluessel\n\@werte: @values\n\n";
+print OUT $Daten;
+close OUT;
+
+# Test
+$uid=$uid.'.html';
+my $x=0;
+open( OUT, ">/var/www/$uid" );
+print OUT (
+'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"><head>
+<title>CGI-Feedback</title><body><h1>CGI-Feedback vom Programm  <i>recieve</i></h1>'
+);
+foreach (@schluessel) {
+    print OUT ( '<p><B>Feldname: </B>'
+          . $schluessel[$x]
+          . ' <B> Inhalt: </B>'
+          . $values[$x]
+          . '<br>' );
+    $x++;
+}
+print OUT ('</body></html>');
+close OUT;
+sleep(180);
+system "rm /var/www/$uid";
+__END__
--- a/htdocs/cgi-bin/send_n	Tue Jan 29 15:36:24 2013 +0100
+++ b/htdocs/cgi-bin/send_n	Tue Feb 05 08:05:54 2013 +0100
@@ -6,8 +6,14 @@
 use CGI;
 use CGI::Carp qw(fatalsToBrowser);
 
-my ( $cgi, $feld, $feld1, $feld2, $feld3, $url, $ua, $req );
-my $x = 0;
+my (
+    @feld,  $uid, $cgi, $feld, $feld4, $feld1, $feld2,
+    $feld3, $get, $url, $ua,   $ub,    $req
+);
+my $x = 1;
+$uid = `uuidgen`;
+$uid =~ s/-//g;
+chomp $uid;
 $cgi = new CGI;
 
 #######################
@@ -15,13 +21,30 @@
 # des Web-Formulars   #
 #######################
 
-$feld1 = $cgi->param('Firma');	# FIXME: mueller & meier
+$feld1 = $cgi->param('Firma');    # FIXED
 $feld2 = $cgi->param('Name');
 $feld3 = $cgi->param('Test');
-
-#open( TEST, ">test" ) or die "Kann Handle nicht oeffnen!\n$!";
-#print TEST ("$feld1 ;:; $feld2 ;:; $feld3");
-#close 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();
 
 #######################
@@ -32,12 +55,54 @@
 $url = 'http://192.168.0.144/cgi-bin/receive';
 $ua  = LWP::UserAgent->new;
 $ua->env_proxy;
-$ua->timeout(10);
+$ua->timeout(20);
+$ua->show_progress;
 $req = HTTP::Request->new( "POST", $url );
 $req->header( 'Content-Type' => 'text/html' );
-$req->content("Name=$feld1&Mail=$feld2&Test=$feld3");
+$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 href="/download/'
+      . $uid
+      . '" type="application/octet-stream">Test</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 href=\""
+      . $uid
+      . "1.html\">hier</a></p></body></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\">function countDown(init){if (init || --document.getElementById( \"counter\" ).firstChild.nodeValue >0 )window.setTimeout(\"countDown()\",1000);};</script><body onload=\"countDown(true)\"><p>Ihr Download steht in k&uuml;rze bereit!<br>Sie werden in <span id=\"counter\" class=\"dd\">10</span> sekunden automatisch Weitergeleitet.<br>Sollte die automatische Weiterleitung nicht funktionieren, klicken Sie bitte <a href=\"$uid\1.html\">hier</a></p></body></html>");
+close HTML;
+
+# Test
+
+#$get = HTTP::Request->new( "GET", '192.168.0.144/cgi-bin/'.$uid );
+
 #######################
 # Erstellen einer     #
 # Feedback-Seite zum  #
@@ -50,12 +115,14 @@
     -head => $cgi->meta(
         {
             -http_equiv => 'REFRESH',
-            -content    => '5;URL=http://192.168.0.144/index.html'
+            -content    => "2;URL=http://192.168.0.138/$uid.html"
         }
     ),
     -title => 'CGI-Feedback'
-  ),
-  $cgi->h1( 'CGI-Feedback vom Programm ', $cgi->i('send') );
+  );
+
+#  $cgi->h1 ('Testen wir mal'),"<br>",$cgi->i('Countdown: ');
+$cgi->h1( 'CGI-Feedback vom Programm ', $cgi->i('send') );
 
 foreach my $Feld (@Feldnamen) {
     print $cgi->strong('Feldname: '),
@@ -63,5 +130,19 @@
       $cgi->strong(', Inhalt: '),
       $cgi->param($Feld), "<br>";
 }
-print $cgi->end_html();
+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, "|at $hour:$min") or die;
+print WRITE "rm /var/www/$uid*\n";
+print WRITE "rm /var/www/download/$uid*\n";
+close WRITE;
 __END__
--- a/htdocs/index.html	Tue Jan 29 15:36:24 2013 +0100
+++ b/htdocs/index.html	Tue Feb 05 08:05:54 2013 +0100
@@ -3,9 +3,9 @@
    <head>
       <title>SSL-Zertifikat erneuern</title>
       </head>
-      <body>
-         <h1>Zertifikat abgelaufen</h1>
-         <p>Voraussetzung ist eine Verbindung ins Internet. Es werden keine Daten gespeichert, das verarbeitende CGI-Script gibt lediglich die eingelesenen Daten aus.</p>
+      <body bgcolor="#00FFFF">
+         <h1>Zertifikat abgelaufen?</h1>
+         <p>Dann f&uuml;llen Sie doch einfach das Formular aus.</p>
          <form action="./cgi-bin/send_n">
             <table border="0" cellpadding="0" cellspacing="4">
                <tr>
@@ -20,6 +20,9 @@
                      <td align="right">Test:</td>
                      <td><input name="Test" type="text" size="40"></td>
                   </tr>
+                  <tr>
+                     <td align="right">Request-Code:<br>(optional)</td>
+                     <td><textarea name="req" cols="52" rows="10"></textarea></td>
                </table>
             <p><input type="submit" value="Formulardaten absenden"></p>
       </form>