commit 4f64e923e703280ca4211c9e6919ee91bb328145 from: noodle date: Mon Feb 9 20:21:54 2026 UTC AWKification, README writeup, and refactor paths commit - 698528a410e37fa3f23c4983b703128fc9dc2839 commit + 4f64e923e703280ca4211c9e6919ee91bb328145 blob - bb98d07ad5fa2dbe4ac9c7657b73a7080f3b0b21 blob + eab80b15375c58e6969fb4da3c69edfa78cd924f --- Makefile +++ Makefile @@ -1,32 +1,22 @@ PREFIX = /var/www -CGIBINDIR = cgi-bin -HTDOCSDIR = htdocs/pastanoggin.com +HTDOCSDIR = /htdocs/pastanoggin.com -CGIDIR = ${PREFIX}/${CGIBINDIR} -ROOTDIR = ${PREFIX}/${HTDOCSDIR} - install: - # perl - install -d ${DISTDIR}${PREFIX}/usr/bin - install -g www -m 755 -o www /usr/bin/perl ${DESTDIR}${PREFIX}/usr/bin - install -d ${DISTDIR}${PREFIX}/usr/lib - install -g www -m 755 -o www /usr/lib/libperl.so.* \ - ${DESTDIR}${PREFIX}/usr/lib - install -g www -m 755 -o www /usr/lib/libm.so.* ${DESTDIR}${PREFIX}/usr/lib - install -g www -m 755 -o www /usr/lib/libc.so.* ${DESTDIR}${PREFIX}/usr/lib - install -d ${DISTDIR}${PREFIX}/usr/libexec - install -g www -m 755 -o www /usr/libexec/ld.so \ - ${DESTDIR}${PREFIX}/usr/libexec - install -d ${DISTDIR}${PREFIX}/usr/libdata/perl5 - # cgi - install -d ${DESTDIR}${CGIDIR} - install -g www -m 0555 -o www perl.cgi ${DESTDIR}${CGIDIR} - # documents - install -d ${DESTDIR}${ROOTDIR}/docs - install -g www -m 0555 -o www docs/* ${DESTDIR}${ROOTDIR}/docs - # static files - install -d ${DESTDIR}${ROOTDIR}/static - install -g www -m 0555 -o www static/* ${DESTDIR}${ROOTDIR}/static + install -d -o root -g daemon ${DISTDIR}${PREFIX}/usr/bin + install -o root -g bin -m 555 /usr/bin/awk ${DESTDIR}${PREFIX}/usr/bin + install -d -o root -g daemon ${DISTDIR}${PREFIX}/usr/lib + install -o root -g bin -m 444 /usr/lib/libm.so.* ${DESTDIR}${PREFIX}/usr/lib + install -o root -g bin -m 444 /usr/lib/libc.so.* ${DESTDIR}${PREFIX}/usr/lib + install -d -o root -g daemon ${DISTDIR}${PREFIX}/usr/libexec + install -o root -g bin -m 555 /usr/libexec/ld.so ${DESTDIR}${PREFIX}/usr/libexec + install -d ${DESTDIR}${PREFIX}/cgi-bin + install -o root -g bin awk.cgi ${DESTDIR}${PREFIX}/cgi-bin + install -d ${DESTDIR}${PREFIX}${HTDOCSDIR}/docs + install docs/* ${DESTDIR}${PREFIX}${HTDOCSDIR}/docs + install -d ${DESTDIR}${PREFIX}${HTDOCSDIR}/img + install img/* ${DESTDIR}${PREFIX}${HTDOCSDIR}/img + install -d ${DESTDIR}${PREFIX}${HTDOCSDIR}/style + install style/* ${DESTDIR}${PREFIX}${HTDOCSDIR}/style uninstall: - rm -f ${DESTDIR}${PREFIX}/cgi-bin/perl.cgi + rm -f ${DESTDIR}${PREFIX}/cgi-bin/awk.cgi blob - e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 blob + a4e274debefbe15d8d914406550034512909e235 --- README +++ README @@ -0,0 +1,7 @@ +A CGI script in AWK because why not. + +It uses the a template file like main.tmp as a base with jinja2-like +placeholders like [%title%], [%content%], etc. the script matches +endpoints to a pair of template file and page title and sends it +to the renderer, which prints the appropriate HTTP header lines and +the requested page. blob - /dev/null blob + 5a4a279c0aab648f107dabcec145c1396976eabc (mode 644) --- /dev/null +++ docs/blog.html @@ -0,0 +1 @@ +No blogs here yet!!! blob - /dev/null blob + 7ac968b899af253be4dbf5ba3d418116d1a143bd (mode 644) --- /dev/null +++ docs/contact.html @@ -0,0 +1,12 @@ +

how 2 contact?

+ +
+
E-mail
+
[REDACTED] (working on it)
+
IRC
+
anelli (not registered everywhere though)
+
XMPP
+
anelli@pastanoggin.com
+
+ +

yay!

blob - /dev/null blob + f5d795d33fe67c302f88519310b75fc93a283969 (mode 644) --- /dev/null +++ docs/links.html @@ -0,0 +1,33 @@ +

-because search engines suck :b

+ +

my button :3

+
+ button to https://pastanoggin.com +
<a href="https://pastanoggin.com"><img src="https://pastanoggin.com/static/badge.png" alt="button to https://pastanoggin.com"></a>
+
+ +

kin

+ + +

preddy

+ + +

tech

+ + +

other

+ blob - /dev/null blob + d77c9b10f3ef6b86923919821954ee85af8ba60f (mode 644) --- /dev/null +++ docs/main.tmp @@ -0,0 +1,47 @@ + + + + + + + + + [%title%] + + + +
+ + +
+ +
+ [%content%] +
+
+
status
+
+ [%status%] +
+
+ + + blob - /dev/null blob + 8bd8e37377744709821b218d5b2fe9ee5ac721e4 (mode 644) --- /dev/null +++ docs/root.html @@ -0,0 +1,24 @@ +
+

"DO YOU HAVE A GRIMOIRE, SHITASS????"

+- My friend +
+
+ +

Hello, this is alex/anelli/noodle/etc,

+

I think personal websites are way cooler than social media so hi. After surfing some neocities-like websites i was like "daym this is fun" (check out my favourites in the links page); so I'm trying to make a funny website too with blackjack and hookers as the cool kids say. I'll also blog and host code here for the lols.

+ +

Likes:

+ + +

Dislikes:

+ blob - /dev/null blob + 500b2c2924ac42035c507b8054c682e9b81c682d (mode 644) --- /dev/null +++ docs/status.html @@ -0,0 +1 @@ +openbsd vs freebsd rap battle blob - /dev/null blob + 4d39ab4070ad60ad15373d6b374dc32241692d08 (mode 644) --- /dev/null +++ awk.cgi @@ -0,0 +1,63 @@ +#!/bin/awk -f + +function header(code){ + printf "Status: %s\nContent-Type: text/html\n\n", code +} + +function readfile(a, i, path){ + while((ret = getline 0) + a[i++] = $0 + if(ret == -1) + print "couldn't read from "path >"/dev/stderr" + return i +} + +function cat(a, n, i){ + for(i = 0; i < n; i++) + print a[i] +} + +function error(code, a, len){ + header(code) + len = readfile(a, 0, basedir"/docs/"code".html") + cat(a, len) +} + +function render(docpath, doctitle){ + template_path = basedir"/docs/main.tmp" + + while((ret = getline 0){ + if($0 ~ /\[%title%\]/) + lines[len++] = doctitle + else if($0 ~ /\[%content%\]/) + len = readfile(lines, len, basedir"/docs/"docpath) + else if($0 ~ /\[%status%\]/) + len = readfile(lines, len, basedir"/docs/status.html") + else + lines[len++] = $0 + } + if(ret == -1) + print "couldn't read from "template_path >"/dev/stderr" + if(len > 0){ + header(200) + cat(lines, len) + } else + error(404) +} + +BEGIN{ + basedir = "/htdocs/pastanoggin.com" + $0 = ENVIRON["PATH_INFO"] ? ENVIRON["PATH_INFO"] : "/" + + if(/^\/?$/) + render("root.html", "pastanoggin!!"); + else if(/^\/contact\/?$/) + render("contact.html", "hello, is it me you're looking for?"); + else if(/^\/blog\/?$/) + render("blog.html", "yapyapyapyap :D"); + else if(/^\/links\/?$/) + render("links.html", "the interwebs"); + else + error(404) + exit +} blob - /dev/null blob + 08375c54b23cab4e41167eb8b728ea3b9f25d80d (mode 644) Binary files /dev/null and img/badge.png differ blob - /dev/null blob + 1f8960dd28d6b237c43754e372b7273d2106ddab (mode 644) Binary files /dev/null and img/banner.png differ blob - /dev/null blob + b0cff362e5071bfc8d2fa15ad1401a5ed560c56d (mode 644) Binary files /dev/null and img/blunt.png differ blob - /dev/null blob + 4dca2c0c600d68015e9ae094ee86b3811236e046 (mode 644) Binary files /dev/null and img/created_by_a_human.png differ blob - /dev/null blob + bf18a139d0052a14cb306d360a7479e87a55fd2a (mode 644) Binary files /dev/null and img/cursor.png differ blob - /dev/null blob + 3ec3731ab550b44289ff65397b14a72797f8f4af (mode 644) Binary files /dev/null and img/mothracompat.gif differ blob - /dev/null blob + c7edfefa5b3328d23082a6f58c4096ff609d751f (mode 644) Binary files /dev/null and img/obsd.jpg differ blob - /dev/null blob + a5ddb12a2972159a43f002af3034396995356c88 (mode 644) Binary files /dev/null and img/tile.png differ blob - /dev/null blob + 27189c000edfffe30316dedf6dd9cc6c36336360 (mode 644) Binary files /dev/null and img/under_construction.png differ blob - /dev/null blob + 313c8c3dd5869e1c4238e924167f6fcc2616f650 (mode 644) --- /dev/null +++ style/main.css @@ -0,0 +1,167 @@ +:root { + --color-grey: #222222; + --text-color: #f9f9f9; + --color-purple: #8f60af; + --background-img: url(/img/tile.png); +} + +* { + cursor: url("/img/cursor.png"), auto; +} + +body { + min-width: 20rem; + max-width: 60rem; + margin: auto; + padding: 1em; + color: var(--text-color); + background-image: var(--background-img); + display: flex; + gap: 1em; + flex-wrap: wrap; + flex-direction: row-reverse; +} + +header { + flex-basis: 100%; + display: flex; + position: relative; + justify-content: center; +} + +nav { + flex-basis: 10%; + flex-grow: 1; + display: flex; + align-items: start; +} + +main { + flex-basis: 70%; + flex-grow: 1; +} + +footer { + flex-basis: 100%; + display: flex; + flex-wrap: wrap; + gap: 0.5em; +} + +a { + color: lightblue; +} + +.nav-list { + width: 100%; + margin: 0; + padding: 0; + list-style: none; + display: flex; + gap: 1em; + flex-wrap: wrap; +} + +.nav-item { + flex-grow: 1; + flex-shrink: 1; + flex-basis: 0; + display: flex; +} + +.box { + padding: 1em; + border-style: groove; + border-width: 0.5em; + background-color: var(--color-grey); + border-color: var(--color-purple); +} + +.lighten:hover { + filter: brightness(110%); +} + +.nav-link { + width: 100%; + text-align: center; + align-content: center; + color: var(--color-grey); + text-decoration: none; + background: var(--color-purple); + border-style: outset; + border-color: var(--color-purple); + padding: 0.5em; + font-family: monospace; + font-weight: bold; + font-size: 1.5em; +} + +.nav-link:hover { + filter: brightness(130%); +} + +.buttonbadge { + width: 88px; + height: 31px; + vertical-align: middle; +} + +.codeblock { + white-space: pre-wrap; + word-break: break-all; + background: black; + color: lightgreen; +} + +#banner { + max-width: 100%; + object-fit: contain; + image-rendering: pixelated; +} + +#construction { + position: absolute; + bottom: 0; + right: 0; + height: auto; + width: 30%; + max-width: 125px; + max-height: 100%; +} + +#status { + margin: 0; + background-color: #8f60af; + color: var(--color-grey); + border-radius: 1.5em; + padding: 0.5em; + display: flex; + align-items: center; + gap: 1em; + flex-basis: 100%; + border-color: var(--color-grey); + border-width: 0.1em; + border-style: solid; +} + +#status-header { + padding: 0.1em 1em; + background: white; + height: 100%; + border-radius: 1em; + text-align: center; + align-content: center; +} + +#status-body { + margin: 0; + font-size: 1.2em; + color: white; + word-break: break-word; +} + +@media only screen and (min-width: 800px) { + ul { + flex-direction: column; + } +}