2024 Initial commit.

This commit is contained in:
Johannes Findeisen 2024-02-06 17:24:55 +01:00
commit 74e93f779a
236 changed files with 5835 additions and 37368 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
.jekyll-cache/
.jekyll-metadata

9
LICENSE Normal file
View file

@ -0,0 +1,9 @@
MIT License
Copyright (c) 2024 hanez
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

48
Makefile Normal file
View file

@ -0,0 +1,48 @@
run:
jekyll s --incremental --drafts
runclean:
rm -rf ./_site/*
jekyll s --incremental --drafts
build:
jekyll b --incremental
release:
jekyll b --incremental
find ./_site -name "*.html" -exec minify --html-keep-document-tags --html-keep-end-tags -o {} {} \;
find ./_site -name "*.css" -exec minify --css-precision 0 -o {} {} \;
find ./_site -name "*.xml" -exec minify -o {} {} \;
make sync
releaseraw:
make clean
jekyll b --incremental
make sync
releaseclean:
jekyll b --incremental
make syncclean
sync:
rsync -avr --delete --delete-excluded --exclude=build.log --exclude=Makefile ./_site/ xw3.org:/var/www/xw3.org/www/htdocs/
scp -r .well-known xw3.org:/var/www/xw3.org/www/htdocs/
syncclean:
rsync -avr --delete --delete-excluded --exclude=Makefile ./_site/ xw3.org:/var/www/xw3.org/www/htdocs/
scp -r .well-known xw3.org:/var/www/xw3.org/www/htdocs/
all:
make release
freshrelease:
rm -rf _site/*
make release
freshrun:
rm -rf _site/*
make run
clean:
rm -rf _site/*

2
README.md Normal file
View file

@ -0,0 +1,2 @@
# xw3

64
_config.yml Normal file
View file

@ -0,0 +1,64 @@
title: "[xw3.org]"
org: xw3.org
subtitle: ...
email: mail@xw3.org
description: A static HTML and CGI based website...
baseurl: ""
url: https://xw3.org
url_short: xw3.org
lang: en
os: GNU/Linux
timezone: CET/CEST
challenge_error: Invalid challenge result! Please try again... :(
mail_thank_you: Thank you for contacting me... :)
username: xw3
cookiebanner_text: This website uses cookies to provide you with a better online experience. Leave this site if you don't accept the usage of cookies. No tracking cookies are being used! To find out more, please visit this website's
cookiebanner_dismiss_text: Got it!
cookiebanner_link_text: Privacy Policy
cookiebanner_link: /privacy/
paginate: 3
paginate_path: /:num/
permalink: /:year/:month/:day/:title/
markdown: kramdown
tocTopTag: h2
anchorPrefix: ""
showToggleButton: false
contentsLabel: TOC
exclude:
- .idea/
- bin/
- venv/
- .project
- build.log
- Makefile
- README.md
- requirements.txt
category_archive:
path: /category/
plugins:
- jekyll-paginate
- jekyll-sitemap
- jekyll-admin
- jekyll-toc
defaults:
-
scope:
path: "cgi/*"
values:
sitemap: false
-
scope:
path: "files/*"
values:
sitemap: false

0
_drafts/.gitkeep Normal file
View file

13
_includes/footer.html Normal file
View file

@ -0,0 +1,13 @@
<footer class="site-footer">
<div class="wrapper">
<div class="footer-col-wrapper">
<p style="text-align:center;">
Copyright &copy; {{ site.time | date: "%Y" }} - {{ site.title }} -
<a href="/feed.xml" class="rss"><i class="fa fa-rss" aria-hidden="true"></i><span style="display:none;"> RSS Feed</span></a> -
<a href="https://git.xw3.org/xw3" class="git"><i class="fa fa-git" aria-hidden="true"></i><span style="display:none;"> Git repositories</span></a> -
<a href="https://wiki.xw3.org/start" class="book"><i class="fa fa-book" aria-hidden="true"></i><span style="display:none;"> Wiki</span></a>
</p>
</div>
</div>
</footer>

18
_includes/head.html Normal file
View file

@ -0,0 +1,18 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ site.url_short }}:{{ page.title }}</title>
<meta name="author" content="{{ site.org }} ">
<meta name="generator" content="xw3.org">
<meta name="robots" content="index,follow">
<meta name="revisit-after" content="7 days">
<meta name="description" content="{% if page.description %}{{ page.description | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description | strip_html | strip_newlines | truncate: 160 }}{% endif %}">
{% if page.tags %}<meta name="keywords" content="{{ page.tags | join: ',' }}">{% endif %}
<link rel="shortcut icon" type="image/png" href="/favicon.png">
<link rel="stylesheet" type="text/css" href="/css/main.css">
<link rel="stylesheet" type="text/css" href="/css/fork-awesome.min.css">
<link rel="stylesheet" type="text/css" href="/css/cookieconsent.min.css" />
<script src="/js/jquery-3.6.4.min.js" charset="utf-8"></script>
<link rel="canonical" href="{{ site.url }}{{ page.url | replace:'index.html','' }}">
<link rel="alternate" type="application/rss+xml" title="RSS Feed - {{ site.title }}" href="{{ site.url }}/feed.xml">
</head>

16
_includes/header.html Normal file
View file

@ -0,0 +1,16 @@
<header class="site-header">
<div class="wrapper">
<!--<a class="site-title" href="/"><img width="80" src="/images/logo.png" alt="{{ site.title }}"></a>-->
<nav class="site-nav">
<a href="#" class="menu-icon"><span class="fa fa-bars" aria-hidden="true"></span></a>
<div class="trigger">
<ul style="list-style: none;">
<li><a class="page-link" href="/" style="text-decoration: none;">/</a></li>
<li><a class="page-link" href="/about/" style="text-decoration: none;">/about/</a></li>
<li><a class="page-link" href="/contact/" style="text-decoration: none;">/contact/</a></li>
<li><a class="page-link" href="/tools/" style="text-decoration: none;">/tools/</a></li>
</ul>
</div>
</nav>
</div>
</header>

39
_layouts/default.html Normal file
View file

@ -0,0 +1,39 @@
---
layout:
---
<!DOCTYPE html>
<html lang="{% if page.lang %}{{ page.lang }}{% else %}{{ site.lang }}{% endif %}" id="top">
{% include head.html %}
<body>
<div class="site">
<div id="loader" class="lds-dual-ring hidden overlay"></div>
{% include header.html %}
<div class="page-content">
<div class="wrapper">
{{ content }}
</div>
</div>
{% include footer.html %}
</div>
<p style="text-align: center; color: #e8e8e8; font-size: 12px;">
<span id="uptime">NULL</span><br>
Page generated at: {{ site.time | date: "%b %-d, %Y" }} ({{ site.timezone }}) using Jekyll on {{ site.os }} @jupiter<br>
Powered by: <span id="uname">NULL</span>
</p>
<a href="#top" id="topbutton"><span></span></a>
<script src="/js/cookieconsent.min.js" data-cfasync="false"></script>
<!-- Source for configuration below: https://www.osano.com/cookieconsent/download/ - https://www.osano.com/cookieconsent/documentation/compliance/ -->
<script>
$(document).ready(function(){
$("#uname").load("/cgi/uname/");
$("#uptime").load("/cgi/uptime/");
});
</script>
<script>window.cookieconsent.initialise({"palette":{"popup":{"background":"#000","text":"#e8e8e8"},"button":{"background":"#bc6c21"}},"theme":"classic","position":"bottom","static":false,"content":{"message":"{{ site.cookiebanner_text }} ","dismiss":"{{ site.cookiebanner_dismiss_text }}","link":"{{ site.cookiebanner_link_text }}.","href":"{{ site.cookiebanner_link }}"}});</script>
</body>
</html>

14
_layouts/page.html Normal file
View file

@ -0,0 +1,14 @@
---
layout: default
---
<div class="post">
<header class="post-header">
<h1 class="post-title" id="terminal">{{ site.url_short }}:{{ page.title }}</h1>
{% if page.noDate != true %}<p class="post-meta">{% if page.date %}{{ page.date | date: "%b %-d, %Y" }} - {% endif %}
Updated: {{ page.path | file_date | date: "%b %-d, %Y" }} ({{ site.timezone }})</p>{% endif %}
{% if page.subtitle %}<p>{{ page.subtitle }}</p>{% endif %}
</header>
<article class="post-content">
{{ content | toc_generate }}
</article>
</div>

16
_layouts/post.html Normal file
View file

@ -0,0 +1,16 @@
---
layout: default
---
<div class="post">
<header class="post-header">
<h1 class="post-title" id="terminal">{{ page.title }}</h1>
<p class="post-meta">{% if page.date %}{{ page.date | date: "%b %-d, %Y" }}{% endif %}
{% if page.date and page.date_updated %} - {% endif %}
{% if page.date_updated %}Updated: {{ page.date_updated | date: "%b %-d, %Y" }}{% endif %}
{% if page.date or page.date_updated %} ({{ site.timezone }}){% endif %}</p>
</header>
<article class="post-content">
{{ content }}
</article>
</div>

0
_plugins/.gitkeep Normal file
View file

View file

@ -0,0 +1,82 @@
require 'packr'
module Jekyll
module Compressor
@@mtimes = {}
def compress_html(content)
content.gsub(/(?>[^\S ]\s*|\s{2,})(?=(?:(?:[^<]++|<(?!\/?(?:textarea|pre)\b))*+)(?:<(?>textarea|pre)\b|\z))/ix, '')
end
# Really writing process
def output_file(dest, content)
FileUtils.mkdir_p(File.dirname(dest))
File.open(dest, 'w') do |f|
f.write(content)
end
end
def output_html(dest, content)
path = self.destination(dest)
self.output_file(path, compress_html(content))
end
def output_js(dest, content)
self.output_file(dest, Packr.pack(content,
:shrink_vars => true
))
end
end
class Post
include Compressor
def write(dest)
self.output_html(dest, self.output)
end
end
class Page
include Compressor
def write(dest)
self.output_html(dest, self.output)
end
end
class StaticFile
include Compressor
def write(dest)
dest_path = self.destination(dest)
return false if File.exist?(dest_path) and !self.modified?
@@mtimes[path] = mtime
case File.extname(dest_path)
when '.html'
self.output_html(dest_path, File.read(path))
when '.js'
self.output_js(dest_path, File.read(path))
else
FileUtils.mkdir_p(File.dirname(dest_path))
FileUtils.cp(path, dest_path)
end
true
end
end
end

12
_plugins/myFilters.rb Normal file
View file

@ -0,0 +1,12 @@
# https://stackoverflow.com/questions/14978474/how-to-show-the-modification-date-of-a-file-in-jekyll
module Jekyll
module MyFilters
def file_date(input)
File.mtime(input)
end
end
end
Liquid::Template.register_filter(Jekyll::MyFilters)

144
_plugins/tocGenerator.rb Normal file
View file

@ -0,0 +1,144 @@
# This code was originally written by Davide Ficano:
# https://github.com/dafi/jekyll-toc-generator
# Thank you for that!
require 'nokogiri'
require 'digest/md5'
module Jekyll
module TOCGenerator
TOGGLE_HTML = '<div id="toctitle"><h2>%1</h2>%2</div>'
TOC_CONTAINER_HTML = '<div id="toc-container">%1<ul>%2</ul></div>'
def toc_generate(html)
# No Toc can be specified on every single page
# For example the index page has no table of contents
no_toc = @context.environments.first["page"]["noToc"] || false;
if no_toc
return html
end
config = @context.registers[:site].config
# Minimum number of items needed to show TOC, default 0 (0 means no minimum)
min_items_to_show_toc = config["minItemsToShowToc"] || 0
anchor_prefix = config["anchorPrefix"] || 'tocAnchor-'
# better for traditional page seo, commonlly use h1 as title
toc_top_tag = config["tocTopTag"] || 'h1'
toc_top_tag = toc_top_tag.gsub(/h/, '').to_i
if toc_top_tag > 5
toc_top_tag = 5
end
toc_sec_tag = toc_top_tag + 1
toc_top_tag = "h#{toc_top_tag}"
toc_sec_tag = "h#{toc_sec_tag}"
# Text labels
contents_label = config["contentsLabel"] || 'Contents'
hide_label = config["hideLabel"] || 'hide'
show_label = config["showLabel"] || 'show'
show_toggle_button = config["showToggleButton"]
toc_html = ''
toc_level = 1
toc_section = 1
item_number = 1
level_html = ''
doc = Nokogiri::HTML(html)
# Find H1 tag and all its H2 siblings until next H1
doc.css(toc_top_tag).each do |tag|
# TODO This XPATH expression can greatly improved
ct = tag.xpath("count(following-sibling::#{toc_top_tag})")
sects = tag.xpath("following-sibling::#{toc_sec_tag}[count(following-sibling::#{toc_top_tag})=#{ct}]")
level_html = '';
inner_section = 0;
sects.map.each do |sect|
inner_section += 1;
#anchor_id = anchor_prefix + toc_level.to_s + '-' + toc_section.to_s + '-' + inner_section.to_s
anchor_id = anchor_prefix + Digest::SHA256.hexdigest(tag.text + sect.text);
anchor_id = anchor_id[0..7];
sect['id'] = "#{anchor_id}"
level_html += create_level_html(anchor_id,
toc_level + 1,
toc_section + inner_section,
item_number.to_s + '.' + inner_section.to_s,
sect.text,
'')
end
if level_html.length > 0
level_html = '<ul>' + level_html + '</ul>';
end
#anchor_id = anchor_prefix + toc_level.to_s + '-' + toc_section.to_s;
anchor_id = anchor_prefix + Digest::SHA256.hexdigest(tag.text);
anchor_id = anchor_id[0..7];
tag['id'] = "#{anchor_id}"
toc_html += create_level_html(anchor_id,
toc_level,
toc_section,
item_number,
tag.text,
level_html);
toc_section += 1 + inner_section;
item_number += 1;
end
#toc_html += create_level_html("ccba53",
# 1,
# toc_section,
# item_number,
# "Comments",
# "");
# for convenience item_number starts from 1
# so we decrement it to obtain the index count
toc_index_count = item_number - 1
if toc_html.length > 0
hide_html = '';
if (show_toggle_button)
hide_html = HIDE_HTML.gsub('%1', hide_label)
end
if min_items_to_show_toc <= toc_index_count
replaced_toggle_html = TOGGLE_HTML
.gsub('%1', contents_label)
.gsub('%2', hide_html);
toc_table = TOC_CONTAINER_HTML
.gsub('%1', replaced_toggle_html)
.gsub('%2', toc_html);
doc.css('body').children.before(toc_table)
end
doc.css('body').children.to_xhtml(indent:3, indent_text:" ")
else
return html
end
end
private
def create_level_html(anchor_id, toc_level, toc_section, tocNumber, tocText, tocInner)
link = '<a href="#%1"><span class="tocnumber">%2</span> <span class="toctext">%3</span></a>%4'
.gsub('%1', anchor_id.to_s)
.gsub('%2', tocNumber.to_s)
.gsub('%3', tocText)
.gsub('%4', tocInner ? tocInner : '');
'<li class="toc_level-%1 toc_section-%2">%3</li>'
.gsub('%1', toc_level.to_s)
.gsub('%2', toc_section.to_s)
.gsub('%3', link)
end
end
end
Liquid::Template.register_filter(Jekyll::TOCGenerator)

View file

@ -0,0 +1,20 @@
---
layout: post
published: true
title: Welcome
date: 2024-02-06
date_updated:
categories:
- news
- project
tags:
- xw3
- cgi
- static
- dynamic
- jekyll
- pinned
---
This is a fun project at the moment... no content actually!

625
_sass/_base.scss Normal file
View file

@ -0,0 +1,625 @@
@font-face {
font-family: 'OpenSans-Regular';
src: url('../fonts/OpenSans-Regular.woff') format('woff');
}
@font-face {
font-family: 'ForkAwesome';
src: url('../fonts/forkawesome-webfont.woff') format('woff');
}
@font-face {
font-family: 'Graph-35-pix';
src: url('../fonts/Graph-35-pix.ttf');
}
@font-face {
font-family: 'CourierPrimeSans';
src: url('../fonts/Courier-Prime-Sans.ttf');
}
@font-face {
font-family: 'Glass-TTY-VT220';
src: url('../fonts/Glass_TTY_VT220.ttf');
}
html {
}
body, h1, h2, h3, h4, h5, h6,
p, blockquote, pre, hr,
dl, dd, ol, ul, figure {
margin: 0;
padding: 0;
}
body {
font-family: $base-font-family;
font-size: $base-font-size;
line-height: $base-line-height;
font-weight: 300;
color: $text-color;
background-color: $background-color;
}
h1, h2, h3, h4, h5, h6,
p, blockquote, pre,
ul, ol, dl, figure,
%vertical-rhythm {
margin-bottom: calc($spacing-unit / 2);
}
h1, h2, h3, h4, h5, h6 {
color: $headline-color;
}
.blinky {
animation: blinker 4s linear infinite;
color: #ffffff;
font-family: "Graph-35-pix";
font-size: 22px;
text-decoration: none;
}
@keyframes blinker {
50% {
opacity: 0;
}
}
h1 {
font-family: "Graph-35-pix";
font-size: 22px;
}
#terminal::before {
content: "";
}
@media (prefers-reduced-motion: no-preference) {
@keyframes flash {
50% { opacity: 0; }
}
@keyframes reveal {
from { width: 2em; }
to { width: 100%; }
}
#terminal {
overflow: hidden;
white-space: nowrap;
animation: reveal 6s linear;
text-overflow: "▉";
}
#terminal::after {
content: "▉";
animation: flash 1.5s step-end infinite;
}
}
h2 {
font-family: "Graph-35-pix";
font-size: 18px;
padding-bottom: 4px;
padding-top: 8px;
padding-left: 8px;
margin-top: 14px;
background-color: $grey-color-light;
border: 1px solid $grey-color;
//border-radius: 12px;
> a,
a:link,
a:visited {
text-decoration: none;
}
}
h3 {
padding-top: 8px;
}
img {
max-width: 100%;
vertical-align: middle;
}
img.l {
border: 0;
float:left;
margin: 6px 16px 0 0;
padding: 0;
}
img.r {
border: 0;
float: right;
margin: 6px 0 0 16px;
padding: 0;
}
img.x {
max-width: 99.8%;
border: 1px solid #000;
//border-radius: 12px 12px;
}
ul, ol {
margin-left: calc($spacing-unit + 20px);
}
li {
> ul,
> ol {
margin-bottom: 0;
}
}
a {
color: $brand-color;
}
a:link {
text-decoration: underline;
}
a:visited {
color: $brand-color;
text-decoration: underline;
}
a:focus,
a:hover {
color: $hover-color;
text-decoration: none;
text-shadow: $hover-color 0px 0px 6px;
}
a:active {
color: $hover-color;
text-decoration: none;
}
p {
text-align: justify;
}
blockquote {
color: $grey-color;
border-left: 4px solid $grey-color-light;
padding-left: calc($spacing-unit / 2);
font-size: 18px;
letter-spacing: -1px;
font-style: italic;
> :last-child {
margin-bottom: 0;
}
}
pre {
counter-reset: line;
-moz-tab-size: 2;
tab-size: 2;
//border-radius: 12px;
font-family: "CourierPrimeSans";
font-size: $base-font-size;
margin: 0 0 0 0;
padding: 0 0 0 0.5em;
border: 1px $grey-color solid;
overflow: auto;
overflow-x: auto;
line-height: 1.4em;
// https://stackoverflow.com/questions/5840328/styling-each-line-inside-pre-with-css
background: $grey-color-dark;
background-image: -webkit-linear-gradient($grey-color-dark 50%, $grey-color-light 50%);
background-image: -moz-linear-gradient($grey-color-dark 50%, $grey-color-light 50%);
background-image: -ms-linear-gradient($grey-color-dark 50%, $grey-color-light 50%);
background-image: -o-linear-gradient($grey-color-dark 50%, $grey-color-light 50%);
background-image: linear-gradient($grey-color-dark 50%, $grey-color-light 50%);
background-position: 0 0;
background-repeat: repeat;
background-size: 2.8em 2.8em;
}
pre > code {
font-family: "CourierPrimeSans";
counter-increment: line;
font-size: $base-font-size;
margin: 0 0 0 0;
padding: 0 0 0 0;
}
pre > code:before{
content: counter(line);
display: inline-block;
width: 2.0em;
border-right: 1px solid $grey-color;
padding-right: .7em;
margin-right: .7em;
color: #bc6c21;
-webkit-user-select: none;
text-align: right;
}
audio {
height: 24px;
width: 100%;
//border-radius: 12px;
}
//tr:nth-child(even) {}
//tr:nth-child(odd) {}
table {
border: 1px solid black;
border-collapse: collapse;
}
table > thead > tr {}
table > thead > tr > th {
background: #293e58;
border: 1px solid black;
color: white;
padding: 4px;
}
table > tbody > tr:nth-child(even) {
background: $grey-color-light;
}
table > tbody > tr:nth-child(odd) {
background: $grey-color-dark;
}
table > tbody > tr > td {
padding: 4px;
}
table.sortable th:not(.sorttable_sorted):not(.sorttable_sorted_reverse):not(.sorttable_nosort):after {
content: " \25B4 \25BE"
}
.wrapper {
max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));
margin-right: auto;
margin-left: auto;
padding-right: $spacing-unit;
padding-left: $spacing-unit;
padding-top: calc($spacing-unit / 2);
padding-bottom: 0;
@extend %clearfix;
@include media-query($on-laptop) {
max-width: calc(#{$content-width} - (#{$spacing-unit}));
padding-right: calc($spacing-unit / 2);
padding-left: calc($spacing-unit / 2);
}
}
%clearfix {
&:after {
content: "";
display: table;
clear: both;
}
}
.icon {
> svg {
display: inline-block;
width: 16px;
height: 16px;
vertical-align: middle;
path {
fill: $grey-color;
}
}
}
.pagination a, span {
margin-left: 4px;
margin-right: 4px;
}
a.ext::after {
content: "\f08e";
font-family: "ForkAwesome";
padding-left: 5px;
color: $brand-color-light;
text-decoration: none;
}
a.mail::after,
span.mail::after {
content: "\f0e0";
font-family: "ForkAwesome";
padding-left: 5px;
color: $brand-color-light;
}
a.document {
content: "\f15b";
font-family: "ForkAwesome";
padding-left: 5px;
color: $brand-color-light;
}
a.cube::after {
content: "\f1b2";
font-family: "ForkAwesome";
padding-left: 5px;
color: $brand-color-light;
}
a.file::after {
content: "\f0c7";
font-family: "ForkAwesome";
padding-left: 5px;
color: $brand-color-light;
}
a.person::after {
content: "\f007";
font-family: "ForkAwesome";
padding-left: 5px;
color: $brand-color-light;
}
a.chat::after,
span.chat::after {
content: "\f075";
font-family: "ForkAwesome";
padding-left: 5px;
color: $brand-color-light;
}
span.feed {
border: 1px solid;
border-color: #FC9 #630 #330 #F96;
padding: 0 3px;
font: bold 0.4em sans-serif;
color: #fff;
background: #f60;
text-decoration: none;
margin: 0;
}
#topbutton {
text-align: center;
padding: 0;
width: 46px;
height: 46px;
background: $topbutton-color url(/images/up-arrow.png) no-repeat center center;
//border-radius: 12px;
border: 1px solid $grey-color-dark;
position: fixed;
bottom: 10px;
right: 10px;
cursor: pointer;
}
span.cursor {
color: #FF9500;
display: inline-block;
background: transparent;
margin-left: 1px;
animation: 1s blink step-end infinite;
}
@keyframes "blink" bold {
from, to {
color: transparent;
}
50% {
color: black;
}
}
@-webkit-keyframes "blink" bold {
from, to {
color: transparent;
}
50% {
color: black;
}
}
@-ms-keyframes "blink" bold {
from, to {
color: transparent;
}
50% {
color: black;
}
}
@-o-keyframes "blink" {
from, to {
color: transparent;
}
50% {
color: black;
}
}
#pages {
text-align: center;
}
#pages a:link,
#pages a:visited,
#pages strong {
//border-radius: 6px;
float: left;
width: 1.8em;
border: 1px solid #000;
font-weight: bold;
text-decoration: none;
text-align: center;
margin: 0px 4px 4px 0;
padding: 2px;
background: $brand-color;
color: #fff;
}
#pages > a.active {
color: $grey-color-light;
background: #fff;
border-color: $grey-color;
}
#pages a:focus,
#pages a:hover,
#pages a:active {
color: $hover-color;
background: #fff;
}
#pages p {
float: left;
width: 100%;
}
/* (B) NOTIFICATION */
#notify {
padding: 10px;
margin-bottom: 20px;
border: 1px solid $grey-color;
background: $headline-color;
}
/* (C) CONTACTFORM */
#contactform {
padding: 20px;
border: 1px solid $grey-color;
//border-radius: 12px;
background: $grey-color-light;
}
#contactform label, #contactform input, #contactform textarea {
display: block;
width: 97%;
resize: none;
}
#contactform textarea {
height: 120px;
}
#contactform label { margin: 10px 0; }
#contactform label:first-child { margin-top: 0; }
#contactform input, #contactform textarea {
font-family: $base-font-family;
font-size: $base-font-size;
line-height: $base-line-height;
font-weight: 300;
padding: 10px;
margin-bottom: 10px;
border: 1px solid $grey-color;
//border-radius: 12px;
}
#contactform input[type=submit] {
border: 0;
//border-radius: 12px;
color: #fff;
background: $brand-color;
cursor: pointer;
width: 100%;
}
#contactform input[type=submit]:hover {
background: $headline-color;
}
/* (C) SEARCHFORM */
#searchform {
padding: 20px;
border: 1px solid $grey-color;
//border-radius: 12px;
background: $grey-color-light;
}
#searchform label, #searchform input, #searchform textarea {
display: block;
width: 97%;
resize: none;
}
#searchform textarea {
height: 120px;
}
#searchform label { margin: 10px 0; }
#searchform label:first-child { margin-top: 0; }
#searchform input, #searchform textarea {
font-family: $base-font-family;
font-size: $base-font-size;
line-height: $base-line-height;
font-weight: 300;
padding: 10px;
margin-bottom: 10px;
border: 1px solid $grey-color;
//border-radius: 12px;
}
#searchform input[type=submit] {
border: 0;
//border-radius: 12px;
color: #fff;
background: $brand-color;
cursor: pointer;
width: 100%;
}
#searchform input[type=submit]:hover {
background: $headline-color;
}
/* SPINNER */
/*Hidden class for adding and removing*/
.lds-dual-ring.hidden {
display: none;
}
/*Add an overlay to the entire page blocking any further presses to buttons or other elements.*/
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
min-width: 100%;
height: 100%;
min-height: 100%;
background: rgba(0,0,0,.8);
z-index: 999;
opacity: 1;
transition: all 0.5s;
}
/*Spinner Styles*/
.lds-dual-ring {
display: inline-block;
width: 80px;
height: 80px;
}
.lds-dual-ring:after {
content: " ";
display: block;
width: 64px;
height: 64px;
margin: 5% auto;
border-radius: 50%;
border: 6px solid #fff;
border-color: #fff transparent #fff transparent;
animation: lds-dual-ring 1.2s linear infinite;
}
@keyframes lds-dual-ring {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

188
_sass/_layout.scss Normal file
View file

@ -0,0 +1,188 @@
.site {
//border-radius: 12px 12px;
border: 1px solid #000;
background-color: #fff;
max-width: -webkit-calc(#{$content-width} - (#{$spacing-unit} * 2));
max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));
margin-right: auto;
margin-left: auto;
margin-top: 4px;
margin-bottom: 4px;
//box-shadow: 0px 0px 3px #000;
}
.pagination {
margin-top: $spacing-unit;
margin-bottom: $spacing-unit;
text-align: center;
}
.site-header {
min-height: 56px;
position: relative;
}
.site-title {
line-height: 56px;
margin-bottom: 0;
float: left;
}
.site-nav {
float: right;
//line-height: 68px;
//.menu-icon {
// display: none;
//}
z-index: 998;
.page-link {
color: $text-color;
line-height: $base-line-height;
// Gaps between nav items, but not on the first one
&:not(:first-child) {
//margin-left: 12px;
}
}
//@include media-query($on-palm) {
position: absolute;
top: 18px;
right: 18px;
background-color: white;
border: 1px solid $brand-color;
//border-radius: 6px;
text-align: right;
.menu-icon {
display: block;
float: right;
width: 36px;
height: 26px;
line-height: 0;
padding-top: 10px;
text-align: center;
> svg {
width: 18px;
height: 15px;
path {
fill: $grey-color-dark;
}
}
}
.trigger {
clear: both;
display: none;
}
&:hover .trigger {
display: block;
padding-bottom: 5px;
}
.page-link {
display: block;
padding: 5px 10px;
}
//}
}
.site-footer {
margin: calc($spacing-unit / 4);
//border-radius: 12px 12px;
background-color: $grey-color-light;
border: 1px solid $grey-color;
margin: 0 18px 18px 18px;
}
.footer-col-wrapper {
margin-left: calc($spacing-unit / 2);
@extend %clearfix;
}
.footer-col {
float: left;
margin-bottom: calc($spacing-unit / 2);
padding-left: calc($spacing-unit / 2);
}
@include media-query($on-palm) {
.footer-col {
float: none;
width: -webkit-calc(100% - (#{$spacing-unit} / 2));
width: calc(100% - (#{$spacing-unit} / 2));
}
}
.page-content {
}
.page-heading {
}
.post-list {
margin-left: 0;
list-style: none;
> li {
margin-bottom: $spacing-unit;
}
}
.post-meta {
font-size: $small-font-size;
color: $grey-color;
}
.post-link {
display: block;
font-size: 24px;
}
.post-header {
margin-bottom: $spacing-unit;
}
.post-title {
letter-spacing: -1px;
line-height: 1;
@include media-query($on-laptop) {
}
}
.post-content {
margin-bottom: $spacing-unit;
}
.post-content img {
//border-radius: 12px 12px;
//border: 0px solid $grey-color-light;
}
//.search
//{
// padding-bottom: 0px;
//}
//#search
//{
// width: 100%;
// margin: 0;
//}
//#search input
//{
// display:inline;
// width: 94%;
// background-color: #fafafa;
// border: 1px solid #9a9a9a;
// padding: 6px;
// margin: 0;
// color: #2b2b2b;
// border-radius: 8px;
// box-shadow: 0 1px 0 rgba(255,255,255,.5);
//}
//#search input:focus
//{
// outline: none;
// box-shadow: 0 1px 0 rgba(255,255,255,.2), 0 0 12px #4f4f4f;
//}

17
_sass/_toc.scss Normal file
View file

@ -0,0 +1,17 @@
//#toc-container h2 {
// font-size: 1.4em;
//}
#toc-container ul {
list-style-image: none;
list-style-type: none;
margin-left: $spacing-unit;
//margin:0;
//padding: 0;
//text-align: left;
}
#toc-container ul li {
list-style-type: none;
padding-left: 0;
}

View file

@ -0,0 +1,7 @@
<!doctype html><html lang=en id=top><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>xw3.org:Welcome</title>
<meta name=author content="xw3.org "><meta name=generator content="xw3.org"><meta name=robots content="index,follow"><meta name=revisit-after content="7 days"><meta name=description content="A static HTML and CGI based website..."><meta name=keywords content="xw3,cgi,static,dynamic,jekyll,pinned"><link rel="shortcut icon" type=image/png href=/favicon.png><link rel=stylesheet href=/css/main.css><link rel=stylesheet href=/css/fork-awesome.min.css><link rel=stylesheet href=/css/cookieconsent.min.css><script src=/js/jquery-3.6.4.min.js></script><link rel=canonical href=https://xw3.org/2024/02/06/welcome/><link rel=alternate type=application/rss+xml title="RSS Feed - [xw3.org]" href=https://xw3.org/feed.xml></head><body><div class=site><div id=loader class="lds-dual-ring hidden overlay"></div><header class=site-header><div class=wrapper><nav class=site-nav><a href=# class=menu-icon><span class="fa fa-bars" aria-hidden=true></span></a><div class=trigger><ul style=list-style:none><li><a class=page-link href=/ style=text-decoration:none>/</a></li><li><a class=page-link href=/about/ style=text-decoration:none>/about/</a></li><li><a class=page-link href=/contact/ style=text-decoration:none>/contact/</a></li><li><a class=page-link href=/tools/ style=text-decoration:none>/tools/</a></li></ul></div></nav></div></header><div class=page-content><div class=wrapper><div class=post><header class=post-header><h1 class=post-title id=terminal>Welcome</h1><p class=post-meta>Feb 6, 2024
(CET/CEST)</p></header><article class=post-content><p>This is a fun project at the moment… no content actually!</p></article></div></div></div><footer class=site-footer><div class=wrapper><div class=footer-col-wrapper><p style=text-align:center>Copyright &copy; 2024 - [xw3.org] -
<a href=/feed.xml class=rss><i class="fa fa-rss" aria-hidden=true></i><span style=display:none> RSS Feed</span></a> -
<a href=https://git.xw3.org/xw3 class=git><i class="fa fa-git" aria-hidden=true></i><span style=display:none> Git repositories</span></a> -
<a href=https://wiki.xw3.org/start class=book><i class="fa fa-book" aria-hidden=true></i><span style=display:none> Wiki</span></a></p></div></div></footer></div><p style=text-align:center;color:#e8e8e8;font-size:12px><span id=uptime>NULL</span><br>Page generated at: Feb 6, 2024 (CET/CEST) using Jekyll on GNU/Linux @jupiter<br>Powered by: <span id=uname>NULL</span></p><a href=#top id=topbutton><span></span></a>
<script src=/js/cookieconsent.min.js data-cfasync=false></script><script>$(document).ready(function(){$("#uname").load("/cgi/uname/"),$("#uptime").load("/cgi/uptime/")})</script><script>window.cookieconsent.initialise({palette:{popup:{background:"#000",text:"#e8e8e8"},button:{background:"#bc6c21"}},theme:"classic",position:"bottom",static:!1,content:{message:"This website uses cookies to provide you with a better online experience. Leave this site if you don't accept the usage of cookies. No tracking cookies are being used! To find out more, please visit this website's ",dismiss:"Got it!",link:"Privacy Policy.",href:"/privacy/"}})</script></body></html>

9
_site/LICENSE Normal file
View file

@ -0,0 +1,9 @@
MIT License
Copyright (c) 2024 hanez
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

6
_site/about/index.html Normal file
View file

@ -0,0 +1,6 @@
<!doctype html><html lang=en id=top><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>xw3.org:/about/</title>
<meta name=author content="xw3.org "><meta name=generator content="xw3.org"><meta name=robots content="index,follow"><meta name=revisit-after content="7 days"><meta name=description content="A static HTML and CGI based website..."><link rel="shortcut icon" type=image/png href=/favicon.png><link rel=stylesheet href=/css/main.css><link rel=stylesheet href=/css/fork-awesome.min.css><link rel=stylesheet href=/css/cookieconsent.min.css><script src=/js/jquery-3.6.4.min.js></script><link rel=canonical href=https://xw3.org/about/><link rel=alternate type=application/rss+xml title="RSS Feed - [xw3.org]" href=https://xw3.org/feed.xml></head><body><div class=site><div id=loader class="lds-dual-ring hidden overlay"></div><header class=site-header><div class=wrapper><nav class=site-nav><a href=# class=menu-icon><span class="fa fa-bars" aria-hidden=true></span></a><div class=trigger><ul style=list-style:none><li><a class=page-link href=/ style=text-decoration:none>/</a></li><li><a class=page-link href=/about/ style=text-decoration:none>/about/</a></li><li><a class=page-link href=/contact/ style=text-decoration:none>/contact/</a></li><li><a class=page-link href=/tools/ style=text-decoration:none>/tools/</a></li></ul></div></nav></div></header><div class=page-content><div class=wrapper><div class=post><header class=post-header><h1 class=post-title id=terminal>xw3.org:/about/</h1><p class=post-meta>Updated: Feb 6, 2024 (CET/CEST)</p></header><article class=post-content></article></div></div></div><footer class=site-footer><div class=wrapper><div class=footer-col-wrapper><p style=text-align:center>Copyright &copy; 2024 - [xw3.org] -
<a href=/feed.xml class=rss><i class="fa fa-rss" aria-hidden=true></i><span style=display:none> RSS Feed</span></a> -
<a href=https://git.xw3.org/xw3 class=git><i class="fa fa-git" aria-hidden=true></i><span style=display:none> Git repositories</span></a> -
<a href=https://wiki.xw3.org/start class=book><i class="fa fa-book" aria-hidden=true></i><span style=display:none> Wiki</span></a></p></div></div></footer></div><p style=text-align:center;color:#e8e8e8;font-size:12px><span id=uptime>NULL</span><br>Page generated at: Feb 6, 2024 (CET/CEST) using Jekyll on GNU/Linux @jupiter<br>Powered by: <span id=uname>NULL</span></p><a href=#top id=topbutton><span></span></a>
<script src=/js/cookieconsent.min.js data-cfasync=false></script><script>$(document).ready(function(){$("#uname").load("/cgi/uname/"),$("#uptime").load("/cgi/uptime/")})</script><script>window.cookieconsent.initialise({palette:{popup:{background:"#000",text:"#e8e8e8"},button:{background:"#bc6c21"}},theme:"classic",position:"bottom",static:!1,content:{message:"This website uses cookies to provide you with a better online experience. Leave this site if you don't accept the usage of cookies. No tracking cookies are being used! To find out more, please visit this website's ",dismiss:"Got it!",link:"Privacy Policy.",href:"/privacy/"}})</script></body></html>

9
_site/cgi/bash/index.sh Normal file
View file

@ -0,0 +1,9 @@
echo "Hello from bash!"
echo
echo 'date'
date
echo
echo 'for i in $(seq 1 10); do echo $i; done'
for i in $(seq 1 10); do echo $i; done

View file

@ -0,0 +1,23 @@
<?php
session_start();
session_set_cookie_params(3600);
date_default_timezone_set("CET/CEST");
if(isset($_SESSION["one"])) {
unset($_SESSION["one"]);
}
if(isset($_SESSION["two"])) {
unset($_SESSION["two"]);
}
$_SESSION["one"] = rand(0, 9);
$_SESSION["two"] = rand(0, 9);
#$_SESSION["sum"] = $_SESSION["one"] + $_SESSION["two"];
$challenge = $_SESSION["one"] . " + " . $_SESSION["two"];
header('Content-Type: text/plain');
echo($challenge);
?>

186
_site/cgi/env/index.php vendored Normal file
View file

@ -0,0 +1,186 @@
<!DOCTYPE html>
<html lang="en" id="top">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>xw3.org:/cgi/env/</title>
<meta name="author" content="xw3.org ">
<meta name="generator" content="xw3.org">
<meta name="robots" content="index,follow">
<meta name="revisit-after" content="7 days">
<meta name="description" content="A static HTML and CGI based website...">
<meta name="keywords" content="env,environment,cgi,bash,gcc,zsh,perl,php,python,ruby,test">
<link rel="shortcut icon" type="image/png" href="/favicon.png">
<link rel="stylesheet" type="text/css" href="/css/main.css">
<link rel="stylesheet" type="text/css" href="/css/fork-awesome.min.css">
<link rel="stylesheet" type="text/css" href="/css/cookieconsent.min.css" />
<script src="/js/jquery-3.6.4.min.js" charset="utf-8"></script>
<link rel="canonical" href="https://xw3.org/cgi/env/">
<link rel="alternate" type="application/rss+xml" title="RSS Feed - [xw3.org]" href="https://xw3.org/feed.xml">
</head>
<body>
<div class="site">
<div id="loader" class="lds-dual-ring hidden overlay"></div>
<header class="site-header">
<div class="wrapper">
<!--<a class="site-title" href="/"><img width="80" src="/images/logo.png" alt="[xw3.org]"></a>-->
<nav class="site-nav">
<a href="#" class="menu-icon"><span class="fa fa-bars" aria-hidden="true"></span></a>
<div class="trigger">
<ul style="list-style: none;">
<li><a class="page-link" href="/" style="text-decoration: none;">/</a></li>
<li><a class="page-link" href="/about/" style="text-decoration: none;">/about/</a></li>
<li><a class="page-link" href="/contact/" style="text-decoration: none;">/contact/</a></li>
<li><a class="page-link" href="/tools/" style="text-decoration: none;">/tools/</a></li>
</ul>
</div>
</nav>
</div>
</header>
<div class="page-content">
<div class="wrapper">
<div class="post">
<header class="post-header">
<h1 class="post-title" id="terminal">xw3.org:/cgi/env/</h1>
<p>/cgi is a language independent scripts directory like a <a href="https://en.wikipedia.org/wiki/Common_Gateway_Interface" class="ext">/cgi-bin</a>. It must be configured in your server configuration which language files can be executed. Binaries will work too... For now it all is a little magic to me, but I will tell you how it works for me some day... ;)</p>
</header>
<article class="post-content">
<?php
session_start();
session_set_cookie_params(3600);
date_default_timezone_set("CET/CEST");
?>
<h2>PHP Environment</h2>
<h3>GET:</h3>
<?php
ksort($_GET);
echo '<ul>';
foreach ($_GET as $key => $value) {
echo '<li>';
echo $key . ': ' . $value;
echo '</li>';
}
echo '</ul>';
?>
<h3>POST:</h3>
<?php
ksort($_POST);
echo '<ul>';
foreach ($_POST as $key => $value) {
echo '<li>';
echo $key . ': ' . $value;
echo '</li>';
}
echo '</ul>';
?>
<!--
<h3>SESSION:</h3>
<?php
var_dump($_SESSION);
#ksort($_SESSION);
#echo '<ul>';
#foreach ($_SESSION as $key => $value) {
# echo '<li>';
# echo $key . ': ' . $value;
# echo '</li>';
#}
#echo '</ul>';
?>
<h3>SERVER:</h3>
<?php
ksort($_SERVER);
echo '<ul>';
foreach ($_SERVER as $key => $value) {
echo '<li>';
echo $key . ': ' . $value;
echo '</li>';
}
echo '</ul>';
?>
-->
<h2>Runtimes</h2>
<?php
echo '<ul>';
echo '<li>bash --version: ' . shell_exec('bash --version');
echo ' - <a href="https://www.gnu.org/software/bash/" class="ext">https://www.gnu.org/software/bash/</a></li><li>';
echo 'gcc --version: ' . shell_exec('gcc --version');
echo ' - <a href="https://gcc.gnu.org/" class="ext">https://gcc.gnu.org/</a></li><li>';
echo 'jekyll --version: ' . shell_exec('jekyll --version');
echo ' - <a href="https://jekyllrb.com/" class="ext">https://jekyllrb.com/</a></li><li>';
echo 'lighttpd -v: ' . shell_exec('lighttpd -v');
echo ' - <a href="https://www.lighttpd.net/" class="ext">https://www.lighttpd.net/</a></li><li>';
echo 'Linux (uname -a): ' . shell_exec('uname -a');
echo ' - <a href="https://kernel.org/" class="ext">https://kernel.org/</a></li><li>';
echo 'OS (cat /etc/os-release): ' . shell_exec('cat /etc/os-release');
echo ' - <a href="https://alpinelinux.org/" class="ext">https://alpinelinux.org/</a></li><li>';
echo 'perl --version: ' . shell_exec('perl --version');
echo ' - <a href="https://www.perl.org/" class="ext">https://www.perl.org/</a></li><li>';
echo 'php --version: ' . shell_exec('php --version');
echo ' - <a href="https://www.php.net/" class="ext">https://www.php.net/</a></li><li>';
echo 'python --version: ' . shell_exec('python --version');
echo ' - <a href="https://www.python.org/" class="ext">https://www.python.org/</a></li><li>';
echo 'ruby --version: ' . shell_exec('ruby --version');
echo ' - <a href="https://www.ruby-lang.org/en/" class="ext">https://www.ruby-lang.org/en/</a></li><li>';
echo 'zsh --version: ' . shell_exec('zsh --version');
echo ' - <a href="https://www.zsh.org/" class="ext">https://www.zsh.org/</a></li>';
echo '</ul>';
?>
</article>
</div>
</div>
</div>
<footer class="site-footer">
<div class="wrapper">
<div class="footer-col-wrapper">
<p style="text-align:center;">
Copyright &copy; 2024 - [xw3.org] -
<a href="/feed.xml" class="rss"><i class="fa fa-rss" aria-hidden="true"></i><span style="display:none;"> RSS Feed</span></a> -
<a href="https://git.xw3.org/xw3" class="git"><i class="fa fa-git" aria-hidden="true"></i><span style="display:none;"> Git repositories</span></a> -
<a href="https://wiki.xw3.org/start" class="book"><i class="fa fa-book" aria-hidden="true"></i><span style="display:none;"> Wiki</span></a>
</p>
</div>
</div>
</footer>
</div>
<p style="text-align: center; color: #e8e8e8; font-size: 12px;">
<span id="uptime">NULL</span><br>
Page generated at: Feb 6, 2024 (CET/CEST) using Jekyll on GNU/Linux @jupiter<br>
Powered by: <span id="uname">NULL</span>
</p>
<a href="#top" id="topbutton"><span></span></a>
<script src="/js/cookieconsent.min.js" data-cfasync="false"></script>
<!-- Source for configuration below: https://www.osano.com/cookieconsent/download/ - https://www.osano.com/cookieconsent/documentation/compliance/ -->
<script>
$(document).ready(function(){
$("#uname").load("/cgi/uname/");
$("#uptime").load("/cgi/uptime/");
});
</script>
<script>window.cookieconsent.initialise({"palette":{"popup":{"background":"#000","text":"#e8e8e8"},"button":{"background":"#bc6c21"}},"theme":"classic","position":"bottom","static":false,"content":{"message":"This website uses cookies to provide you with a better online experience. Leave this site if you don't accept the usage of cookies. No tracking cookies are being used! To find out more, please visit this website's ","dismiss":"Got it!","link":"Privacy Policy.","href":"/privacy/"}});</script>
</body>
</html>

View file

@ -0,0 +1,14 @@
<?php
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
//ip from share internet
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
//ip pass from proxy
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
header('Content-Type: text/plain');
echo($ip);
?>

43
_site/cgi/mail/index.php Normal file
View file

@ -0,0 +1,43 @@
<?php
session_start();
session_set_cookie_params(3600);
date_default_timezone_set("CET/CEST");
$error = "";
$sum = $_SESSION["one"] + $_SESSION["two"];
if ($_POST["sum"] != $sum) { $error = "Invalid challenge result! Please try again... :("; }
if ($_POST["sum"] == $sum) {
$mailTo = "mail@xw3.org";
$mailAddress = "noreply@xw3.org";
if($_POST["email"]) {
$mailAddress = $_POST["email"];
}
$mailHeaders = "From: " . $_POST["name"] . " <" . $mailAddress . ">" . "\r\n" .
"Date: " . date(DATE_RFC822);
$mailSubject = "[xw3.org]: No subject!";
if($_POST["subject"]) {
$mailSubject = "[xw3.org]: " . $_POST["subject"];
}
$mailBody = $_POST["message"] . "\n\n" . "Website: " . $_POST["website"] . "\nUser Agent: " . $_SERVER['HTTP_USER_AGENT'];
if (!@mail($mailTo, $mailSubject, $mailBody, $mailHeaders)) { $error = "Failed to send mail!"; }
unset($_SESSION["one"]);
unset($_SESSION["two"]);
}
header('Content-Type: text/plain');
if ($error=="") {
echo("Thank you for contacting me... :)");
} else {
//echo($error . " (". $_POST["sum"] . "/" . $sum . ")");
echo($error);
}
?>

15
_site/cgi/perl/index.pl Normal file
View file

@ -0,0 +1,15 @@
use warnings;
use strict;
use POSIX qw(strftime);
my $date = strftime "%m/%d/%Y", localtime;
print "Hello from Perl!\n\n";
print $date;
print "\n\n";
print('my @i = (1..10); for(@i) { print("$_", "\n"); }');
print("\n");
my @i = (1..10); for(@i) { print("$_", "\n"); }

17
_site/cgi/php/index.php Normal file
View file

@ -0,0 +1,17 @@
<?php
header('Content-Type: text/plain');
echo('Hello from PHP!');
echo("\n\n");
echo('date("l jS \of F Y h:i:s A");');
echo("\n");
echo date("l jS \of F Y h:i:s A");
echo("\n\n");
echo('for ($x = 0; $x <= 10; $x++) { echo "$x\n"; }');
echo("\n");
for ($x = 1; $x <= 10; $x++) { echo "$x\n"; }
?>

12
_site/cgi/python/index.py Normal file
View file

@ -0,0 +1,12 @@
from datetime import datetime
from pprint import pprint
print("Hello from Python!")
print("")
print('print(datetime.today().strftime("%Y-%m-%d"))')
print(datetime.today().strftime('%Y-%m-%d'))
print("")
print("for i in range(1, 11): print(i);")
for i in range(1, 11): print(i);

9
_site/cgi/ruby/index.rb Normal file
View file

@ -0,0 +1,9 @@
puts('Hello from Ruby!')
puts
puts('puts(Time.now.strftime("%d/%m/%Y %H:%M"))')
puts(Time.now.strftime("%d/%m/%Y %H:%M"))
puts
puts("(1..10).each { |n| puts n }")
(1..10).each { |n| puts n }

View file

@ -0,0 +1,15 @@
<?php
session_start();
session_set_cookie_params(3600);
date_default_timezone_set("CET/CEST");
$timestamp = date('Y.m.d-h:i:s', time());
$milliseconds = floor(microtime(true) * 1000);
#echo($timestamp . "_" . time() . "_" . $milliseconds);
header('Content-Type: text/plain');
echo($timestamp . '.' . microtime(true));
?>

10
_site/cgi/uname/index.php Normal file
View file

@ -0,0 +1,10 @@
<?php
$uname = shell_exec('uname -mrs');
$pos = strpos($uname, '-', 0);
$res = substr($uname, 0, $pos);
header('Content-Type: text/plain');
echo($res);
?>

View file

@ -0,0 +1,7 @@
<?php
$uptime = shell_exec('uptime');
$version = shell_exec('uptime -V');
header('Content-Type: text/plain');
echo('Server ' . substr($version, 0, -1) . ': ' . $uptime);
?>

24
_site/cgi/whois/index.php Normal file
View file

@ -0,0 +1,24 @@
<?php
if (!empty($_GET["host"]) and empty($_POST["host"])) {
$host = $_GET["host"];
} elseif (!empty($_POST["host"]) and empty($_GET["host"])) {
$host = $_POST["host"];
} else {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
//ip from share internet
$host = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
//ip pass from proxy
$host = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$host = $_SERVER['REMOTE_ADDR'];
}
}
$cmd = 'whois ' . $host;
$whois = shell_exec($cmd);
header('Content-Type: text/plain');
echo($whois);
?>

13
_site/contact/index.html Normal file
View file

@ -0,0 +1,13 @@
<!doctype html><html lang=en id=top><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>xw3.org:/contact/</title>
<meta name=author content="xw3.org "><meta name=generator content="xw3.org"><meta name=robots content="index,follow"><meta name=revisit-after content="7 days"><meta name=description content="A static HTML and CGI based website..."><meta name=keywords content="contact"><link rel="shortcut icon" type=image/png href=/favicon.png><link rel=stylesheet href=/css/main.css><link rel=stylesheet href=/css/fork-awesome.min.css><link rel=stylesheet href=/css/cookieconsent.min.css><script src=/js/jquery-3.6.4.min.js></script><link rel=canonical href=https://xw3.org/contact/><link rel=alternate type=application/rss+xml title="RSS Feed - [xw3.org]" href=https://xw3.org/feed.xml></head><body><div class=site><div id=loader class="lds-dual-ring hidden overlay"></div><header class=site-header><div class=wrapper><nav class=site-nav><a href=# class=menu-icon><span class="fa fa-bars" aria-hidden=true></span></a><div class=trigger><ul style=list-style:none><li><a class=page-link href=/ style=text-decoration:none>/</a></li><li><a class=page-link href=/about/ style=text-decoration:none>/about/</a></li><li><a class=page-link href=/contact/ style=text-decoration:none>/contact/</a></li><li><a class=page-link href=/tools/ style=text-decoration:none>/tools/</a></li></ul></div></nav></div></header><div class=page-content><div class=wrapper><div class=post><header class=post-header><h1 class=post-title id=terminal>xw3.org:/contact/</h1><p>A contact form inside a staic Jekyll site... ;)</p></header><article class=post-content><script>function doSubmit(){$("#loader").removeClass("hidden"),event.preventDefault();var e=$("#contactform")[0],t=new FormData(e);return $.ajax({type:"POST",enctype:"multipart/form-data",data:t,url:"/cgi/mail/",processData:!1,contentType:!1,cache:!1,success:function(e){window.alert(e),$("#challenge").load("/cgi/challenge/"),$("#loader").addClass("hidden")}}),!1}$(document).ready(function(){$("#challenge").load("/cgi/challenge/")})</script><form id=contactform method=post onsubmit="return doSubmit()"><div><label>Name:<span style=color:red>*</span></label>
<input name=name id=name required></div><div><label>Email:</label>
<input type=email name=email id=email></div><div><label>Website:</label>
<input name=website id=website></div><div><label>Subject:</label>
<input name=subject id=subject></div><div><label>Message:<span style=color:red>*</span></label>
<textarea name=message id=message required style=font-size:1em;font-family:OpenSans-Regular></textarea></div><div style=text-align:left;width:50%;float:left><label>Challenge: <span id=challenge name=challenge>NULL</span>?
<span style=color:red>*</span></label>
<input style=width:10%;text-align:center name=sum id=sum required></div><div style=text-align:right;width:50%;float:right><span style=color:red>*</span> = Required fields</div><div><input type=submit value=Send! id=button></div></form></article></div></div></div><footer class=site-footer><div class=wrapper><div class=footer-col-wrapper><p style=text-align:center>Copyright &copy; 2024 - [xw3.org] -
<a href=/feed.xml class=rss><i class="fa fa-rss" aria-hidden=true></i><span style=display:none> RSS Feed</span></a> -
<a href=https://git.xw3.org/xw3 class=git><i class="fa fa-git" aria-hidden=true></i><span style=display:none> Git repositories</span></a> -
<a href=https://wiki.xw3.org/start class=book><i class="fa fa-book" aria-hidden=true></i><span style=display:none> Wiki</span></a></p></div></div></footer></div><p style=text-align:center;color:#e8e8e8;font-size:12px><span id=uptime>NULL</span><br>Page generated at: Feb 6, 2024 (CET/CEST) using Jekyll on GNU/Linux @jupiter<br>Powered by: <span id=uname>NULL</span></p><a href=#top id=topbutton><span></span></a>
<script src=/js/cookieconsent.min.js data-cfasync=false></script><script>$(document).ready(function(){$("#uname").load("/cgi/uname/"),$("#uptime").load("/cgi/uptime/")})</script><script>window.cookieconsent.initialise({palette:{popup:{background:"#000",text:"#e8e8e8"},button:{background:"#bc6c21"}},theme:"classic",position:"bottom",static:!1,content:{message:"This website uses cookies to provide you with a better online experience. Leave this site if you don't accept the usage of cookies. No tracking cookies are being used! To find out more, please visit this website's ",dismiss:"Got it!",link:"Privacy Policy.",href:"/privacy/"}})</script></body></html>

1
_site/css/cookieconsent.min.css vendored Normal file
View file

@ -0,0 +1 @@
.cc-window{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{-webkit-transition:transform 1s ease;-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.cc-animate.cc-revoke.cc-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-top{-webkit-transform:translateY(0);transform:translateY(0)}.cc-animate.cc-revoke.cc-active.cc-bottom{-webkit-transform:translateY(0);transform:translateY(0)}.cc-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;-webkit-transition:max-height 1s;transition:max-height 1s}.cc-revoke,.cc-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-revoke:hover{text-decoration:underline}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em;text-decoration:underline}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-highlight .cc-btn:first-child{background-color:initial;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:initial;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.cc-window.cc-banner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:auto;max-width:100%;margin-right:1em}.cc-compliance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-floating .cc-compliance>.cc-btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em}@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-floating,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:auto}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset}.cc-window.cc-banner .cc-message{margin-right:0}}.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-webkit-box-flex:0;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em;margin-bottom:1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}

File diff suppressed because one or more lines are too long

6
_site/css/fork-awesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
_site/css/main.css Normal file

File diff suppressed because one or more lines are too long

1
_site/css/main.css.map Normal file

File diff suppressed because one or more lines are too long

6
_site/css/v5-compat.css Normal file

File diff suppressed because one or more lines are too long

6
_site/css/v5-compat.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"version":3,"sources":["v5-compat.css"],"names":[],"mappings":"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"}

1
_site/feed.xml Normal file
View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>[xw3.org]</title><description>A static HTML and CGI based website...</description><link>https://xw3.org</link><atom:link href="https://xw3.org/feed.xml" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Feb 2024 16:22:11 +0000</pubDate><lastBuildDate>Tue, 06 Feb 2024 16:22:11 +0000</lastBuildDate><item><title>Welcome</title><description>&lt;p>This is a fun project at the moment… no content actually!&lt;/p></description><pubDate>Tue, 06 Feb 2024 00:00:00 +0000</pubDate><link>https://xw3.org/2024/02/06/welcome/</link><guid isPermaLink="true">https://xw3.org/2024/02/06/welcome/</guid><category>xw3</category><category>cgi</category><category>static</category><category>dynamic</category><category>jekyll</category><category>pinned</category><category>news</category><category>project</category></item></channel></rss>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
_site/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

79
_site/images/logo.svg Normal file
View file

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg8"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="logo.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="170.54058"
inkscape:cy="194.62108"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1438"
inkscape:window-height="850"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-197)">
<rect
style="opacity:1;fill:#212529;fill-opacity:1;fill-rule:nonzero;stroke:#fed136;stroke-width:5.96287186;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:11;stroke-dasharray:none;stroke-opacity:1;paint-order:normal;stroke-dashoffset:5.36658468"
id="rect952"
width="93.650742"
height="93.650742"
x="3.1619756"
y="200.37631" />
</g>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2">
<g
aria-label="F"
transform="matrix(1.0046317,-3.562603e-5,-0.28884681,0.99539987,0,0)"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:114.24069214px;line-height:125%;font-family:'Alfa Slab One';-inkscape-font-specification:'Alfa Slab One';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="text975">
<path
d="M 56.21119,91.76767 H 38.503882 q -2.170573,0 -3.198739,-0.913926 -0.913925,-1.028166 -0.913925,-3.198739 V 13.627036 q 0,-2.170573 0.913925,-3.084498 1.028166,-1.0281667 3.198739,-1.0281667 h 50.951349 q 2.170573,0 3.084499,1.0281667 1.028166,0.913925 1.028166,3.084498 v 13.594643 q 0,2.170573 -1.028166,3.198739 -0.913926,0.913926 -3.084499,0.913926 H 60.323855 v 11.881032 h 19.87788 q 2.170573,0 3.084499,1.028166 1.028166,0.913925 1.028166,3.084498 v 13.708883 q 0,2.170574 -1.028166,3.19874 -0.913926,0.913925 -3.084499,0.913925 h -19.87788 v 22.505417 q 0,2.170573 -1.028167,3.198739 -0.913925,0.913926 -3.084498,0.913926 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Bungee;-inkscape-font-specification:Bungee;fill:#fed136;fill-opacity:1;stroke:#fed136;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path977" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
_site/images/spinner.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
_site/images/up-arrow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 649 B

7
_site/index.html Normal file
View file

@ -0,0 +1,7 @@
<!doctype html><html lang=en id=top><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>xw3.org:/</title>
<meta name=author content="xw3.org "><meta name=generator content="xw3.org"><meta name=robots content="index,follow"><meta name=revisit-after content="7 days"><meta name=description content="The XW3.ORG CGI research project"><meta name=keywords content="xw3,project,cgi,static,jekyll"><link rel="shortcut icon" type=image/png href=/favicon.png><link rel=stylesheet href=/css/main.css><link rel=stylesheet href=/css/fork-awesome.min.css><link rel=stylesheet href=/css/cookieconsent.min.css><script src=/js/jquery-3.6.4.min.js></script><link rel=canonical href=https://xw3.org/><link rel=alternate type=application/rss+xml title="RSS Feed - [xw3.org]" href=https://xw3.org/feed.xml></head><body><div class=site><div id=loader class="lds-dual-ring hidden overlay"></div><header class=site-header><div class=wrapper><nav class=site-nav><a href=# class=menu-icon><span class="fa fa-bars" aria-hidden=true></span></a><div class=trigger><ul style=list-style:none><li><a class=page-link href=/ style=text-decoration:none>/</a></li><li><a class=page-link href=/about/ style=text-decoration:none>/about/</a></li><li><a class=page-link href=/contact/ style=text-decoration:none>/contact/</a></li><li><a class=page-link href=/tools/ style=text-decoration:none>/tools/</a></li></ul></div></nav></div></header><div class=page-content><div class=wrapper><div class=post><header class=post-header><h1 class=post-title id=terminal>/</h1><p>...</p></header></div><article class=post-content><h2><a href=/2024/02/06/welcome/ title=Welcome>Welcome</a> <span style="cursor:help;float:right;padding:0 8px" title="Pinned Post!">📌</span></h2><p class=post-meta>Feb 6, 2024
(CET/CEST)</p><p>This is a fun project at the moment… no content actually!</p><p>Permalink: <a href=/2024/02/06/welcome/ title=https://xw3.org/2024/02/06/welcome/>https://xw3.org/2024/02/06/welcome/</a></p></article><h2>Pages</h2><div id=pages><a href=/ class=active title="Seite 1">1</a></div></div></div><footer class=site-footer><div class=wrapper><div class=footer-col-wrapper><p style=text-align:center>Copyright &copy; 2024 - [xw3.org] -
<a href=/feed.xml class=rss><i class="fa fa-rss" aria-hidden=true></i><span style=display:none> RSS Feed</span></a> -
<a href=https://git.xw3.org/xw3 class=git><i class="fa fa-git" aria-hidden=true></i><span style=display:none> Git repositories</span></a> -
<a href=https://wiki.xw3.org/start class=book><i class="fa fa-book" aria-hidden=true></i><span style=display:none> Wiki</span></a></p></div></div></footer></div><p style=text-align:center;color:#e8e8e8;font-size:12px><span id=uptime>NULL</span><br>Page generated at: Feb 6, 2024 (CET/CEST) using Jekyll on GNU/Linux @jupiter<br>Powered by: <span id=uname>NULL</span></p><a href=#top id=topbutton><span></span></a>
<script src=/js/cookieconsent.min.js data-cfasync=false></script><script>$(document).ready(function(){$("#uname").load("/cgi/uname/"),$("#uptime").load("/cgi/uptime/")})</script><script>window.cookieconsent.initialise({palette:{popup:{background:"#000",text:"#e8e8e8"},button:{background:"#bc6c21"}},theme:"classic",position:"bottom",static:!1,content:{message:"This website uses cookies to provide you with a better online experience. Leave this site if you don't accept the usage of cookies. No tracking cookies are being used! To find out more, please visit this website's ",dismiss:"Got it!",link:"Privacy Policy.",href:"/privacy/"}})</script></body></html>

1
_site/js/cookieconsent.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2
_site/js/jquery-3.6.4.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2
_site/js/jquery-3.7.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

3
_site/robots.txt Normal file
View file

@ -0,0 +1,3 @@
Sitemap: https://xw3.org/sitemap.xml
User-agent: *
Disallow:

1
_site/sitemap.xml Normal file
View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://xw3.org/2024/02/06/welcome/</loc><lastmod>2024-02-06T00:00:00+00:00</lastmod></url><url><loc>https://xw3.org/about/</loc></url><url><loc>https://xw3.org/contact/</loc></url><url><loc>https://xw3.org/tools/ifconfig/</loc></url><url><loc>https://xw3.org/</loc></url><url><loc>https://xw3.org/tools/</loc></url><url><loc>https://xw3.org/tools/whoami/</loc></url></urlset>

View file

@ -0,0 +1,6 @@
<!doctype html><html lang=en id=top><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>xw3.org:/tools/ifconfig/</title>
<meta name=author content="xw3.org "><meta name=generator content="xw3.org"><meta name=robots content="index,follow"><meta name=revisit-after content="7 days"><meta name=description content="A static HTML and CGI based website..."><meta name=keywords content="ip,ifconfig"><link rel="shortcut icon" type=image/png href=/favicon.png><link rel=stylesheet href=/css/main.css><link rel=stylesheet href=/css/fork-awesome.min.css><link rel=stylesheet href=/css/cookieconsent.min.css><script src=/js/jquery-3.6.4.min.js></script><link rel=canonical href=https://xw3.org/tools/ifconfig/><link rel=alternate type=application/rss+xml title="RSS Feed - [xw3.org]" href=https://xw3.org/feed.xml></head><body><div class=site><div id=loader class="lds-dual-ring hidden overlay"></div><header class=site-header><div class=wrapper><nav class=site-nav><a href=# class=menu-icon><span class="fa fa-bars" aria-hidden=true></span></a><div class=trigger><ul style=list-style:none><li><a class=page-link href=/ style=text-decoration:none>/</a></li><li><a class=page-link href=/about/ style=text-decoration:none>/about/</a></li><li><a class=page-link href=/contact/ style=text-decoration:none>/contact/</a></li><li><a class=page-link href=/tools/ style=text-decoration:none>/tools/</a></li></ul></div></nav></div></header><div class=page-content><div class=wrapper><div class=post><header class=post-header><h1 class=post-title id=terminal>xw3.org:/tools/ifconfig/</h1></header><article class=post-content><script>$(document).ready(function(){$("#ifconfig").load("/cgi/ifconfig/")})</script><h2>Your IP address</h2><pre><span id=ifconfig name=ifconfig>NULL</span></pre><h2>API</h2><ul><li><a href=https://xw3.org/cgi/ifconfig/>https://xw3.org/cgi/ifconfig/</a> - Just returns your public IP</li></ul></article></div></div></div><footer class=site-footer><div class=wrapper><div class=footer-col-wrapper><p style=text-align:center>Copyright &copy; 2024 - [xw3.org] -
<a href=/feed.xml class=rss><i class="fa fa-rss" aria-hidden=true></i><span style=display:none> RSS Feed</span></a> -
<a href=https://git.xw3.org/xw3 class=git><i class="fa fa-git" aria-hidden=true></i><span style=display:none> Git repositories</span></a> -
<a href=https://wiki.xw3.org/start class=book><i class="fa fa-book" aria-hidden=true></i><span style=display:none> Wiki</span></a></p></div></div></footer></div><p style=text-align:center;color:#e8e8e8;font-size:12px><span id=uptime>NULL</span><br>Page generated at: Feb 6, 2024 (CET/CEST) using Jekyll on GNU/Linux @jupiter<br>Powered by: <span id=uname>NULL</span></p><a href=#top id=topbutton><span></span></a>
<script src=/js/cookieconsent.min.js data-cfasync=false></script><script>$(document).ready(function(){$("#uname").load("/cgi/uname/"),$("#uptime").load("/cgi/uptime/")})</script><script>window.cookieconsent.initialise({palette:{popup:{background:"#000",text:"#e8e8e8"},button:{background:"#bc6c21"}},theme:"classic",position:"bottom",static:!1,content:{message:"This website uses cookies to provide you with a better online experience. Leave this site if you don't accept the usage of cookies. No tracking cookies are being used! To find out more, please visit this website's ",dismiss:"Got it!",link:"Privacy Policy.",href:"/privacy/"}})</script></body></html>

6
_site/tools/index.html Normal file
View file

@ -0,0 +1,6 @@
<!doctype html><html lang=en id=top><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>xw3.org:/tools/</title>
<meta name=author content="xw3.org "><meta name=generator content="xw3.org"><meta name=robots content="index,follow"><meta name=revisit-after content="7 days"><meta name=description content="A static HTML and CGI based website..."><meta name=keywords content="tools,ifconfig,ip,whois,networking,cgi,environment,env"><link rel="shortcut icon" type=image/png href=/favicon.png><link rel=stylesheet href=/css/main.css><link rel=stylesheet href=/css/fork-awesome.min.css><link rel=stylesheet href=/css/cookieconsent.min.css><script src=/js/jquery-3.6.4.min.js></script><link rel=canonical href=https://xw3.org/tools/><link rel=alternate type=application/rss+xml title="RSS Feed - [xw3.org]" href=https://xw3.org/feed.xml></head><body><div class=site><div id=loader class="lds-dual-ring hidden overlay"></div><header class=site-header><div class=wrapper><nav class=site-nav><a href=# class=menu-icon><span class="fa fa-bars" aria-hidden=true></span></a><div class=trigger><ul style=list-style:none><li><a class=page-link href=/ style=text-decoration:none>/</a></li><li><a class=page-link href=/about/ style=text-decoration:none>/about/</a></li><li><a class=page-link href=/contact/ style=text-decoration:none>/contact/</a></li><li><a class=page-link href=/tools/ style=text-decoration:none>/tools/</a></li></ul></div></nav></div></header><div class=page-content><div class=wrapper><div class=post><header class=post-header><h1 class=post-title id=terminal>xw3.org:/tools/</h1><p>This is a work in progress...</p></header><article class=post-content><h2>Networking</h2><ul><li><a href=/tools/ifconfig/>ifconfig</a> - Shows your IP address</li><li><a href=/tools/whoami/>whoami</a> - Shows your IP whois data</li></ul><h2>Try the CGI</h2><ul></ul><ul><li><a href=/cgi/bash/>bash</a></li><li><a href=/cgi/env/>env</a></li><li><a href=/cgi/perl/>perl</a></li><li><a href=/cgi/php/>php</a></li><li><a href=/cgi/python/>python</a></li><li><a href=/cgi/ruby/>ruby</a></li></ul></article></div></div></div><footer class=site-footer><div class=wrapper><div class=footer-col-wrapper><p style=text-align:center>Copyright &copy; 2024 - [xw3.org] -
<a href=/feed.xml class=rss><i class="fa fa-rss" aria-hidden=true></i><span style=display:none> RSS Feed</span></a> -
<a href=https://git.xw3.org/xw3 class=git><i class="fa fa-git" aria-hidden=true></i><span style=display:none> Git repositories</span></a> -
<a href=https://wiki.xw3.org/start class=book><i class="fa fa-book" aria-hidden=true></i><span style=display:none> Wiki</span></a></p></div></div></footer></div><p style=text-align:center;color:#e8e8e8;font-size:12px><span id=uptime>NULL</span><br>Page generated at: Feb 6, 2024 (CET/CEST) using Jekyll on GNU/Linux @jupiter<br>Powered by: <span id=uname>NULL</span></p><a href=#top id=topbutton><span></span></a>
<script src=/js/cookieconsent.min.js data-cfasync=false></script><script>$(document).ready(function(){$("#uname").load("/cgi/uname/"),$("#uptime").load("/cgi/uptime/")})</script><script>window.cookieconsent.initialise({palette:{popup:{background:"#000",text:"#e8e8e8"},button:{background:"#bc6c21"}},theme:"classic",position:"bottom",static:!1,content:{message:"This website uses cookies to provide you with a better online experience. Leave this site if you don't accept the usage of cookies. No tracking cookies are being used! To find out more, please visit this website's ",dismiss:"Got it!",link:"Privacy Policy.",href:"/privacy/"}})</script></body></html>

View file

@ -0,0 +1,6 @@
<!doctype html><html lang=en id=top><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>xw3.org:/tools/whoami/</title>
<meta name=author content="xw3.org "><meta name=generator content="xw3.org"><meta name=robots content="index,follow"><meta name=revisit-after content="7 days"><meta name=description content="A static HTML and CGI based website..."><meta name=keywords content="ip,dns,domainname,whois,whoami"><link rel="shortcut icon" type=image/png href=/favicon.png><link rel=stylesheet href=/css/main.css><link rel=stylesheet href=/css/fork-awesome.min.css><link rel=stylesheet href=/css/cookieconsent.min.css><script src=/js/jquery-3.6.4.min.js></script><link rel=canonical href=https://xw3.org/tools/whoami/><link rel=alternate type=application/rss+xml title="RSS Feed - [xw3.org]" href=https://xw3.org/feed.xml></head><body><div class=site><div id=loader class="lds-dual-ring hidden overlay"></div><header class=site-header><div class=wrapper><nav class=site-nav><a href=# class=menu-icon><span class="fa fa-bars" aria-hidden=true></span></a><div class=trigger><ul style=list-style:none><li><a class=page-link href=/ style=text-decoration:none>/</a></li><li><a class=page-link href=/about/ style=text-decoration:none>/about/</a></li><li><a class=page-link href=/contact/ style=text-decoration:none>/contact/</a></li><li><a class=page-link href=/tools/ style=text-decoration:none>/tools/</a></li></ul></div></nav></div></header><div class=page-content><div class=wrapper><div class=post><header class=post-header><h1 class=post-title id=terminal>xw3.org:/tools/whoami/</h1></header><article class=post-content><script>$(document).ready(function(){$("#whoami").load("/cgi/whois/")})</script><h2>Your IP whois data</h2><pre><span id=whoami name=whoami>NULL</span></pre><h2>API</h2><ul><li><a href=https://xw3.org/cgi/whois/>https://xw3.org/cgi/whois/</a> - whois accepts a host variable via GET or POST. E.g.: <a href="https://hanez.org/cgi/whois/?host=127.0.0.1">https://xw3.org/cgi/whois/?host=127.0.0.1</a>. It can be a hostname or IP. If no host is set your current IP is being used</li></ul></article></div></div></div><footer class=site-footer><div class=wrapper><div class=footer-col-wrapper><p style=text-align:center>Copyright &copy; 2024 - [xw3.org] -
<a href=/feed.xml class=rss><i class="fa fa-rss" aria-hidden=true></i><span style=display:none> RSS Feed</span></a> -
<a href=https://git.xw3.org/xw3 class=git><i class="fa fa-git" aria-hidden=true></i><span style=display:none> Git repositories</span></a> -
<a href=https://wiki.xw3.org/start class=book><i class="fa fa-book" aria-hidden=true></i><span style=display:none> Wiki</span></a></p></div></div></footer></div><p style=text-align:center;color:#e8e8e8;font-size:12px><span id=uptime>NULL</span><br>Page generated at: Feb 6, 2024 (CET/CEST) using Jekyll on GNU/Linux @jupiter<br>Powered by: <span id=uname>NULL</span></p><a href=#top id=topbutton><span></span></a>
<script src=/js/cookieconsent.min.js data-cfasync=false></script><script>$(document).ready(function(){$("#uname").load("/cgi/uname/"),$("#uptime").load("/cgi/uptime/")})</script><script>window.cookieconsent.initialise({palette:{popup:{background:"#000",text:"#e8e8e8"},button:{background:"#bc6c21"}},theme:"classic",position:"bottom",static:!1,content:{message:"This website uses cookies to provide you with a better online experience. Leave this site if you don't accept the usage of cookies. No tracking cookies are being used! To find out more, please visit this website's ",dismiss:"Got it!",link:"Privacy Policy.",href:"/privacy/"}})</script></body></html>

0
_tmp/.gitkeep Normal file
View file

9
about/about.html Normal file
View file

@ -0,0 +1,9 @@
---
layout: page
published: true
noToc: true
title: /about/
subtitle:
permalink: /about/
---

0
bin/.gitkeep Normal file
View file

0
build.log Normal file
View file

13
cgi/bash/bash.sh Executable file
View file

@ -0,0 +1,13 @@
---
permalink: /cgi/bash/index.sh
---
echo "Hello from bash!"
echo
echo 'date'
date
echo
echo 'for i in $(seq 1 10); do echo $i; done'
for i in $(seq 1 10); do echo $i; done

View file

@ -0,0 +1,27 @@
---
permalink: /cgi/challenge/
---
<?php
session_start();
session_set_cookie_params(3600);
date_default_timezone_set("{{ site.timezone }}");
if(isset($_SESSION["one"])) {
unset($_SESSION["one"]);
}
if(isset($_SESSION["two"])) {
unset($_SESSION["two"]);
}
$_SESSION["one"] = rand(0, 9);
$_SESSION["two"] = rand(0, 9);
#$_SESSION["sum"] = $_SESSION["one"] + $_SESSION["two"];
$challenge = $_SESSION["one"] . " + " . $_SESSION["two"];
header('Content-Type: text/plain');
echo($challenge);
?>

115
cgi/env/env.php vendored Normal file
View file

@ -0,0 +1,115 @@
---
layout: page
published: true
noToc: true
noDate: true
title: /cgi/env/
subtitle: /cgi is a language independent scripts directory like a <a href="https://en.wikipedia.org/wiki/Common_Gateway_Interface" class="ext">/cgi-bin</a>. It must be configured in your server configuration which language files can be executed. Binaries will work too... For now it all is a little magic to me, but I will tell you how it works for me some day... ;)
permalink: /cgi/env/
tags:
- env
- environment
- cgi
- bash
- gcc
- zsh
- perl
- php
- python
- ruby
- test
---
<?php
session_start();
session_set_cookie_params(3600);
date_default_timezone_set("{{ site.timezone }}");
?>
<h2>PHP Environment</h2>
<h3>GET:</h3>
<?php
ksort($_GET);
echo '<ul>';
foreach ($_GET as $key => $value) {
echo '<li>';
echo $key . ': ' . $value;
echo '</li>';
}
echo '</ul>';
?>
<h3>POST:</h3>
<?php
ksort($_POST);
echo '<ul>';
foreach ($_POST as $key => $value) {
echo '<li>';
echo $key . ': ' . $value;
echo '</li>';
}
echo '</ul>';
?>
<!--
<h3>SESSION:</h3>
<?php
var_dump($_SESSION);
#ksort($_SESSION);
#echo '<ul>';
#foreach ($_SESSION as $key => $value) {
# echo '<li>';
# echo $key . ': ' . $value;
# echo '</li>';
#}
#echo '</ul>';
?>
<h3>SERVER:</h3>
<?php
ksort($_SERVER);
echo '<ul>';
foreach ($_SERVER as $key => $value) {
echo '<li>';
echo $key . ': ' . $value;
echo '</li>';
}
echo '</ul>';
?>
-->
<h2>Runtimes</h2>
<?php
echo '<ul>';
echo '<li>bash --version: ' . shell_exec('bash --version');
echo ' - <a href="https://www.gnu.org/software/bash/" class="ext">https://www.gnu.org/software/bash/</a></li><li>';
echo 'gcc --version: ' . shell_exec('gcc --version');
echo ' - <a href="https://gcc.gnu.org/" class="ext">https://gcc.gnu.org/</a></li><li>';
echo 'jekyll --version: ' . shell_exec('jekyll --version');
echo ' - <a href="https://jekyllrb.com/" class="ext">https://jekyllrb.com/</a></li><li>';
echo 'lighttpd -v: ' . shell_exec('lighttpd -v');
echo ' - <a href="https://www.lighttpd.net/" class="ext">https://www.lighttpd.net/</a></li><li>';
echo 'Linux (uname -a): ' . shell_exec('uname -a');
echo ' - <a href="https://kernel.org/" class="ext">https://kernel.org/</a></li><li>';
echo 'OS (cat /etc/os-release): ' . shell_exec('cat /etc/os-release');
echo ' - <a href="https://alpinelinux.org/" class="ext">https://alpinelinux.org/</a></li><li>';
echo 'perl --version: ' . shell_exec('perl --version');
echo ' - <a href="https://www.perl.org/" class="ext">https://www.perl.org/</a></li><li>';
echo 'php --version: ' . shell_exec('php --version');
echo ' - <a href="https://www.php.net/" class="ext">https://www.php.net/</a></li><li>';
echo 'python --version: ' . shell_exec('python --version');
echo ' - <a href="https://www.python.org/" class="ext">https://www.python.org/</a></li><li>';
echo 'ruby --version: ' . shell_exec('ruby --version');
echo ' - <a href="https://www.ruby-lang.org/en/" class="ext">https://www.ruby-lang.org/en/</a></li><li>';
echo 'zsh --version: ' . shell_exec('zsh --version');
echo ' - <a href="https://www.zsh.org/" class="ext">https://www.zsh.org/</a></li>';
echo '</ul>';
?>

18
cgi/ifconfig/ifconfig.php Normal file
View file

@ -0,0 +1,18 @@
---
permalink: /cgi/ifconfig/
---
<?php
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
//ip from share internet
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
//ip pass from proxy
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
header('Content-Type: text/plain');
echo($ip);
?>

47
cgi/mail/mail.php Normal file
View file

@ -0,0 +1,47 @@
---
permalink: /cgi/mail/
---
<?php
session_start();
session_set_cookie_params(3600);
date_default_timezone_set("{{ site.timezone }}");
$error = "";
$sum = $_SESSION["one"] + $_SESSION["two"];
if ($_POST["sum"] != $sum) { $error = "{{ site.challenge_error }}"; }
if ($_POST["sum"] == $sum) {
$mailTo = "{{ site.email }}";
$mailAddress = "noreply@{{ site.url_short }}";
if($_POST["email"]) {
$mailAddress = $_POST["email"];
}
$mailHeaders = "From: " . $_POST["name"] . " <" . $mailAddress . ">" . "\r\n" .
"Date: " . date(DATE_RFC822);
$mailSubject = "[{{ site.url_short }}]: No subject!";
if($_POST["subject"]) {
$mailSubject = "[{{ site.url_short }}]: " . $_POST["subject"];
}
$mailBody = $_POST["message"] . "\n\n" . "Website: " . $_POST["website"] . "\nUser Agent: " . $_SERVER['HTTP_USER_AGENT'];
if (!@mail($mailTo, $mailSubject, $mailBody, $mailHeaders)) { $error = "Failed to send mail!"; }
unset($_SESSION["one"]);
unset($_SESSION["two"]);
}
header('Content-Type: text/plain');
if ($error=="") {
echo("{{ site.mail_thank_you }}");
} else {
//echo($error . " (". $_POST["sum"] . "/" . $sum . ")");
echo($error);
}
?>

19
cgi/perl/perl.pl Executable file
View file

@ -0,0 +1,19 @@
---
permalink: /cgi/perl/index.pl
---
use warnings;
use strict;
use POSIX qw(strftime);
my $date = strftime "%m/%d/%Y", localtime;
print "Hello from Perl!\n\n";
print $date;
print "\n\n";
print('my @i = (1..10); for(@i) { print("$_", "\n"); }');
print("\n");
my @i = (1..10); for(@i) { print("$_", "\n"); }

21
cgi/php/php.php Normal file
View file

@ -0,0 +1,21 @@
---
permalink: /cgi/php/index.php
---
<?php
header('Content-Type: text/plain');
echo('Hello from PHP!');
echo("\n\n");
echo('date("l jS \of F Y h:i:s A");');
echo("\n");
echo date("l jS \of F Y h:i:s A");
echo("\n\n");
echo('for ($x = 0; $x <= 10; $x++) { echo "$x\n"; }');
echo("\n");
for ($x = 1; $x <= 10; $x++) { echo "$x\n"; }
?>

16
cgi/python/python.py Executable file
View file

@ -0,0 +1,16 @@
---
permalink: /cgi/python/index.py
---
from datetime import datetime
from pprint import pprint
print("Hello from Python!")
print("")
print('print(datetime.today().strftime("%Y-%m-%d"))')
print(datetime.today().strftime('%Y-%m-%d'))
print("")
print("for i in range(1, 11): print(i);")
for i in range(1, 11): print(i);

13
cgi/ruby/ruby.rb Executable file
View file

@ -0,0 +1,13 @@
---
permalink: /cgi/ruby/index.rb
---
puts('Hello from Ruby!')
puts
puts('puts(Time.now.strftime("%d/%m/%Y %H:%M"))')
puts(Time.now.strftime("%d/%m/%Y %H:%M"))
puts
puts("(1..10).each { |n| puts n }")
(1..10).each { |n| puts n }

View file

@ -1,4 +0,0 @@
<?php
echo("Foo");

View file

@ -0,0 +1,19 @@
---
permalink: /cgi/timestamp/
---
<?php
session_start();
session_set_cookie_params(3600);
date_default_timezone_set("{{ site.timezone }}");
$timestamp = date('Y.m.d-h:i:s', time());
$milliseconds = floor(microtime(true) * 1000);
#echo($timestamp . "_" . time() . "_" . $milliseconds);
header('Content-Type: text/plain');
echo($timestamp . '.' . microtime(true));
?>

14
cgi/uname/uname.php Normal file
View file

@ -0,0 +1,14 @@
---
permalink: /cgi/uname/
---
<?php
$uname = shell_exec('uname -mrs');
$pos = strpos($uname, '-', 0);
$res = substr($uname, 0, $pos);
header('Content-Type: text/plain');
echo($res);
?>

11
cgi/uptime/uptime.php Normal file
View file

@ -0,0 +1,11 @@
---
permalink: /cgi/uptime/
---
<?php
$uptime = shell_exec('uptime');
$version = shell_exec('uptime -V');
header('Content-Type: text/plain');
echo('Server ' . substr($version, 0, -1) . ': ' . $uptime);
?>

29
cgi/whois/whois.php Normal file
View file

@ -0,0 +1,29 @@
---
permalink: /cgi/whois/
_note: https://www.w3docs.com/snippets/php/how-to-get-the-client-ip-address-in-php.html
---
<?php
if (!empty($_GET["host"]) and empty($_POST["host"])) {
$host = $_GET["host"];
} elseif (!empty($_POST["host"]) and empty($_GET["host"])) {
$host = $_POST["host"];
} else {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
//ip from share internet
$host = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
//ip pass from proxy
$host = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$host = $_SERVER['REMOTE_ADDR'];
}
}
$cmd = 'whois ' . $host;
$whois = shell_exec($cmd);
header('Content-Type: text/plain');
echo($whois);
?>

65
contact/contact.html Normal file
View file

@ -0,0 +1,65 @@
---
layout: page
published: true
noToc: true
noDate: true
noPermalink: true
title: /contact/
subtitle: A contact form inside a staic Jekyll site... ;)
permalink: /contact/
tags:
- contact
---
<script>
function doSubmit() {
$("#loader").removeClass("hidden");
event.preventDefault();
var form = $('#contactform')[0];
var data = new FormData(form);
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
data: data,
url: "/cgi/mail/",
processData: false,
contentType: false,
cache: false,
success: function(data){
window.alert(data);
$("#challenge").load("/cgi/challenge/");
$("#loader").addClass("hidden");
}
});
return false;
}
$(document).ready(function(){
$("#challenge").load("/cgi/challenge/");
});
</script>
<form id="contactform" method="post" onsubmit="return doSubmit();">
<div><label>Name:<span style="color:red;">*</span></label>
<input type="text" name="name" id="name" required></div>
<div><label>Email:</label>
<input type="email" name="email" id="email"></div>
<div><label>Website:</label>
<input type="text" name="website" id="website"></div>
<div><label>Subject:</label>
<input type="text" name="subject" id="subject"></div>
<div><label>Message:<span style="color:red;">*</span></label>
<textarea name="message" id="message" required style="font-size:1em;font-family:OpenSans-Regular;"></textarea></div>
<div style="text-align:left;width:50%;float:left;"><label>Challenge: <span id="challenge" name="challenge">NULL</span>?
<span style="color:red;">*</span></label>
<input style="width:10%;text-align:center;" type="text" name="sum" id="sum" required></div>
<div style="text-align:right;width:50%;float:right;"><span style="color:red;">*</span> = Required fields</div>
<div><input type="submit" value="Send!" id="button"></div>
</form>

6
css/cookieconsent.min.css vendored Normal file
View file

@ -0,0 +1,6 @@
.cc-window{opacity:1;-webkit-transition:opacity 1s ease;transition:opacity 1s ease}.cc-window.cc-invisible{opacity:0}.cc-animate.cc-revoke{-webkit-transition:transform 1s ease;-webkit-transition:-webkit-transform 1s ease;transition:-webkit-transform 1s ease;transition:transform 1s ease;transition:transform 1s ease,-webkit-transform 1s ease}.cc-animate.cc-revoke.cc-top{-webkit-transform:translateY(-2em);transform:translateY(-2em)}.cc-animate.cc-revoke.cc-bottom{-webkit-transform:translateY(2em);transform:translateY(2em)}.cc-animate.cc-revoke.cc-active.cc-top{-webkit-transform:translateY(0);transform:translateY(0)}.cc-animate.cc-revoke.cc-active.cc-bottom{-webkit-transform:translateY(0);transform:translateY(0)}.cc-revoke:hover{-webkit-transform:translateY(0);transform:translateY(0)}.cc-grower{max-height:0;overflow:hidden;-webkit-transition:max-height 1s;transition:max-height 1s}
.cc-revoke,.cc-window{position:fixed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Helvetica,Calibri,Arial,sans-serif;font-size:16px;line-height:1.5em;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;z-index:9999}.cc-window.cc-static{position:static}.cc-window.cc-floating{padding:2em;max-width:24em;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner{padding:1em 1.8em;width:100%;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.cc-revoke{padding:.5em}.cc-revoke:hover{text-decoration:underline}.cc-header{font-size:18px;font-weight:700}.cc-btn,.cc-close,.cc-link,.cc-revoke{cursor:pointer}.cc-link{opacity:.8;display:inline-block;padding:.2em;text-decoration:underline}.cc-link:hover{opacity:1}.cc-link:active,.cc-link:visited{color:initial}.cc-btn{display:block;padding:.4em .8em;font-size:.9em;font-weight:700;border-width:2px;border-style:solid;text-align:center;white-space:nowrap}.cc-highlight .cc-btn:first-child{background-color:transparent;border-color:transparent}.cc-highlight .cc-btn:first-child:focus,.cc-highlight .cc-btn:first-child:hover{background-color:transparent;text-decoration:underline}.cc-close{display:block;position:absolute;top:.5em;right:.5em;font-size:1.6em;opacity:.9;line-height:.75}.cc-close:focus,.cc-close:hover{opacity:1}
.cc-revoke.cc-top{top:0;left:3em;border-bottom-left-radius:.5em;border-bottom-right-radius:.5em}.cc-revoke.cc-bottom{bottom:0;left:3em;border-top-left-radius:.5em;border-top-right-radius:.5em}.cc-revoke.cc-left{left:3em;right:unset}.cc-revoke.cc-right{right:3em;left:unset}.cc-top{top:1em}.cc-left{left:1em}.cc-right{right:1em}.cc-bottom{bottom:1em}.cc-floating>.cc-link{margin-bottom:1em}.cc-floating .cc-message{display:block;margin-bottom:1em}.cc-window.cc-floating .cc-compliance{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.cc-window.cc-banner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cc-banner.cc-top{left:0;right:0;top:0}.cc-banner.cc-bottom{left:0;right:0;bottom:0}.cc-banner .cc-message{display:block;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:100%;margin-right:1em}.cc-compliance{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:justify;align-content:space-between}.cc-floating .cc-compliance>.cc-btn{-webkit-box-flex:1;-ms-flex:1;flex:1}.cc-btn+.cc-btn{margin-left:.5em}
@media print{.cc-revoke,.cc-window{display:none}}@media screen and (max-width:900px){.cc-btn{white-space:normal}}@media screen and (max-width:414px) and (orientation:portrait),screen and (max-width:736px) and (orientation:landscape){.cc-window.cc-top{top:0}.cc-window.cc-bottom{bottom:0}.cc-window.cc-banner,.cc-window.cc-floating,.cc-window.cc-left,.cc-window.cc-right{left:0;right:0}.cc-window.cc-banner{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.cc-window.cc-banner .cc-compliance{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.cc-window.cc-floating{max-width:none}.cc-window .cc-message{margin-bottom:1em}.cc-window.cc-banner{-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset}.cc-window.cc-banner .cc-message{margin-right:0}}
.cc-floating.cc-theme-classic{padding:1.2em;border-radius:5px}.cc-floating.cc-type-info.cc-theme-classic .cc-compliance{text-align:center;display:inline;-webkit-box-flex:0;-ms-flex:none;flex:none}.cc-theme-classic .cc-btn{border-radius:5px}.cc-theme-classic .cc-btn:last-child{min-width:140px}.cc-floating.cc-type-info.cc-theme-classic .cc-btn{display:inline-block}
.cc-theme-edgeless.cc-window{padding:0}.cc-floating.cc-theme-edgeless .cc-message{margin:2em;margin-bottom:1.5em}.cc-banner.cc-theme-edgeless .cc-btn{margin:0;padding:.8em 1.8em;height:100%}.cc-banner.cc-theme-edgeless .cc-message{margin-left:1em}.cc-floating.cc-theme-edgeless .cc-btn+.cc-btn{margin-left:0}

2733
css/fork-awesome.css Normal file

File diff suppressed because it is too large Load diff

12
css/fork-awesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

29
css/main.scss Normal file
View file

@ -0,0 +1,29 @@
---
# Only the main Sass file needs front matter (the dashes are enough)
---
@charset "utf-8";
$base-font-family: "OpenSans-Regular";
$base-font-size: 16px;
$small-font-size: $base-font-size * 0.875;
$base-line-height: 1.6;
$spacing-unit: 18px;
$text-color: #000;
$background-color: #293e58;
$headline-color: #bc6c21; //#b40000;
$hover-color: #b40000;
$topbutton-color: $headline-color;
$brand-color: $background-color;
$brand-color-light: lighten($brand-color, 40%);
$grey-color: #828282;
$grey-color-light: #e8e8e8;
$grey-color-dark: #dbdbdb;
$green-color: #3ab215;
$content-width: 848px;
$on-palm: 761px;
$on-laptop: 848px;
@mixin media-query($device) {
@media screen and (max-width: $device) {
@content;
}
}
@import "base", "layout", "toc";

446
css/v5-compat.css Normal file
View file

@ -0,0 +1,446 @@
/*!
Fork Awesome 1.2.0
License - https://forkaweso.me/Fork-Awesome/license
Copyright 2018 Dave Gandy & Fork Awesome
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
.fas,
.fab,
.far {
display: inline-block;
font: normal normal normal 14px/1 ForkAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.fas.fa-chart-area:before {
content: "\f1fe";
}
.fas.fa-arrows-alt:before {
content: "\f047";
}
.fas.fa-expand-arrows-alt:before {
content: "\f0b2";
}
.fas.fa-arrows-alt-h:before {
content: "\f07e";
}
.fas.fa-arrows-alt-v:before {
content: "\f07d";
}
.fas.fa-calendar-alt:before {
content: "\f073";
}
.fas.fa-circle-notch:before {
content: "\f1ce";
}
.fas.fa-cloud-download-alt:before {
content: "\f0ed";
}
.fas.fa-cloud-upload-alt:before {
content: "\f0ee";
}
.fas.fa-credit-card:before {
content: "\f283";
}
.fas.fa-dollar-sign:before {
content: "\f155";
}
.fas.fa-euro-sign:before {
content: "\f153";
}
.fas.fa-exchange-alt:before {
content: "\f0ec";
}
.fas.fa-external-link-alt:before {
content: "\f08e";
}
.fas.fa-external-link-square-alt:before {
content: "\f14c";
}
.fas.fa-eye-dropper:before {
content: "\f1fb";
}
.fas.fa-pound-sign:before {
content: "\f154";
}
.fas.fa-glass-martini:before {
content: "\f000";
}
.fas.fa-shekel-sign:before {
content: "\f20b";
}
.fas.fa-rupee-sign:before {
content: "\f156";
}
.fas.fa-won-sign:before {
content: "\f159";
}
.fas.fa-level-down-alt:before {
content: "\f149";
}
.fas.fa-level-up-alt:before {
content: "\f148";
}
.fas.fa-chart-line:before {
content: "\f201";
}
.fas.fa-long-arrow-alt-down:before {
content: "\f175";
}
.fas.fa-long-arrow-alt-left:before {
content: "\f177";
}
.fas.fa-long-arrow-alt-right:before {
content: "\f178";
}
.fas.fa-long-arrow-alt-up:before {
content: "\f176";
}
.fas.fa-map-marker-alt:before {
content: "\f041";
}
.fas.fa-mobile-alt:before {
content: "\f10b";
}
.fas.fa-pencil-alt:before {
content: "\f040";
}
.fas.fa-pen-square:before {
content: "\f14b";
}
.fas.fa-chart-pie:before {
content: "\f200";
}
.fas.fa-yen-sign:before {
content: "\f157";
}
.fas.fa-ruble-sign:before {
content: "\f158";
}
.fas.fa-shield-alt:before {
content: "\f132";
}
.fas.fa-sign-in-alt:before {
content: "\f090";
}
.fas.fa-sign-out-alt:before {
content: "\f08b";
}
.fas.fa-sliders-h:before {
content: "\f1de";
}
.fas.fa-tablet-alt:before {
content: "\f10a";
}
.fas.fa-tachometer-alt:before {
content: "\f0e4";
}
.fas.fa-thumbtack:before {
content: "\f08d";
}
.fas.fa-ticket-alt:before {
content: "\f145";
}
.fas.fa-trash-alt:before {
content: "\f1f8";
}
.fas.fa-lira-sign:before {
content: "\f195";
}
.fab.fa-linkedin-in:before {
content: "\fe01";
}
.fab.fa-linkedin:before {
content: "\f08c";
}
.far.fa-address-book:before {
content: "\f2ba";
}
.far.fa-address-card:before {
content: "\f2bc";
}
.far.fa-arrow-alt-circle-down:before {
content: "\f01a";
}
.far.fa-arrow-alt-circle-left:before {
content: "\f190";
}
.far.fa-arrow-alt-circle-right:before {
content: "\f18e";
}
.far.fa-arrow-alt-circle-up:before {
content: "\f01b";
}
.far.fa-bell:before {
content: "\f0f3";
}
.far.fa-bell-slash:before {
content: "\f1f7";
}
.far.fa-bookmark:before {
content: "\f097";
}
.far.fa-building:before {
content: "\f0f7";
}
.far.fa-calendar-check:before {
content: "\f274";
}
.far.fa-calendar-minus:before {
content: "\f272";
}
.far.fa-calendar:before {
content: "\f133";
}
.far.fa-calendar-plus:before {
content: "\f271";
}
.far.fa-calendar-times:before {
content: "\f273";
}
.far.fa-caret-square-down:before {
content: "\f150";
}
.far.fa-caret-square-left:before {
content: "\f191";
}
.far.fa-caret-square-right:before {
content: "\f152";
}
.far.fa-caret-square-up:before {
content: "\f151";
}
.far.fa-check-circle:before {
content: "\f05d";
}
.far.fa-check-square:before {
content: "\f046";
}
.far.fa-circle:before {
content: "\f10c";
}
.far.fa-clock:before {
content: "\f017";
}
.far.fa-comment:before {
content: "\f0e5";
}
.far.fa-comment-dots:before {
content: "\f27b";
}
.far.fa-comments:before {
content: "\f0e6";
}
.far.fa-dot-circle:before {
content: "\f192";
}
.far.fa-id-card:before {
content: "\f2c3";
}
.far.fa-envelope:before {
content: "\f003";
}
.far.fa-envelope-open:before {
content: "\f2b7";
}
.far.fa-file-archive:before {
content: "\f1c6";
}
.far.fa-file-audio:before {
content: "\f1c7";
}
.far.fa-file-code:before {
content: "\f1c9";
}
.far.fa-file-excel:before {
content: "\f1c3";
}
.far.fa-file-image:before {
content: "\f1c5";
}
.far.fa-file-video:before {
content: "\f1c8";
}
.far.fa-copy:before,
.far.fa-file:before {
content: "\f016";
}
.far.fa-file-pdf:before {
content: "\f1c1";
}
.far.fa-file-powerpoint:before {
content: "\f1c4";
}
.far.fa-file-alt:before {
content: "\f0f6";
}
.far.fa-file-word:before {
content: "\f1c2";
}
.far.fa-flag:before {
content: "\f11d";
}
.far.fa-save:before {
content: "\f0c7";
}
.far.fa-folder:before {
content: "\f114";
}
.far.fa-folder-open:before {
content: "\f115";
}
.far.fa-frown:before {
content: "\f119";
}
.far.fa-futbol:before {
content: "\f1e3";
}
.far.fa-hand-rock:before {
content: "\f255";
}
.far.fa-hand-lizard:before {
content: "\f258";
}
.far.fa-hand-point-down:before {
content: "\f0a7";
}
.far.fa-hand-point-left:before {
content: "\f0a5";
}
.far.fa-hand-point-right:before {
content: "\f0a4";
}
.far.fa-hand-point-up:before {
content: "\f0a6";
}
.far.fa-hand-paper:before {
content: "\256";
}
.far.fa-hand-pointer:before {
content: "\f25a";
}
.far.fa-hand-scissors:before {
content: "\f257";
}
.far.fa-hand-spock:before {
content: "\f259";
}
.far.fa-handshake:before {
content: "\f2b5";
}
.far.fa-hdd:before {
content: "\f0a0";
}
.far.fa-heart:before {
content: "\f08a";
}
.far.fa-hospital:before {
content: "\f0f8";
}
.far.fa-hourglass:before {
content: "\f250";
}
.far.fa-id-card:before {
content: "\f2c3";
}
.far.fa-keyboard:before {
content: "\f11c";
}
.far.fa-lemon:before {
content: "\f094";
}
.far.fa-lightbulb:before {
content: "\f0eb";
}
.far.fa-meh:before {
content: "\f11a";
}
.far.fa-minus-square:before {
content: "\f147";
}
.far.fa-money-bill-alt:before {
content: "\f0d6";
}
.far.fa-moon:before {
content: "\f186";
}
.far.fa-newspaper:before {
content: "\f1ea";
}
.far.fa-paper-plane:before {
content: "\f1d9";
}
.far.fa-pause-circle:before {
content: "\f28c";
}
.far.fa-edit:before {
content: "\f044";
}
.far.fa-image:before {
content: "\f03e";
}
.far.fa-play-circle:before {
content: "\f01d";
}
.far.fa-plus-square:before {
content: "\f196";
}
.far.fa-question-circle:before {
content: "\f92c";
}
.far.fa-share-square:before {
content: "\f045";
}
.far.fa-smile:before {
content: "\f118";
}
.far.fa-snowflake:before {
content: "\f2dc";
}
.far.fa-futbol:before {
content: "\f1e3";
}
.far.fa-star-half:before {
content: "\f089";
}
.far.fa-star:before {
content: "\f006";
}
.far.fa-sticky-note:before {
content: "\f24a";
}
.far.fa-stop-circle:before {
content: "\f28e";
}
.far.fa-sun:before {
content: "\f185";
}
.far.fa-thumbs-down:before {
content: "\f088";
}
.far.fa-thumbs-up:before {
content: "\f087";
}
.far.fa-times-circle:before {
content: "\f05c";
}
.far.fa-window-close:before {
content: "\f2d4";
}
.far.fa-trash-alt:before {
content: "\f014";
}
.far.fa-user-circle:before {
content: "\f2be";
}
.far.fa-user:before {
content: "\f2c0";
}

12
css/v5-compat.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"version":3,"sources":["v5-compat.css"],"names":[],"mappings":"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"}

View file

@ -1,191 +0,0 @@
/**
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
* https://github.com/chjj/term.js
* @license MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* Originally forked from (with the author's permission):
* Fabrice Bellard's javascript vt100 for jslinux:
* http://bellard.org/jslinux/
* Copyright (c) 2011 Fabrice Bellard
* The original design remains. The terminal itself
* has been extended to include xterm CSI codes, among
* other features.
*/
/**
* Default styles for xterm.js
*/
.xterm {
cursor: text;
position: relative;
user-select: none;
-ms-user-select: none;
-webkit-user-select: none;
}
.xterm.focus,
.xterm:focus {
outline: none;
}
.xterm .xterm-helpers {
position: absolute;
top: 0;
/**
* The z-index of the helpers must be higher than the canvases in order for
* IMEs to appear on top.
*/
z-index: 5;
}
.xterm .xterm-helper-textarea {
padding: 0;
border: 0;
margin: 0;
/* Move textarea out of the screen to the far left, so that the cursor is not visible */
position: absolute;
opacity: 0;
left: -9999em;
top: 0;
width: 0;
height: 0;
z-index: -5;
/** Prevent wrapping so the IME appears against the textarea at the correct position */
white-space: nowrap;
overflow: hidden;
resize: none;
}
.xterm .composition-view {
/* TODO: Composition position got messed up somewhere */
background: #000;
color: #FFF;
display: none;
position: absolute;
white-space: nowrap;
z-index: 1;
}
.xterm .composition-view.active {
display: block;
}
.xterm .xterm-viewport {
/* On OS X this is required in order for the scroll bar to appear fully opaque */
background-color: #000;
overflow-y: scroll;
cursor: default;
position: absolute;
right: 0;
left: 0;
top: 0;
bottom: 0;
}
.xterm .xterm-screen {
position: relative;
}
.xterm .xterm-screen canvas {
position: absolute;
left: 0;
top: 0;
}
.xterm .xterm-scroll-area {
visibility: hidden;
}
.xterm-char-measure-element {
display: inline-block;
visibility: hidden;
position: absolute;
top: 0;
left: -9999em;
line-height: normal;
}
.xterm.enable-mouse-events {
/* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */
cursor: default;
}
.xterm.xterm-cursor-pointer,
.xterm .xterm-cursor-pointer {
cursor: pointer;
}
.xterm.column-select.focus {
/* Column selection mode */
cursor: crosshair;
}
.xterm .xterm-accessibility,
.xterm .xterm-message {
position: absolute;
left: 0;
top: 0;
bottom: 0;
z-index: 10;
color: transparent;
}
.xterm .live-region {
position: absolute;
left: -9999px;
width: 1px;
height: 1px;
overflow: hidden;
}
.xterm-dim {
opacity: 0.5;
}
.xterm-underline-1 { text-decoration: underline; }
.xterm-underline-2 { text-decoration: double underline; }
.xterm-underline-3 { text-decoration: wavy underline; }
.xterm-underline-4 { text-decoration: dotted underline; }
.xterm-underline-5 { text-decoration: dashed underline; }
.xterm-strikethrough {
text-decoration: line-through;
}
.xterm-screen .xterm-decoration-container .xterm-decoration {
z-index: 6;
position: absolute;
}
.xterm-decoration-overview-ruler {
z-index: 7;
position: absolute;
top: 0;
right: 0;
pointer-events: none;
}
.xterm-decoration-top {
z-index: 2;
position: relative;
}

View file

@ -1,49 +0,0 @@
@font-face {
font-family: 'VTFMisterPixelRegular';
src: url('/fonts/VTFMisterPixelRegular.otf') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'VTFMisterPixelTools';
src: url('/fonts/VTFMisterPixelTools.otf') format('opentype');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'teletext2';
src: url('../fonts/teletext2-webfont.woff2') format('woff2');
/* font-weight:400; */
font-style:normal
}
html {
background: #000;
}
body {
color: #fff;
font-size: 18px;
font-family: 'teletext2';
}
pre {
font-family: 'teletext2';
}
#parent {
}
.center {
text-align: center;
}
#powered {
position: fixed;
right: 20px;
bottom: 20px;
text-align: right;
}

29
feed.xml Normal file
View file

@ -0,0 +1,29 @@
---
layout:
---
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>{{ site.title | xml_escape }}</title>
<description>{{ site.description | xml_escape }}</description>
<link>{{ site.url }}</link>
<atom:link href="{{ site.url }}/feed.xml" rel="self" type="application/rss+xml"/>
<pubDate>{{ site.time | date_to_rfc822 }}</pubDate>
<lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
{% for post in site.posts limit:10 %}
<item>
<title>{{ post.title | xml_escape }}</title>
<description>{{ post.content | xml_escape }}</description>
<pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
<link>{{ site.url }}{{ post.url }}</link>
<guid isPermaLink="true">{{ site.url }}{{ post.url }}</guid>
{% for tag in post.tags %}
<category>{{ tag | xml_escape }}</category>
{% endfor %}
{% for cat in post.categories %}
<category>{{ cat | xml_escape }}</category>
{% endfor %}
</item>
{% endfor %}
</channel>
</rss>

0
files/.gitkeep Normal file
View file

Binary file not shown.

BIN
fonts/Glass_TTY_VT220.ttf Normal file

Binary file not shown.

BIN
fonts/Graph-35-pix.ttf Normal file

Binary file not shown.

BIN
fonts/OpenSans-Regular.woff Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more