update scripts to use Opal instead of gmnisrv

This commit is contained in:
dece 2021-11-24 22:12:36 +01:00
parent f7e82f2b41
commit 47650deb33
3 changed files with 57 additions and 29 deletions

15
check-email Executable file
View file

@ -0,0 +1,15 @@
#!/usr/bin/env python3
import json
import pprint
import subprocess
import smolcgi
if not smolcgi.query_string_dec:
smolcgi.require_input("Provide an email address to check.")
smolcgi.header(20, "text/plain")
command = ["/usr/local/bin/check_if_email_exists", smolcgi.query_string_dec]
output = subprocess.check_output(command).decode()
pprint.pprint(json.loads(output)[0])

22
lists
View file

@ -3,7 +3,7 @@
import smolcgi as scgi import smolcgi as scgi
if not (user_hash := scgi.cert_hash): if not (user_hash := scgi.tls_client_hash):
scgi.exit_with_header(60, "You need a certificate to use this app") scgi.exit_with_header(60, "You need a certificate to use this app")
import string import string
@ -11,7 +11,7 @@ import subprocess
from os import getenv from os import getenv
from pathlib import Path from pathlib import Path
STORAGE_PATH = Path(getenv("GEMINI_LISTS_PATH", "/var/gemini/lists")) STORAGE_PATH = Path(getenv("GEMINI_LISTS_PATH", "/home/gemini/storage/lists"))
if not STORAGE_PATH.exists(): if not STORAGE_PATH.exists():
STORAGE_PATH.mkdir(parents=True) STORAGE_PATH.mkdir(parents=True)
@ -29,8 +29,8 @@ def show_lists():
print("# Lists") print("# Lists")
for child in user_dir.iterdir(): for child in user_dir.iterdir():
if child.is_file(): if child.is_file():
print(f"=> ./{child.name} 📄 {child.name}") print(f"=> {scgi.script_name}/{child.name} 📄 {child.name}")
print("=> ./_/create ✨ Create a new list") print(f"=> {scgi.script_name}/_/create ✨ Create a new list")
def show_list(list_name): def show_list(list_name):
list_file = get_user_dir() / list_name list_file = get_user_dir() / list_name
@ -43,9 +43,9 @@ def show_list(list_name):
scgi.header(20, "text/gemini") scgi.header(20, "text/gemini")
print("# " + list_name) print("# " + list_name)
print(content) print(content)
print(f"=> ./{list_name}/add Append item") print(f"=> {scgi.script_name}/{list_name}/add Append item")
print(f"=> ./{list_name}/pop Pop first item") print(f"=> {scgi.script_name}/{list_name}/pop Pop first item")
def process_action(list_name, action): def process_action(list_name, action):
if list_name == "_" and action == "create": if list_name == "_" and action == "create":
process_creation() process_creation()
@ -57,7 +57,7 @@ def process_action(list_name, action):
scgi.not_found() scgi.not_found()
def process_creation(): def process_creation():
if not (new_list_name := scgi.query): if not (new_list_name := scgi.query_string_dec):
meta = "List name (allowed chars: lowercase, digits, underscore)" meta = "List name (allowed chars: lowercase, digits, underscore)"
scgi.require_input(meta) scgi.require_input(meta)
else: else:
@ -69,7 +69,7 @@ def process_creation():
redirect_to_list(new_list_name) redirect_to_list(new_list_name)
def process_add(list_name): def process_add(list_name):
if not (item := scgi.query): if not (item := scgi.query_string_dec):
scgi.require_input("Enter your item") scgi.require_input("Enter your item")
else: else:
if "\n" in item: if "\n" in item:
@ -90,9 +90,9 @@ def process_pop(list_name):
redirect_to_list(list_name) redirect_to_list(list_name)
def redirect_to_list(list_name): def redirect_to_list(list_name):
scgi.redirect_temp(scgi.script + "/" + list_name) scgi.redirect_temp(scgi.script_name + "/" + list_name)
path_components = scgi.path.lstrip("/").split("/", maxsplit=1) path_components = scgi.path_info.lstrip("/").split("/", maxsplit=1)
list_name = path_components[0] list_name = path_components[0]
action = path_components[1] if len(path_components) > 1 else '' action = path_components[1] if len(path_components) > 1 else ''
if not list_name: if not list_name:

View file

@ -1,30 +1,43 @@
#!/bin/false
from os import environ from os import environ
from urllib.parse import unquote
def getenv(name): def getenv(name):
return environ.get(name, "") return environ.get(name, "")
version = getenv("GATEWAY_INTERFACE") gateway_interface = getenv("GATEWAY_INTERFACE")
protocol = getenv("SERVER_PROTOCOL") remote_addr = getenv("REMOTE_ADDR")
software = getenv("SERVER_SOFTWARE") remote_host = getenv("REMOTE_HOST")
url = getenv("GEMINI_URL") request_method = getenv("REQUEST_METHOD")
script = getenv("SCRIPT_NAME") script_name = getenv("SCRIPT_NAME")
path = getenv("PATH_INFO") server_name = getenv("SERVER_NAME")
query = getenv("QUERY_STRING") server_port = getenv("SERVER_PORT")
host = getenv("SERVER_NAME") server_protocol = getenv("SERVER_PROTOCOL")
port = getenv("SERVER_PORT") server_software = getenv("SERVER_SOFTWARE")
remote = getenv("REMOTE_HOST") gemini_document_root = getenv("GEMINI_DOCUMENT_ROOT")
tls_cipher = getenv("TLS_CIPHER") gemini_script_filename = getenv("GEMINI_SCRIPT_FILENAME")
gemini_url = getenv("GEMINI_URL")
gemini_url_path = getenv("GEMINI_URL_PATH")
tls_version = getenv("TLS_VERSION") tls_version = getenv("TLS_VERSION")
tls_cipher = getenv("TLS_CIPHER")
path_info = getenv("PATH_INFO")
query_string = getenv("QUERY_STRING")
auth_type = getenv("AUTH_TYPE") auth_type = getenv("AUTH_TYPE")
cert_hash = getenv("TLS_CLIENT_HASH") remote_user = getenv("REMOTE_USER")
cert_sn = getenv("TLS_CLIENT_SERIAL_NUMBER") tls_client_issuer = getenv("TLS_CLIENT_ISSUER")
cert_name = getenv("REMOTE_USER") tls_client_hash = getenv("TLS_CLIENT_HASH")
tls_client_not_after = getenv("TLS_CLIENT_NOT_AFTER")
tls_client_not_before = getenv("TLS_CLIENT_NOT_BEFORE")
query_string_dec = unquote(query_string)
cgi_vars = [ cgi_vars = [
"version", "protocol", "software", "url", "script", "path", "query", "host", "gateway_interface", "remote_addr", "remote_host", "request_method",
"port", "remote", "tls_cipher", "tls_version", "auth_type", "cert_hash", "script_name", "server_name", "server_port", "server_protocol",
"cert_sn", "cert_name" "server_software", "gemini_document_root", "gemini_script_filename",
"gemini_url", "gemini_url_path", "tls_version", "tls_cipher", "path_info",
"query_string", "auth_type", "remote_user", "tls_client_issuer",
"tls_client_hash", "tls_client_not_after", "tls_client_not_before",
"query_string_dec",
] ]
def header(code, meta): def header(code, meta):