|
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ü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>"); |
|
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ä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 |