update scripts to use Opal instead of gmnisrv

main
dece 3 years ago
parent f7e82f2b41
commit 47650deb33

@ -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

@ -3,7 +3,7 @@
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")
import string
@ -11,7 +11,7 @@ import subprocess
from os import getenv
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():
STORAGE_PATH.mkdir(parents=True)
@ -29,8 +29,8 @@ def show_lists():
print("# Lists")
for child in user_dir.iterdir():
if child.is_file():
print(f"=> ./{child.name} 📄 {child.name}")
print("=> ./_/create ✨ Create a new list")
print(f"=> {scgi.script_name}/{child.name} 📄 {child.name}")
print(f"=> {scgi.script_name}/_/create ✨ Create a new list")
def show_list(list_name):
list_file = get_user_dir() / list_name
@ -43,9 +43,9 @@ def show_list(list_name):
scgi.header(20, "text/gemini")
print("# " + list_name)
print(content)
print(f"=> ./{list_name}/add Append item")
print(f"=> ./{list_name}/pop Pop first item")
print(f"=> {scgi.script_name}/{list_name}/add Append item")
print(f"=> {scgi.script_name}/{list_name}/pop Pop first item")
def process_action(list_name, action):
if list_name == "_" and action == "create":
process_creation()
@ -57,7 +57,7 @@ def process_action(list_name, action):
scgi.not_found()
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)"
scgi.require_input(meta)
else:
@ -69,7 +69,7 @@ def process_creation():
redirect_to_list(new_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")
else:
if "\n" in item:
@ -90,9 +90,9 @@ def process_pop(list_name):
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]
action = path_components[1] if len(path_components) > 1 else ''
if not list_name:

@ -1,30 +1,43 @@
#!/bin/false
from os import environ
from urllib.parse import unquote
def getenv(name):
return environ.get(name, "")
version = getenv("GATEWAY_INTERFACE")
protocol = getenv("SERVER_PROTOCOL")
software = getenv("SERVER_SOFTWARE")
url = getenv("GEMINI_URL")
script = getenv("SCRIPT_NAME")
path = getenv("PATH_INFO")
query = getenv("QUERY_STRING")
host = getenv("SERVER_NAME")
port = getenv("SERVER_PORT")
remote = getenv("REMOTE_HOST")
tls_cipher = getenv("TLS_CIPHER")
gateway_interface = getenv("GATEWAY_INTERFACE")
remote_addr = getenv("REMOTE_ADDR")
remote_host = getenv("REMOTE_HOST")
request_method = getenv("REQUEST_METHOD")
script_name = getenv("SCRIPT_NAME")
server_name = getenv("SERVER_NAME")
server_port = getenv("SERVER_PORT")
server_protocol = getenv("SERVER_PROTOCOL")
server_software = getenv("SERVER_SOFTWARE")
gemini_document_root = getenv("GEMINI_DOCUMENT_ROOT")
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_cipher = getenv("TLS_CIPHER")
path_info = getenv("PATH_INFO")
query_string = getenv("QUERY_STRING")
auth_type = getenv("AUTH_TYPE")
cert_hash = getenv("TLS_CLIENT_HASH")
cert_sn = getenv("TLS_CLIENT_SERIAL_NUMBER")
cert_name = getenv("REMOTE_USER")
remote_user = getenv("REMOTE_USER")
tls_client_issuer = getenv("TLS_CLIENT_ISSUER")
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 = [
"version", "protocol", "software", "url", "script", "path", "query", "host",
"port", "remote", "tls_cipher", "tls_version", "auth_type", "cert_hash",
"cert_sn", "cert_name"
"gateway_interface", "remote_addr", "remote_host", "request_method",
"script_name", "server_name", "server_port", "server_protocol",
"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):

Loading…
Cancel
Save