diff options
| author | nathansmith117 <nathansmith@posteo.com> | 2025-03-16 20:38:33 +0000 | 
|---|---|---|
| committer | nathansmith117 <nathansmith@posteo.com> | 2025-03-16 20:38:33 +0000 | 
| commit | d38c2cd40d7fe574bbbf9f31d8f62b78724592f8 (patch) | |
| tree | d39d3f4ba8d2dc55264e18bb5f37359e858ca40d /cgi-bin | |
| parent | b3a660b9511e3c192108f07e958f6f448eba3247 (diff) | |
| download | shittyweb-d38c2cd40d7fe574bbbf9f31d8f62b78724592f8.tar.gz shittyweb-d38c2cd40d7fe574bbbf9f31d8f62b78724592f8.tar.bz2 shittyweb-d38c2cd40d7fe574bbbf9f31d8f62b78724592f8.zip  | |
Be crime do gay
Diffstat (limited to 'cgi-bin')
| -rwxr-xr-x | cgi-bin/webring_redirect.cgi | 96 | 
1 files changed, 96 insertions, 0 deletions
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 <a href=\"{redirect_website}\">{redirect_website}</a>", +        f"<meta http-equiv=\"refresh\" content=\"0; URL={redirect_website}\"/>" +    ] + +def display_html(fields_reponse): +    print("Content-Type: text/html") + +    html_text = """ +        <!DOCTYPE html> +        <html> +         +        <head> +            {redirect} +            <title>Webrings</title> +        </head> + +        <body> +            {fields_reponse} +        </body> +        </html> +    """ + +    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) +  | 
