From d38c2cd40d7fe574bbbf9f31d8f62b78724592f8 Mon Sep 17 00:00:00 2001 From: nathansmith117 Date: Sun, 16 Mar 2025 14:38:33 -0600 Subject: Be crime do gay --- cgi-bin/webring_redirect.cgi | 96 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100755 cgi-bin/webring_redirect.cgi (limited to 'cgi-bin') diff --git a/cgi-bin/webring_redirect.cgi b/cgi-bin/webring_redirect.cgi new file mode 100755 index 0000000..2b114cc --- /dev/null +++ b/cgi-bin/webring_redirect.cgi @@ -0,0 +1,96 @@ +#! /usr/bin/env python + +import cgi +import requests +import random +import json + +WEBSITE_URL = "http://nathansmith117.beevomit.org" + +def handle_be_crime_do_gay_webring(): + try: + # https://codeberg.org/artemislena/artemislena.eu#be-crime-do-gay-webring + req = requests.get("https://artemislena.eu/services/downloads/beCrimeDoGay.json", timeout=5) + req.raise_for_status + return req.json() + except requests.exceptions.Timeout: + return "Status: 503 Service Unavailable" + except Exception: + return "Status: 500 Internal Error" + +def handle_fields(): + form = cgi.FieldStorage() + + # Name of the webring name and direction. + name = form.getvalue("name") + direction = form.getvalue("direction") + + if name is None or direction is None: + return "Not enough optinos" + + # Callbacks to handle webrings. + webrings = { + "gay": handle_be_crime_do_gay_webring + } + + website_list = webrings[name]() + + if website_list == None or website_list == []: + return "Can't get website list for webring" + if type(website_list) is str: + return website_list + + # Find this website in webring. + position = 0 + + try: + position = website_list.index(WEBSITE_URL) + except ValueError: + return "Website not in webring" + + # Handle direction + redirect_website = "" + + if direction == "next": + redirect_website = website_list[(position + 1) % len(website_list)] + elif direction == "previous": + redirect_website = website_list[(position - 1) % len(website_list)] + elif direction == "random": + website_list.pop(position) + redirect_website = random.choice(website_list) + else: + return "Invalid direction" + + return [ + f"redirecting to {redirect_website}", + f"" + ] + +def display_html(fields_reponse): + print("Content-Type: text/html") + + html_text = """ + + + + + {redirect} + Webrings + + + + {fields_reponse} + + + """ + + if type(fields_reponse) is list: + html_text = html_text.format(fields_reponse=fields_reponse[0], redirect=fields_reponse[1]) + else: + html_text = html_text.format(fields_reponse=fields_reponse, redirect="") + + print(html_text) + +fields_reponse = handle_fields() +display_html(fields_reponse) + -- cgit v1.2.3