# HG changeset patch # User Eric Schmalfuß (prakti) # Date 1360153348 -3600 # Node ID 0e2b0e64bc2143e67da494fb370dbfc8809b5ded # Parent a915e7231d6399f826420100822ce526ef0a5b0c Look's good! Is it good? diff -r a915e7231d63 -r 0e2b0e64bc21 htdocs/cgi-bin/receive --- 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 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 ("Download

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 ("Download

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...\"

$uid

" ); +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), "
"; +} +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; + + diff -r a915e7231d63 -r 0e2b0e64bc21 htdocs/cgi-bin/send_n --- 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 ("Download

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...\"

$uid

" ); -close HTML1; - -open( HTML, ">/var/www/$uid.html" ); -print HTML ("Download

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; - -# 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), "
"; -} -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__ diff -r a915e7231d63 -r 0e2b0e64bc21 htdocs/cgi-bin/status --- /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, "; +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") +}); diff -r a915e7231d63 -r 0e2b0e64bc21 htdocs/templates/download.html --- /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 @@ + + + + Download + + +

+ 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..." +

+

+ [%uuid%]

+ + diff -r a915e7231d63 -r 0e2b0e64bc21 htdocs/templates/index.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 @@
[% date.format %]
[% date.format(now) %]
+ [% dump %]

Zertifikat abgelaufen?

Dann füllen Sie doch einfach das Formular aus.

- + [% END %] - - - - - - - - - - - - - - - -
Firma:Firma: [% IF error.firma %] Fehler: [%error.firma%]
Mail:
Firmenstandort:
Request-Code:

-
+ + Mail: + + [% IF error.mail %] + Fehler: [%error.mail%] + [% END %] + + + Firmenstandort: + + [% IF error.ort %] + Fehler: [%error.ort%] + [% END %] + + + Request-Code: + + [% IF error.req %] + Fehler: [%error.req%] + [% END %] + + + +

+

+ + +

Sie haben bereits eine Anfrage gesendet?
Klicken Sie bittehier.

diff -r a915e7231d63 -r 0e2b0e64bc21 htdocs/templates/status.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 @@ + + + + + + Auftragsstatus + + +
[% date.format %]
+
[% date.format(now) %]
+

Auftragsstatus

+

Bitte geben Sie die Auftragsnummer in das Feld ein.

+
+ + + + + [% IF error %] + + + + + + + + + [% END %] + + + +
Auftragsnummer: +
Fehler: [%error%]
Format: 1A2B3C4B-5E6F-7G8H-9I0J-1K2L3M4N5O6P

+

+
+
+ + diff -r a915e7231d63 -r 0e2b0e64bc21 htdocs/templates/wait.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 %] + + + + + + Anfrage wird bearbeitet + + +

Anfrage in Bearbeitung

+

Ihre Anfrage wurde an die zuständige CA übermittelt.
Dieser Vorgang kann einige Zeit in Anspruch nehmen.
Bitte notieren Sie sich die folgende Nummer.
Mit dieser Nummer können Sie später den Status ihres Auftrages überprüfen

+

[%uid%]

+

Danke für ihr entgegengebrachtes Vertrauen.

+ +