update scripts to use Opal instead of gmnisrv
This commit is contained in:
parent
f7e82f2b41
commit
47650deb33
15
check-email
Executable file
15
check-email
Executable 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])
|
20
lists
20
lists
|
@ -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,8 +43,8 @@ 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":
|
||||||
|
@ -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:
|
||||||
|
|
49
smolcgi.py
49
smolcgi.py
|
@ -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):
|
||||||
|
|
Reference in a new issue