Lustra łazienkowe z oświetleniem LED, lustra z półką i oświetleniem, lustra w ramach metalowych, drewnianych. Producent od 1982 roku.
{ "environ" : { "CONTEXT_DOCUMENT_ROOT" : "/root/Omega/Domains/Produkty_Typowe/Lustra/Portal", "CONTEXT_PREFIX" : "", "DOCUMENT_ROOT" : "/root/Omega/Domains/Produkty_Typowe/Lustra/Portal", "GATEWAY_INTERFACE" : "CGI/1.1", "HTTPS" : "on", "HTTP_ACCEPT" : "*/*", "HTTP_CONNECTION" : "close", "HTTP_HOST" : "www.lustra.pl", "HTTP_USER_AGENT" : "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "HTTP_X_FORWARDED_PROTO" : "https", "HTTP_X_REAL_IP" : "18.118.226.105", "LANG" : "pl_PL.UTF-8", "PATH" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "QUERY_STRING" : "", "REMOTE_ADDR" : "18.118.226.105", "REMOTE_PORT" : "52022", "REQUEST_METHOD" : "GET", "REQUEST_SCHEME" : "https", "REQUEST_URI" : "/cgitest.pl", "SCRIPT_FILENAME" : "/root/Omega/Domains/Produkty_Typowe/Lustra/Portal/cgitest.pl", "SCRIPT_NAME" : "/cgitest.pl", "SCRIPT_URI" : "https://www.lustra.pl/cgitest.pl", "SCRIPT_URL" : "/cgitest.pl", "SERVER_ADDR" : "192.168.8.1", "SERVER_ADMIN" : "[no address given]", "SERVER_NAME" : "www.lustra.pl", "SERVER_PORT" : "443", "SERVER_PROTOCOL" : "HTTP/1.0", "SERVER_SIGNATURE" : "", "SERVER_SOFTWARE" : "Apache/2.4.57 (Debian) OpenSSL/3.0.11" }, "headers" : { "HTTP_ACCEPT" : "*/*", "HTTP_CONNECTION" : "close", "HTTP_HOST" : "www.lustra.pl", "HTTP_USER_AGENT" : "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "HTTP_X_FORWARDED_PROTO" : "https", "HTTP_X_REAL_IP" : "18.118.226.105" }, "input" : "", "params" : {} } standard input:
Source code: #!/usr/bin/perl -CSDA # read STDIN, and put STDIN back on input; trick from # https://stackoverflow.com/questions/908113/how-can-i-get-the-entire-request-body-with-cgi-pm use IO::Handle; use IO::Scalar; STDIN->blocking(1); # ensure to read everything my $inp = ''; { local $/; $inp = <STDIN>; my $s; tie *STDIN, 'IO::Scalar', \$s; print STDIN $inp; tied(*STDIN)->setpos(0); } # end of trick use utf8; use CGI; use JSON; use Path::Tiny; use Time::Piece; use Encode; my $cgi = CGI->new; # dane z formularza CGI w trybie "multipart/form-data; boundary=..." są przekazywane wprost na standardowym wejściu, # czyli przez opcję "-CSDA" są już zdekodowane; wszystkie pozostałe przypadki kodują dane w postaci "url encoded", czyli # tam gdzie są procenty, czyli po dekodowaniu otrzymuję surowe dane, które muszę ręcznie odkodować sub decodedForSomeTypes { $ENV{CONTENT_TYPE} =~ /boundary/ ? $_[0] : decode_utf8($_[0]); } my $params = +{ map { $_ => decodedForSomeTypes(scalar $cgi->param($_)) } $cgi->param() }; my $out = JSON->new->pretty->canonical->encode({ headers => { map { $_ => $cgi->http($_) } $cgi->http() }, params => $params, environ => { map { ($_, $ENV{$_}) } # grep { ! /ROOT|PATH|REMOTE|FILENAME|SERVER|SSL/ } keys %ENV }, input => $inp, }); path(localtime->strftime("/tmp/cgitest %Y-%m-%d %H:%M:%S $$"))->spew_utf8($out); print <<HTML; Content-Type: text/html; charset=utf-8 <!DOCTYPE HTML> <html lang="pl-PL"> <!-- W3 validator kazał dopisać język --> <head> <meta charset="utf-8"> <!-- trzeba dodać aby było responsive, zresztą i tak używam dużo flex --> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"/> <style> pre { white-space: pre-wrap; color: darkblue; } form { margin: 2rem 0; padding: 0.3rem; border: 1px dashed grey; } img { max-width: 10rem; } </style> </head> </body> <body> <a href="https://www.lustra.pl" alt="lustra ledowe z oświetleniem, bezpieczne lustra łazienkowe z oświetleniem LED, sklep z lustrami, lustra w ramach do przedpokoju"> <img src="https://www.lustra.pl/lustra_pl_logo.png" alt="lustra łazienkowe ledowe, lustra w ramach, okrągłe lustra, lustra do salonu"> <h1>lustra.pl -- sklep z lustrami</h1> <p>Lustra łazienkowe z oświetleniem LED, lustra z półką i oświetleniem, lustra w ramach metalowych, drewnianych. Producent od 1982 roku.</p> </a> <pre> $out standard input: $inp </pre> <form method="get"> <input type="submit"> <input name="about" value="method get"> <input name="myname" value="Alfa"> <input name="myage" value="32"> <input name="unicode-test" value="ĄĆĘŁŃÓŚŹŹŻ-ąćęłńóśźż-πœ©ß←↓→əŋæð„”µ≤≥»«§½€¢³²≠"> </form> <form method="post"> <input type="submit"> <input name="about" value="method post"> <input name="myname" value="Beta"> <input name="myage" value="44"> <input name="unicode-test" value="ĄĆĘŁŃÓŚŹŹŻ-ąćęłńóśźż-πœ©ß←↓→əŋæð„”µ≤≥»«§½€¢³²≠"> </form> <form method="post" enctype="application/x-www-form-urlencoded"> <input type="submit"> <input name="about" value="method post, x-www-form-urlencoded"> <input name="myname" value="Gamma"> <input name="myage" value="12"> <input name="unicode-test" value="ĄĆĘŁŃÓŚŹŹŻ-ąćęłńóśźż-πœ©ß←↓→əŋæð„”µ≤≥»«§½€¢³²≠"> </form> <form method="post" enctype="multipart/form-data"> <input type="submit"> <input name="about" value="method post, multipart/form-data"> <input name="myname" value="Teta"> <input name="myage" value="66"> <input name="unicode-test" value="ĄĆĘŁŃÓŚŹŹŻ-ąćęłńóśźż-πœ©ß←↓→əŋæð„”µ≤≥»«§½€¢³²≠"> </form> <form method="post" enctype="text-plain"> <input type="submit"> <input name="about" value="method post, text-plain"> <input name="myname" value="Omega"> <input name="myage" value="45"> <input name="unicode-test" value="ĄĆĘŁŃÓŚŹŹŻ-ąćęłńóśźż-πœ©ß←↓→əŋæð„”µ≤≥»«§½€¢³²≠"> </form> <pre> Source code: @{[ ($0 =~ /cgitest[0-9]?.pl/ ? (scalar `cat $0`) : "") =~ s/&/&/gr =~ s/"/"/gr =~ s/</</gr =~ s/>/>/gr ]} </pre> </body> </html> HTML