diff options
-rwxr-xr-x | data.cgi | 8 | ||||
-rwxr-xr-x | embed.cgi | 123 | ||||
-rwxr-xr-x | embed.cgi.txt | 121 | ||||
-rwxr-xr-x | embed_old.cgi | 104 | ||||
-rwxr-xr-x | embed_old_old.cgi | 154 | ||||
-rw-r--r-- | george.png | bin | 0 -> 1339760 bytes | |||
-rw-r--r-- | georgedata.py | 31 | ||||
-rwxr-xr-x | index.cgi | 39 | ||||
-rw-r--r-- | oldindex.html | 142 | ||||
-rw-r--r-- | reddit.txt | 2 | ||||
-rw-r--r-- | status.txt | 1 | ||||
-rwxr-xr-x | test.cgi | 7 | ||||
-rw-r--r-- | twitter.txt | 2 |
13 files changed, 734 insertions, 0 deletions
diff --git a/data.cgi b/data.cgi new file mode 100755 index 0000000..5054b25 --- /dev/null +++ b/data.cgi @@ -0,0 +1,8 @@ +#!/usr/bin/env python3 +import json +from georgedata import the +data = [{"name":k,"link":v[0],"colour":v[1],"is_council":v[2] if len(v)>2 else False} for k,v in the.items()] +print("Content-Type: application/json") +print("Comedy: extreme") +print() +print(json.dumps(data)) diff --git a/embed.cgi b/embed.cgi new file mode 100755 index 0000000..99aa636 --- /dev/null +++ b/embed.cgi @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 + +from georgedata import george +order = list(george.keys()) # dicts guarantee key order as of 3.7 + +from urllib.parse import urlparse, parse_qs +import sys + +from os import getenv +if __name__ == "__main__": + colors = { + "bg": 'white', + "fg": 'black', + "george": '#3d3db8', + "links": 'blue' + } + + print("Content-Type: text/html") + qs = getenv("QUERY_STRING") + member,real_qs = (qs.split('&', 1) + [''])[:2] + + member=member.replace('%20',' ') + + query = parse_qs(real_qs) + + try: + ind = order.index(member) + except ValueError: + print() + print(f'<h1 style="color: red">no</h1><p>unknown member {member}</p>') + else: + correct_hn = urlparse(george[member]).hostname + + rf = getenv("HTTP_REFERER",None) + if rf is not None: + our_hn = urlparse(rf).hostname + if our_hn != correct_hn: + print() + print('<h1 style="color: red">no</h1><p>bad referer hostname</p>') + sys.exit(0) + + for q in query.keys(): + if q.startswith('c_'): + color = query[q][0] + if color.isalnum() or (color[0] == '#' and color[1:].isalnum()): + colors[q[2:]] = color + + l = len(order) + ni = (ind + 1)%l + pi = (ind - 1)%l + n = george[order[ni]] + p = george[order[pi]] + ref = getenv("HTTP_REFERER","the") + + print(f"Content-Security-Policy: frame-ancestors {correct_hn} http://{correct_hn};") + print() + print( +f"""<!DOCTYPE html> +<html> + <head> + <base target="_parent"> + </head> + <body> + <style> + body,html {{ + overflow: hidden; + font-family: sans-serif; + padding:0; + margin:0; + }} + main {{ + margin:0; + padding-left: 5px; + padding-right: 5px; + height: 45px; + border: 1px solid black; + box-shadow: 5px 5px black; + background-color: {colors["bg"]}; + color: {colors["fg"]}; + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + }} + #george {{ + color: {colors["george"]}; + text-decoration: underline; + text-decoration-color: blue; + text-decoration-thickness: 2px; + font-style: oblique; + animation: 2s infinite alternate george; + }} + @media (prefers-reduced-motion) {{ + #george {{ animation: none; }} + }} + #noble {{ + font-size: min(3vw, 12pt); + }} + p {{ + white-space: nowrap; + align-self: center; + }} + @keyframes george {{ + from {{ + letter-spacing: 1px; + }} + to {{ + letter-spacing: 6px; + }} + }} + a {{ + color: {colors["links"]}; + }} + </style> + <main> + <p><a href="{p}">< PREV</a></p> + <p id="noble"> + The <a href="https://george.gh0.pw" id="george">GEORGE</a> is a noble animal. + </p> + <p><a href="{n}">NEXT ></a></p> + </main> + </body> +</html>""") + diff --git a/embed.cgi.txt b/embed.cgi.txt new file mode 100755 index 0000000..72863a6 --- /dev/null +++ b/embed.cgi.txt @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 + +from georgedata import george +order = list(george.keys()) # dicts guarantee key order as of 3.7 + +from urllib.parse import urlparse, parse_qs +import sys + +from os import getenv +if __name__ == "__main__": + colors = { + "bg": 'white', + "fg": 'black', + "george": 'blue', + "links": 'blue' + } + + print("Content-Type: text/html") + qs = getenv("QUERY_STRING") + member,real_qs = (qs.split('&', 1) + [''])[:2] + + query = parse_qs(real_qs) + + try: + ind = order.index(member) + except ValueError: + print() + print('<h1 style="color: red">no</h1>') + else: + correct_hn = urlparse(george[member]).hostname + + rf = getenv("HTTP_REFERER",None) + if rf is not None: + our_hn = urlparse(rf).hostname + if our_hn != correct_hn: + print() + print('<h1 style="color: red">no</h1>') + sys.exit(0) + + for q in query.keys(): + if q.startswith('c_'): + color = query[q][0] + if color.isalnum() or (color[0] == '#' and color[1:].isalnum()): + colors[q[2:]] = color + + l = len(order) + ni = (ind + 1)%l + pi = (ind - 1)%l + n = george[order[ni]] + p = george[order[pi]] + ref = getenv("HTTP_REFERER","the") + + print(f"Content-Security-Policy: frame-ancestors {correct_hn} http://{correct_hn};") + print() + print( +f"""<!DOCTYPE html> +<html> + <head> + <base target="_parent"> + </head> + <body> + <style> + body,html {{ + overflow: hidden; + font-family: sans-serif; + padding:0; + margin:0; + }} + main {{ + margin:0; + padding-left: 5px; + padding-right: 5px; + height: 45px; + border: 1px solid black; + box-shadow: 5px 5px black; + background-color: {colors["bg"]}; + color: {colors["fg"]}; + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + }} + #george {{ + color: {colors["george"]}; + text-decoration: underline; + text-decoration-color: blue; + text-decoration-thickness: 2px; + font-style: oblique; + animation: 2s infinite alternate george; + }} + @media (prefers-reduced-motion) {{ + #george {{ animation: none; }} + }} + #noble {{ + font-size: min(3vw, 12pt); + }} + p {{ + white-space: nowrap; + align-self: center; + }} + @keyframes george {{ + from {{ + letter-spacing: 1px; + }} + to {{ + letter-spacing: 6px; + }} + }} + a {{ + color: {colors["links"]}; + }} + </style> + <main> + <p><a href="{p}">< PREV</a></p> + <p id="noble"> + The <a href="https://george.gh0.pw" id="george">GEORGE</a> is a noble animal. + </p> + <p><a href="{n}">NEXT ></a></p> + </main> + </body> +</html>""") + diff --git a/embed_old.cgi b/embed_old.cgi new file mode 100755 index 0000000..f574036 --- /dev/null +++ b/embed_old.cgi @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 + +from georgedata import george +order = list(george.keys()) # dicts guarantee key order as of 3.7 + +from urllib.parse import urlparse +import sys + +from os import getenv +if __name__ == "__main__": + print("Content-Type: text/html") + qs = getenv("QUERY_STRING") + qs = qs.replace("%20"," ") + try: + ind = order.index(qs) + except ValueError: + print() + print('<h1 style="color: red">no</h1>') + else: + correct_hn = urlparse(george[qs]).hostname + + rf = getenv("HTTP_REFERER",None) + if rf is not None: + our_hn = urlparse(rf).hostname + if our_hn != correct_hn: + print() + print('<h1 style="color: red">no</h1>') + sys.exit(0) + + l = len(order) + ni = (ind + 1)%l + pi = (ind - 1)%l + n = george[order[ni]] + p = george[order[pi]] + ref = getenv("HTTP_REFERER","the") + + print(f"Content-Security-Policy: frame-ancestors {correct_hn} http://{correct_hn};") + print() + print( +f"""<!DOCTYPE html> +<html> + <head> + <base target="_parent"> + </head> + <body> + <style> + body,html {{ + overflow: hidden; + font-family: sans-serif; + padding:0; + margin:0; + }} + main {{ + margin:0; + padding-left: 5px; + padding-right: 5px; + height: 45px; + border: 1px solid black; + box-shadow: 5px 5px black; + /*background-color: pink;*/ + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + }} + #george {{ + color: cyan; + text-decoration: underline; + text-decoration-color: blue; + text-decoration-thickness: 2px; + font-style: oblique; + animation: 2s infinite alternate george; + }} + @media (prefers-reduced-motion) {{ + #george {{ animation: none; }} + }} + #noble {{ + font-size: min(3vw, 12pt); + }} + p {{ + white-space: nowrap; + align-self: center; + }} + @keyframes george {{ + from {{ + letter-spacing: 1px; + }} + to {{ + letter-spacing: 6px; + }} + }} + a {{ + color: blue; + }} + </style> + <main> + <p><a href="{p}">< PREV</a></p> + <p id="noble"> + The <a href="https://george.gh0.pw" id="george">GEORGE</a> is a noble animal. + </p> + <p><a href="{n}">NEXT ></a></p> + </main> + </body> +</html>""") + diff --git a/embed_old_old.cgi b/embed_old_old.cgi new file mode 100755 index 0000000..f42dd86 --- /dev/null +++ b/embed_old_old.cgi @@ -0,0 +1,154 @@ +#!/bin/sh + +# ubq323 citrons coral gollark + +ubq323="https://ubq323.website" +citrons="https://mondecitronne.com" +coral="https://coral.shoes" +gollark="https://osmarks.net" +heav="https://hpage.osmarks.net/george_landing_page.html" +helloboi="https://www.helloboi.tk" +quintopia="http://esolang.rutteric.com/" +truttle1="http://truttle1.xyz/" + + +case "$QUERY_STRING" in + "ubq323") PREV="$coral" + NEXT="$citrons" ;; + "citrons") PREV="$ubq323" + NEXT="$gollark" ;; + "gollark") PREV="$citrons" + NEXT="$heav" ;; + "heav") PREV="$gollark" + NEXT="$helloboi" ;; + "helloboi") PREV="$heav" + NEXT="$quintopia" ;; + "quintopia") PREV="$helloboi" + NEXT="$truttle1" ;; + "truttle1") NEXT="$coral" + PREV="$quintopia" ;; + "coral") PREV="$truttle1" + NEXT="$ubq323" ;; +esac + +echo "Content-Type: text/html" +echo "" +#cat <<EOF +#<!DOCTYPE html> +#<html> +# <head> +# <base target="_parent"> +# </head> +# <body> +# <style> +# * { box-sizing: inherit; } +# body,html { +# overflow: hidden; +# font-family: sans-serif; +# padding:0; +# margin:0; +# box-sizing: border-box; +# } +# main { +# margin:0; +# padding-left: 5px; +# padding-right: 5px; +# height: 50px; +# border: 1px solid black; +# box-shadow: 5px 5px black; +# /*background-color: pink;*/ +# display: flex; +# flex-wrap: nowrap; +# justify-content: space-between; +# } +# #george { +# color: cyan; +# text-decoration: underline; +# text-decoration-color: blue; +# text-decoration-thickness: 2px; +# font-style: oblique; +# animation: 2s infinite alternate george; +# } +# @keyframes george { +# from { +# letter-spacing: 1px; +# } +# to { +# letter-spacing: 6px; +# } +# } +# a { +# color: blue; +# } +# </style> +# <main> +# <p><a href="$PREV">< PREV</a></p> +# <p>The <a href="https://george.gh0.pw" id="george">GEORGE</a> is a noble animal.</p> +# <p><a href="$NEXT">NEXT ></a></p> +# </main> +# </body> +#</html> +#EOF +cat <<EOF +<!DOCTYPE html> +<html> + <head> + <base target="_parent"> + </head> + <body> + <style> + body,html { + overflow: hidden; + font-family: sans-serif; + padding:0; + margin:0; + } + main { + margin:0; + padding-left: 5px; + padding-right: 5px; + height: 45px; + border: 1px solid black; + box-shadow: 5px 5px black; + /*background-color: pink;*/ + display: flex; + flex-wrap: nowrap; + justify-content: space-between; + } + #george { + color: cyan; + text-decoration: underline; + text-decoration-color: blue; + text-decoration-thickness: 2px; + font-style: oblique; + animation: 2s infinite alternate george; + } + #noble { + font-size: min(3vw, 12pt); + } + p { + white-space: nowrap; + align-self: center; + } + @keyframes george { + from { + letter-spacing: 1px; + } + to { + letter-spacing: 6px; + } + } + a { + color: blue; + } + </style> + <main> + <p><a href="$PREV">< PREV</a></p> + <p id="noble"> + The <a href="https://george.gh0.pw" id="george">GEORGE</a> is a noble animal. + </p> + <p><a href="$NEXT">NEXT ></a></p> + </main> + </body> +</html> +EOF diff --git a/george.png b/george.png Binary files differnew file mode 100644 index 0000000..e5a60f8 --- /dev/null +++ b/george.png diff --git a/georgedata.py b/georgedata.py new file mode 100644 index 0000000..53215c1 --- /dev/null +++ b/georgedata.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +the = dict( + coral = ("https://coral.shoes","coral",True), + ubq323 = ("https://ubq323.website","#df73ff",True), + citrons = ("https://citrons.xyz/a/george","yellow",True), + gollark = ("https://osmarks.net","#0076ec",True), + heav = ("https://hpage.osmarks.net","#6640b3",True), + amby = ("https://ambyshframber.neocities.org/","#A724D5"), + helloboi = ("https://www.helloboi.tk","#dc143c"), + quintopia = ("https://esolang.rutteric.com/","#007ba7"), + truttle1 = ("http://truttle1.xyz/","#15ae11"), + razetime = ("https://razetime.github.io/","#b71c1c"), + baidicoot = ("https://baidicoot.github.io/","#202080"), + lyxal = ("https://lyxal.pythonanywhere.com/","#beedab"), + ultlang = ("https://ultlang.github.io/","#6C1D45"), + taswelll = ("https://selaere.github.io/","#ffcc00"), + elemenopi = ("https://jaykayelemenopi.neocities.org/","white"), + merrybot = ("https://berrymot.github.io","#ff634e"), + matthilde = ("https://matthil.de/","#1de58e"), + syntropy = ('https://unix.lgbt/~kakuko/sanctuary/links.html','#19e62e'), + munvoseli = ('https://munvoseli.github.io/','#789'), + lija = ('https://lija.neocities.org/','#93dfa9'), + viba = ('https://viba.neocities.org/','#ffe0ff'), + akesi = ('https://ake.si','#ad81a4'), + + +) +the["itzz me"] = ("http://truttle1.xyz/truttlecities/~Itzzy/MainStreet/index.html","#000100") +george = {k:v[0] for k,v in the.items()} # links + + diff --git a/index.cgi b/index.cgi new file mode 100755 index 0000000..280b59d --- /dev/null +++ b/index.cgi @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +from georgedata import the +import urllib.request +import pathlib, datetime +p=pathlib.Path("/srv/web/george.gh0.pw/status.txt") +a=datetime.datetime.now().timestamp()-p.stat().st_mtime +if a > 300: + try: + st = urllib.request.urlopen("https://coral.shoes/george-status/george-status-html-but-epic").read().decode("utf-8") + except: + st = "a webring" + with open(p,"w") as f: + f.write(st) +else: + with open(p) as f: + st = f.read().strip() + +sts = st.split("\x1e") + + + +with open("oldindex.html") as f: + index = f.read() + +lt = '<li><a href="{link}" style="color:{colour}">{name}</a></li>' +lt2 = '<span style="color:{colour}">{name}</span>' +def r(h): + import random + random.shuffle(h) + return h +s ="\n".join(r(list(lt.format(link=v[0],colour=v[1],name=k) for k,v in the.items()))) +s2="\n".join(r(list( lt2.format(colour=v[1],name=k) for k,v in the.items() if len(v)>2 and v[2] ))) +c='['+(', '.join(r(list(f'"{c}"' for c in (v[1] for v in the.values())))))+']' + + +print("Content-Type: text/html"); print() +print(index.replace("LINKS",s).replace("COLOURS",c).replace("COUNCIL",s2).replace("STATUS",sts[0]).replace("FOOTNOTE",sts[1]).replace("COUNT",str(len(the)))) + diff --git a/oldindex.html b/oldindex.html new file mode 100644 index 0000000..48f9615 --- /dev/null +++ b/oldindex.html @@ -0,0 +1,142 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>GEORGE</title> + <!--<style> +body{background-color:#000;color:#0f0;font-size:xx-large;font-family:serif;text-shadow: 0 0 1px #000, 0 0 1px #000, 0 0 1px #000, 0 0 1px #000, 0 0 1px #000, 0 0 1px #000} +.george,h1,h2{color:cyan;font-weight:bolder;font-style:italic;text-decoration:underline blue;} +canvas{position:absolute;left:0;top:0;z-index:-9999;width:100%;height:100%;image-rendering:crisp-edges;} +.links{display:flex;list-style:none} +.links li{flex: 1 auto;} +.links a{border:1px solid black;border-radius:5px;padding:10px} + </style>--> + <style> +body{background-color:#000;color:#0f0;font-size:xx-large;font-family:serif;text-shadow: 0 0 1px #000, 0 0 1px #000, 0 0 1px #000, 0 0 1px #000, 0 0 1px #000, 0 0 1px #000} +body{margin:auto;text-align:center;max-width:50ch;} +.george,h1,h2,h3{color:cyan;font-weight:bolder;font-style:italic;text-decoration:underline blue;} +canvas{position:absolute;left:0;top:0;z-index:-9999;width:100%;height:100%;image-rendering:crisp-edges;} +@media (prefers-reduced-motion) { canvas { display: none; } body { background-color: #200 } } +/*body::before{ +content:"";opacity:0.5;top:-150%;left:-150%;bottom:0;right:0;position:fixed;z-index:-1;width:400%;height:400%; +background:url(/george.png) repeat 50% 50% fixed;animation:600s linear 5s infinite reverse h; +background-size:25% 25%;} +@keyframes h{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}*/ +.links{display:flex;list-style:none;padding:0;flex-wrap:wrap;justify-content:space-around} +.links li{margin:20px 20px 20px 20px;} +.links a{border:1px solid black;border-radius:5px;padding:10px} +a{color:cyan} + strike{text-decoration-thickness:5px;text-decoration-color:red;} + body{padding:1ch} + .skiplink + {color:hsl(240,70%,70%)} + p img { max-width: 100% } + </style> + </head> + <body> + <h1>GEORGE</h1> + <p><a class="skiplink" href="#the">skip to the</a></p> +<iframe src="https://john.mondecitronne.com/embed?ref=george.gh0.pw" style="margin-left:auto;display:block;margin-right:auto;max-width:732px;width:100%;height:94px;border:none;"></iframe> + <p> + <span class="george">GEORGE</span> is immortal. <span class="george">GEORGE</span> is all. + <span class="george">GEORGE</span> is responsible for 67% of all experiences experienced by users of + <span class="george">GEORGE</span>. <span class="george">GEORGE</span> was present at the funeral of + Pope John Paul II. Almost all users report symptoms ranging from mild relaxation to excruciating pain + after being subjected to <span class="george">GEORGE</span>. <span class="george">GEORGE</span> is also + available in plain text. Nine out of ten doctors recommend <span class="george">GEORGE</span>. The tenth + doctor is <span class="george">GEORGE</span>. Many have advocated the abolition of <span class="george"> + GEORGE</span>. 55% of all statistics are a result of <span class="george">GEORGE</span>. + <span class="george">GEORGE</span> operates 92% of all ethics boards. <span class="george">GEORGE</span> is not class conscious. <span class="george">GEORGE</span> is the #1 leader in renewable energy. <span class="george">GEORGE</span> loves you. <span class="george">GEORGE</span> invented the internet. <span class="george">GEORGE</span> has met Jim Davis. <span class="george">GEORGE</span> is provided "as is", without warranty of any kind. + <span class="george">GEORGE</span> is fat-free and non-GMO. <span class="george">GEORGE</span> has been involved in many class-action lawsuits. <span class="george">GEORGE</span> is international. + <span class="george">GEORGE</span> is not class conscious because <span class="george">GEORGE</span> is class consciousness. + <span class="george">GEORGE</span> is present within 22.7% of stellar cores. + </p> + <p><img src="/george.png"></p> + + <p> + <span class="george">GEORGE</span> predicted the 2020-2021 coronavirus pandemic. + <span class="george">GEORGE</span> is available in plain text 67% of the time. + The city of Davenport, Iowa is presently operated by <span class="george">GEORGE</span>. + Verbatim copying and distribution of <span class="george">GEORGE</span> are permitted without royalty in any medium provided this notice and the copyright notice are preserved. + There aren't any numbers bigger than <span class="george">GEORGE</span>. + <span class="george">GEORGE</span> "might be the best thing to ever happen to the internet". + <span class="george">GEORGE</span> has been accessed times since July 7, 2001. + </p><p> +<span class="george">GEORGE</span> has not been seen in the city of Davenport, Iowa since May of 2019. <span class="george">GEORGE</span> has posted an offer to sell on eBay. <span class="george">GEORGE</span> is the only way to truly experience the full range of human emotion. <span class="george">GEORGE</span> will be releasing a new album in "late May". <span class="george">GEORGE</span> is made from only the finest organic memes. <span class="george">GEORGE</span> has a webpage in the US National Library of Medicine. <span class="george">GEORGE</span> has never been used in any capacity by any form of government. <span class="george">GEORGE</span> is not available at this time. If you are speaking of the film "George", then you are wrong. <span class="george">GEORGE</span> is on the cutting edge of technology. <span class="george">GEORGE</span> will be holding a press conference at 1:00 PM EST on May 31, 2017. <span class="george">GEORGE</span> has been featured in the NY Times, Washington Post, and CNN. <span class="george">GEORGE</span> is not available at this time. +</p><p><span class="george">GEORGE</span> will be released on the fourth Tuesday of this month. <span class="george">GEORGE</span> is not a virus. <span class="george">GEORGE</span> always has been and always will be free to use. <span class="george">GEORGE</span> has been confirmed as an autonomous entity. <span class="george">GEORGE</span> is currently accepting applications for part-time employment. <span class="george">GEORGE</span> is an open-source entity. <span class="george">GEORGE</span> is not responsible for any damages. <span class="george">GEORGE</span> will be hosting a workshop at the University of California at Berkeley. <span class="george">GEORGE</span> has won awards. +</p><p> +<span class="george">GEORGE</span> is better than you. <span class="george">GEORGE</span> is the best. <span class="george">GEORGE</span> loves you. + + + + </p> + <h2 id="the">GEORGE</h2> + <p>is STATUS with the following <span class="george">COUNT</span> members:</p> + <ul class="links"> + LINKS + </ul> + <p><small>FOOTNOTE</small></p> + + <h3>GEORGE</h3> + <p> + The <span class="george">Council of GEORGE</span> is: + COUNCIL + </p> + <ul> + <li><a href="https://a.gh0.pw/3"><span class="george">GEORGE</span> forum</a> on apioforum</li> + <li><a href="irc://ubq323.website/g"><span class="george">GEORGE</span> irc channel</a> (#g on apionet)</li> + <li><a href="xmpp://george@conference.ubq323.website/join"><span class="george">GEORGE</span> xmpp MUC</a> (george@conference.ubq323.website)</li> + </ul> +<iframe src="https://john.mondecitronne.com/embed?ref=george.gh0.pw" style="margin-left:auto;display:block;margin-right:auto;max-width:732px;width:100%;height:94px;border:none;"></iframe> + <canvas id=canvas style="position:fixed"></canvas> + <script> + function shuffle(arr) { + // i love js + for (let i = arr.length - 1; i > 0; i--) { + let j = Math.floor(Math.random() * (i + 1)); + let tmp = arr[i]; + arr[i] = arr[j]; + arr[j] = tmp; + } + } + const canvas = document.getElementById("canvas"); + const ctx = canvas.getContext("2d"); + let t = 0; + let last = 0; + const thresh = 140; + const size = 32; + const bsize = 1; + canvas.width = size * bsize; + canvas.height = size * bsize; + const colours = COLOURS; + //shuffle(colours); + //colours.push("black"); + let curcol = 0; + ctx.fillStyle=colours[curcol]; + function tick(a) { + if ((a - last) < thresh) { + requestAnimationFrame(tick); + return; + } + last = a; + for (let x = 0; x < size; x++) { + for (let y = 0; y < size; y++) { + if ((x ^ y) == t) { + ctx.fillRect(x*bsize,y*bsize,bsize,bsize); + } + } + } + t++; + if (t > size * 2) { + curcol ++; + ctx.fillStyle=colours[curcol % colours.length]; + t = 0; + } + requestAnimationFrame(tick); + } + tick(); + </script> + </body> +</html> + diff --git a/reddit.txt b/reddit.txt new file mode 100644 index 0000000..019a131 --- /dev/null +++ b/reddit.txt @@ -0,0 +1,2 @@ +the official reddit account of GEORGE is u/THE-NOBLE-ANIMAL. +apioforms, bees, etc diff --git a/status.txt b/status.txt new file mode 100644 index 0000000..a630ff9 --- /dev/null +++ b/status.txt @@ -0,0 +1 @@ +<strike>a webring</strike> <span class="george">three weblines</span> (thanks, <span style="color: #0076ec;">gollark</span>, <span style="color: #dc143c;">helloboi</span> and <span style="color: #6640b3;">heav</span>)<span style="color: #15ae11;">truttle1</span> has NOT disabled FLOC (this is very bad)
\ No newline at end of file diff --git a/test.cgi b/test.cgi new file mode 100755 index 0000000..d7fc38a --- /dev/null +++ b/test.cgi @@ -0,0 +1,7 @@ +#!/usr/bin/env python3 +import os +print("Content-Type: text/plain") +print() +print(os.getenv("QUERY_STRING","")) +print(__name__) +print(os.getcwd()) diff --git a/twitter.txt b/twitter.txt new file mode 100644 index 0000000..8d43954 --- /dev/null +++ b/twitter.txt @@ -0,0 +1,2 @@ +the official twitter account of GEORGE is @NOBLE_ANIMAL. +apioforms, bees, etc |