From 8e58c4b0299299ee14da4aa2ec848cc0acffb9e5 Mon Sep 17 00:00:00 2001 From: nathansmith117 Date: Fri, 14 Mar 2025 01:40:48 -0600 Subject: Guest book added --- cgi-bin/guest_book.cgi | 165 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100755 cgi-bin/guest_book.cgi (limited to 'cgi-bin/guest_book.cgi') diff --git a/cgi-bin/guest_book.cgi b/cgi-bin/guest_book.cgi new file mode 100755 index 0000000..bc2f803 --- /dev/null +++ b/cgi-bin/guest_book.cgi @@ -0,0 +1,165 @@ +#! /usr/bin/env python + +import cgi +import json +import datetime +import html + +def handle_fields(): + form = cgi.FieldStorage() + + name = form.getvalue("name") + url = form.getvalue("url") + message = form.getvalue("message") + + # Nothign was submitted. + if name is None and url is None and message is None: + return "" + + if name is None: + return "

name is required

" + elif message is None: + return "

please write a silly something (:

" + + url = "" if url is None else url + + # Make the names safe. + name = html.escape(name) + url = html.escape(url) + message = html.escape(message) + + guest_book = [] + + # Open data if already there. + try: + with open("guest_book.json", "r") as fp: + guest_book = json.load(fp) + except FileNotFoundError: + pass + + # Already in list. + for guest in guest_book: + if guest["name"] == name and guest["url"] == url and guest["message"] == message: + return "

You already been added

" + + date = datetime.datetime.now() + guest_entry = {"name": name, "url": url, "message": message, "date": date.strftime("%B, %d %Y")} + + # Dump guest to file. + with open("guest_book.json", "w") as fp: + guest_book.append(guest_entry) + json.dump(guest_book, fp, indent=4) + + return "

You been added to the guest book yippe (:

\"yippee!\"/" + +def get_guest_html_from_list(): + guest_html = "" + + try: + with open("guest_book.json", "r") as fp: + for guest in json.load(fp)[::-1]: + guest_table = """ + + + + + + + + +
+ {name} {url} --- signed {date} +

{message}

+ """ + + guest_table = guest_table.format(name=guest["name"], url=guest["url"], + date=guest["date"], message=guest["message"]) + guest_html += guest_table + except FileNotFoundError: + guest_html = """ + + + + +
+

No guest have been added ): But you can be the first!

+
+ """ + + return guest_html + +def display_html(fields_reponse): + print("Content-Type: text/html") + + html_text = """ + + + + + Guest Book + + + + + +
+ + + + + + + + +
+

Sign my fucking guest book

+
+ Name + +
+ Website + +

+ Write a little silly something +
+ +
+ You can't delete/edit it afterwards +
+ {fields_reponse} +
+

--> Back to main page

+
+ + {guest_html} +
+ + + """ + + html_text = html_text.format( + fields_reponse=fields_reponse, + guest_html=get_guest_html_from_list() + ) + + print(html_text) + +fields_reponse = handle_fields() +display_html(fields_reponse) + -- cgit v1.2.3