commit - 9f7edfa033174934d993217ee0c3fde8502fc63d
commit + 15efabff9a5b649dd6576c2a6e29b1ccb0c7d9ed
blob - dd45d20eca583fc1e5830281346f47a43b4dcd63
blob + 6d6c02dd1e501e90365524b747af4b0764e33eed
--- lonk.py
+++ lonk.py
from json import loads as json_loads
from pathlib import Path
from sys import stdout
-from urllib.error import HTTPError
+from urllib.error import HTTPError, URLError
from urllib.parse import urlencode, urlunsplit, urljoin, urlsplit, parse_qsl
from urllib.request import urlopen
from html.parser import HTMLParser
else:
header = f'## From: {honk["Handle"]}, {honk["Date"]}'
collected[convoy] = (honk, header)
+
+ print("20 text/gemini\r")
print("# 𝓗 onk\n")
line = f"=> {_build_url(path='atme')} @me"
def proxy(mime, url):
- try:
- with urlopen(url, timeout=10) as f:
- stdout.buffer.write(b"20 " + mime.encode() + b"\r\n")
- while True:
- content = f.read(512 * 1024)
- if not content:
- break
- stdout.buffer.write(content)
- except HTTPError as error:
- print(f"43 Remote server return {error.code}: {error.reason}\r")
+ with urlopen(url, timeout=10) as f:
+ stdout.buffer.write(b"20 " + mime.encode() + b"\r\n")
+ while True:
+ content = f.read(512 * 1024)
+ if not content:
+ break
+ stdout.buffer.write(content)
+
def vgi(cert_hash):
url = urlsplit(input().strip())
page = [part for part in url.path.split("/") if part][-1]
if page == "lonk":
- print("20 text/gemini\r")
demo(url)
elif page == "proxy":
query = {pair[0]: pair[1] for pair in parse_qsl(url.query)}
cert_hash = environ.get("VGI_CERT_HASH")
if cert_hash:
- vgi(cert_hash)
+ try:
+ vgi(cert_hash)
+ except HTTPError as error:
+ print(f"43 Remote server return {error.code}: {error.reason}\r")
+ except URLError as error:
+ print(f"43 Error while trying to access remote server: {error.reason}\r")
else:
print("60 Certificate required\r")