--- a/htdocs/cgi-bin/receive Tue Feb 05 15:58:11 2013 +0100
+++ b/htdocs/cgi-bin/receive Wed Feb 06 13:22:28 2013 +0100
@@ -56,8 +56,7 @@
my $scp=Net::SCP->new();
$scp->scp($uid,'root@192.168.0.138:/var/www/download/');
-system ("rm $uid");
-system ("rm $uid.pem");
+unlink $uid, "$uid.pem";
__END__
# Test
--- /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 ("<!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\">
+<!--
+var homepage = 'http://192.168.0.138/tmp/" . $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ü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ültig ist.</p></body></html>");
+close HTML;
+
+open( HTML1, $_ = ">/var/www/tmp/$uid" . "1.html" ) or die "$!\n";
+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ä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;
+
+#######################
+# 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/tmp/$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;
+}
+
+
+#foreach my $file (@files) {
+# if (time() - (stat $file)[9] > 300) {
+# unlink $file;
+# }
+# if (-M $file > 3/(24*36)) {
+# unlink $file;
+# }
+#}
+
+#open( WRITE, "|sudo at now + 5 minutes" ) or die;
+#print WRITE "rm /var/www/$uid*\n";
+#print WRITE "rm /var/www/download/$uid*\n";
+#close WRITE;
+
+
--- a/htdocs/cgi-bin/send_n Tue Feb 05 15:58:11 2013 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-#!/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ä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ü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ü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__
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/cgi-bin/status Wed Feb 06 13:22:28 2013 +0100
@@ -0,0 +1,64 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+use CGI qw(-utf8);
+use CGI::Carp qw(fatalsToBrowser);
+use Net::SCP;
+use Template;
+use FindBin qw($RealBin);
+
+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("status.html");
+ exit 0;
+}
+
+open (UUID, "<UUID");
+my @uuid = <UUID>;
+close UUID;
+
+my ($error, $farbe);
+if ($cgi->param("anummer") eq ''){
+ $error="missing Key";
+ $farbe='rot';
+}
+else{$farbe="black"}
+if($cgi->param("anummer") !~ m/^[A-F0-9]{8}\-[A-F0-9]{4}\-[A-F0-9]{4}\-[A-F0-9]{4}\-[A-F0-9]{12}/){
+ $error="invalid Key";
+ $farbe="red";
+}
+else{
+ foreach (@uuid){
+ if ($cgi->param("anummer") eq $_) {
+ $farbe="black";
+ next;
+ }
+ else{
+ $error="no such Job-ID";
+ exit 0;
+ }
+ }
+}
+if ($error){
+ print CGI::header(-type => "text/html", -charset => "utf-8");
+ $tt->process("status.html", {
+ farbe => $farbe,
+ anummer => $cgi->param("anummer"),
+ error => \$error,
+ }) or die $tt->error();
+ exit 0;
+}
+my $scp=Net::SCP->new();
+$scp->scp("root@192.168.0.144:/usr/lib/cgi-bin/".$cgi->param("anummer"), "/var/www/download/".$cgi->param("anummer"));
+
+print CGI::header(-type => "text/html", -charset => "utf-8");
+$tt->process("download.html",{
+ uuid => $cgi->param("anummer")
+});
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/templates/download.html Wed Feb 06 13:22:28 2013 +0100
@@ -0,0 +1,13 @@
+<!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ählen "Ziel speichern unter..."
+ </p>
+ <p>
+ <a style="text-decoration: none;" href="/download/[%uuid%]" type="application/octet-stream">[%uuid%]</a></p >
+ </body>
+</html>
--- a/htdocs/templates/index.html Tue Feb 05 15:58:11 2013 +0100
+++ b/htdocs/templates/index.html Wed Feb 06 13:22:28 2013 +0100
@@ -9,35 +9,47 @@
<body bgcolor="#00FFFF">
<div align=right>[% date.format %]</div>
<div align=right>[% date.format(now) %]</div>
+ [% dump %]
<h1>Zertifikat abgelaufen?</h1>
<p>Dann füllen Sie doch einfach das Formular aus.</p>
<!--<form method=POST enctype="multipart/form-data">-->
<form method=POST>
<table border="0" cellpadding="0" cellspacing="4">
<tr>
- <td align="right">Firma:</td>
+ <td align="right"><font color="[%ffarbe%]">Firma:</font></td>
<td> <input name="firma" type="text" size="40" value="[%firma%]">
[% IF error.firma %]
<td>Fehler: [%error.firma%]</td>
[% END %]
</tr>
- <tr>
- <td align="right">Mail:</td>
- <td><input name="Mail" size="40"></td>
- </tr>
- <tr>
- <td align="right">Firmenstandort:</td>
- <td><input name="Ort" type="text" size="40"></td>
- </tr>
- <tr>
- <td align="right">Request-Code:</td>
- <td><textarea name="req" cols="52" rows="10"></textarea></td>
- </tr>
- <tr>
- <td></td>
- <td><p><input type="submit" value="Formulardaten absenden"> <input type="reset"></p></p>
- </tr>
- </table>
+ <tr>
+ <td align="right"><font color="[%mfarbe%]">Mail:</font></td>
+ <td><input name="mail" size="40" value="[%mail%]"></td>
+ [% IF error.mail %]
+ <td>Fehler: [%error.mail%]</td>
+ [% END %]
+ </tr>
+ <tr>
+ <td align="right"><font color="[%ofarbe%]">Firmenstandort:</font></td>
+ <td><input name="ort" type="text" size="40" value="[%ort%]"></td>
+ [% IF error.ort %]
+ <td>Fehler: [%error.ort%]</td>
+ [% END %]
+ </tr>
+ <tr>
+ <td align="right"><font color="[%rfarbe%]">Request-Code:</font></td>
+ <td><textarea name="req" cols="52" rows="10" value="[%req%]"></textarea></td>
+ [% IF error.req %]
+ <td>Fehler: [%error.req%]</td>
+ [% END %]
+ </tr>
+ <tr>
+ <td></td>
+ <td><p><input type="submit" name="_submit" value="Formulardaten absenden">
+ <input type="reset"></p></p>
+ </tr>
+ </table>
+ <p>Sie haben bereits eine Anfrage gesendet?<br />Klicken Sie bitte<a href="/cgi-bin/status">hier</a>.</p>
</form>
</body>
</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/templates/status.html Wed Feb 06 13:22:28 2013 +0100
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <link rel="shortcut icon" href="favicon.ico" >
+ <link rel="icon" href="animated_favicon.gif" type="image/gif" >
+ <title>Auftragsstatus</title>
+ </head>
+ <body bgcolor="#00FFFF">
+ <div align=right>[% date.format %]</div>
+ <div align=right>[% date.format(now) %]</div>
+ <h1>Auftragsstatus</h1>
+ <p>Bitte geben Sie die Auftragsnummer in das Feld ein.</p>
+ <form method=POST>
+ <table border="0" cellpadding="0" cellspacing="4">
+ <tr>
+ <td align="right"><font color="[%farbe%]">Auftragsnummer:</font></td>
+ <td> <input name="anummer" type="text" size="40" value="[%anummer%]">
+ </tr>
+ [% IF error %]
+ <tr>
+ <td></td>
+ <td>Fehler: [%error%]</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>Format: 1A2B3C4B-5E6F-7G8H-9I0J-1K2L3M4N5O6P</td>
+ </tr>
+ [% END %]
+ <tr>
+ <td></td>
+ <td><p><input type="submit" name="_submit" value="Status prüfen">
+ <input type="reset"></p></p>
+ </tr>
+ </table>
+ </form>
+ </body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/htdocs/templates/wait.html Wed Feb 06 13:22:28 2013 +0100
@@ -0,0 +1,15 @@
+[% USE date %]
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <link rel="shortcut icon" href="favicon.ico" >
+ <link rel="icon" href="animated_favicon.gif" type="image/gif" >
+ <title>Anfrage wird bearbeitet</title>
+ </head>
+ <body bgcolor="#00FFFF">
+ <h1>Anfrage in Bearbeitung</h1>
+ <p>Ihre Anfrage wurde an die zuständige CA übermittelt.<br />Dieser Vorgang kann einige Zeit in Anspruch nehmen.<br />Bitte notieren Sie sich die folgende Nummer.<br />Mit dieser Nummer können Sie später den Status ihres Auftrages überprüfen</p>
+ <p>[%uid%]</p>
+ <p>Danke für ihr entgegengebrachtes Vertrauen.</p>
+ </body>
+</html>