Added CGI support (experimenting) + whoami.cgi
This commit is contained in:
parent
c41a2792c0
commit
1ea5e007fa
147
cgi-bin/whoami.cgi
Executable file
147
cgi-bin/whoami.cgi
Executable file
|
@ -0,0 +1,147 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
# Reflection page CGI program
|
||||
# Daniel Bowling <swaggboi@slackware.uk>
|
||||
# Oct 2020
|
||||
|
||||
require 'cgi'
|
||||
require 'ipaddress'
|
||||
|
||||
# Create CGI object
|
||||
cgi = CGI.new('html4')
|
||||
|
||||
# Style sheet hash
|
||||
styling = {
|
||||
rel: 'stylesheet',
|
||||
type: 'text/css',
|
||||
href: '/css/swagg.css'
|
||||
}
|
||||
|
||||
# Div hashes
|
||||
inner = { class: 'inner' }
|
||||
outer = { class: 'outer' }
|
||||
|
||||
# CGI Environment variables
|
||||
referer = cgi.referer || nil
|
||||
user_agent = cgi.user_agent || nil
|
||||
remote_addr = ENV['HTTP_X_FORWARDED_FOR'] || cgi.remote_addr || nil
|
||||
remote_port = ENV['HTTP_X_FORWARDED_PORT'] || ENV['REMOTE_PORT'] || nil
|
||||
request_method = cgi.request_method || nil
|
||||
server_admin = ENV['SERVER_ADMIN'] || nil
|
||||
server_protocol = cgi.server_protocol || nil
|
||||
server_software = cgi.server_software || nil
|
||||
|
||||
# Environment hash
|
||||
cgi_env = {
|
||||
'referer' => referer,
|
||||
'string' => user_agent,
|
||||
'address' => remote_addr,
|
||||
'port' => remote_port,
|
||||
'method' => request_method,
|
||||
'webmaster' => server_admin,
|
||||
'protocol' => server_protocol,
|
||||
'server' => server_software
|
||||
}
|
||||
|
||||
# Footer
|
||||
footer = "<footer>Return to #{cgi.a('/') { 'homepage' }}</footer>\n"
|
||||
# Easter egg hash
|
||||
easter_egg = {
|
||||
src: '/Pictures/oprahv6.jpg',
|
||||
alt: 'Oprah screaming that everyone gets a /48',
|
||||
width: 400,
|
||||
height: 300
|
||||
}
|
||||
# Easter egg for IPv6
|
||||
footer =
|
||||
if IPAddress.valid_ipv6?(cgi_env['address'])
|
||||
cgi.img(easter_egg) + cgi.br + "\n" + cgi.br + "\n" + footer
|
||||
else
|
||||
'<iframe width="560"
|
||||
height="315"
|
||||
src="https://www.youtube-nocookie.com/embed/QOQ2JxIddzw"
|
||||
frameborder="0" allow="accelerometer;
|
||||
autoplay;
|
||||
clipboard-write;
|
||||
encrypted-media;
|
||||
gyroscope;
|
||||
picture-in-picture"
|
||||
allowfullscreen>
|
||||
</iframe>' + cgi.br + "\n" + footer
|
||||
end
|
||||
|
||||
# Begin HTML output
|
||||
cgi.out do
|
||||
# Open html tag
|
||||
"\n" + cgi.html do
|
||||
# Open head tag
|
||||
"\n" + cgi.head do
|
||||
# Title tag
|
||||
"\n" + cgi.title { 'Reflection Page' } + "\n" +
|
||||
# Link tag
|
||||
cgi.link(styling) + "\n"
|
||||
# Close head tag
|
||||
end + "\n" +
|
||||
# Open body tag
|
||||
cgi.body do
|
||||
"\n" + cgi.div(outer) do
|
||||
# H1 heading
|
||||
"\n" + cgi.h1 { 'Swagg::Net Reflection Page' }
|
||||
end + "\n" +
|
||||
# Open div tag (class="inner")
|
||||
cgi.div(inner) do
|
||||
# Begin table
|
||||
"\n" + cgi.table do
|
||||
# Referer row
|
||||
"\n" + cgi.tr do
|
||||
"\n" + cgi.th { 'Your referer: ' } + "\n" +
|
||||
cgi.td { cgi_env['referer'] } + "\n"
|
||||
end +
|
||||
# User-agent string row
|
||||
"\n" + cgi.tr do
|
||||
"\n" + cgi.th { 'Your user-agent string: ' } + "\n" +
|
||||
cgi.td { cgi_env['string'] } + "\n"
|
||||
end +
|
||||
# IP address row
|
||||
"\n" + cgi.tr do
|
||||
"\n" + cgi.th { 'Your IP address: ' } + "\n" +
|
||||
cgi.td { cgi_env['address'] } + "\n"
|
||||
end +
|
||||
# Port row
|
||||
"\n" + cgi.tr do
|
||||
"\n" + cgi.th { 'Your TCP port: ' } + "\n" +
|
||||
cgi.td { cgi_env['port'] } + "\n"
|
||||
end +
|
||||
# Request method row
|
||||
"\n" + cgi.tr do
|
||||
"\n" + cgi.th { 'Your request method: ' } + "\n" +
|
||||
cgi.td { cgi_env['method'] } + "\n"
|
||||
end +
|
||||
# Webmaster row
|
||||
"\n" + cgi.tr do
|
||||
"\n" + cgi.th { 'My webmaster: ' } + "\n" +
|
||||
cgi.td { cgi_env['webmaster'] } + "\n"
|
||||
end +
|
||||
# Server protocol row
|
||||
"\n" + cgi.tr do
|
||||
"\n" + cgi.th { 'My protocol: ' } + "\n" +
|
||||
cgi.td { cgi_env['protocol'] } + "\n"
|
||||
end +
|
||||
# Server software row
|
||||
"\n" + cgi.tr do
|
||||
"\n" + cgi.th { 'My server: ' } + "\n" +
|
||||
cgi.td { cgi_env['server'] } + "\n"
|
||||
end + "\n"
|
||||
# End table
|
||||
end + "\n" +
|
||||
cgi.br + "\n" +
|
||||
# Footer
|
||||
footer
|
||||
# Close div tag (class="inner")
|
||||
end + "\n"
|
||||
# Close body tag
|
||||
end + "\n"
|
||||
# Close html tag
|
||||
end + "\n"
|
||||
# End HTML output
|
||||
end
|
|
@ -74,5 +74,8 @@ get '/ula6' => sub {
|
|||
$c->render(ula6 => $ula6);
|
||||
};
|
||||
|
||||
# whoami.cgi script
|
||||
plugin CGI => ['/cgi-bin/whoami' => './cgi-bin/whoami.cgi'];
|
||||
|
||||
# Send it
|
||||
app->start();
|
||||
|
|
Loading…
Reference in a new issue