gem-message/write.cgi
2022-12-14 23:37:23 +00:00

45 lines
1.1 KiB
Python
Executable file

#!/usr/bin/env python3
import os, urllib, cgitb, dns.resolver
from dotenv import load_dotenv
# Log errors to disk only
cgitb.enable(display=0, logdir="/var/log/gemini", format="plain")
# Load config
load_dotenv()
msg_file = os.getenv("MESSAGE_FILE")
# Load CGI vars
msg = os.getenv("QUERY_STRING")
ip = os.getenv("REMOTE_ADDR")
name = os.getenv("REMOTE_USER")
if msg == "":
# Prompt for message
print("10 Leave a Message\r")
else:
# Default name if no client cert provided
name = name or "Anonymous"
try:
# Look up client RDNS
host = str( dns.resolver.resolve_address( ip )[0] )
except dns.resolver.NXDOMAIN as e:
# No RDNS set, use IP
host = ip
# Message template
fromLine = "## Message from " + name + " (" + host + ")\n"
msgLine = urllib.parse.unquote(msg) + "\n"
# Save message to file
f = open(msg_file, "a")
f.write( fromLine + msgLine )
# Generate confirmation screen
print("20 text/gemini; lang=en-GB\r")
print("# Message Sent\n")
print( msgLine )
print("=> / Back")