Update server.py
This commit is contained in:
parent
31223530d7
commit
81249ca89c
1 changed files with 46 additions and 2 deletions
48
server.py
48
server.py
|
@ -1,5 +1,5 @@
|
|||
#!/usr/bin/python3
|
||||
import asyncio, traceback
|
||||
import asyncio, traceback, socket, ssl
|
||||
from flask import Flask, request, redirect
|
||||
from hypercorn.config import Config
|
||||
from hypercorn.asyncio import serve
|
||||
|
@ -33,7 +33,51 @@ def relay():
|
|||
code = "<h1>Something went wrong...</h1>\n"
|
||||
title = "Something went wrong..."
|
||||
try:
|
||||
raise Exception("Not implemented")
|
||||
gsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
gemsocket = ssl.wrap_socket(gsocket)
|
||||
gemsocket.connect((url, 1965))
|
||||
gemsocket.send(bytes("gemini://" + url + "\r\n", "UTF-8"))
|
||||
received = ""
|
||||
while True:
|
||||
gemresponse = gemsocket.recv(2048)
|
||||
if gemresponse:
|
||||
received += gemresponse.decode()
|
||||
else:
|
||||
break
|
||||
received = received.replace("\r", "")
|
||||
firstline = True
|
||||
redirected = False
|
||||
gemtext = True
|
||||
code = ""
|
||||
for i in received.split("\n"):
|
||||
if firstline:
|
||||
if i.split(" ")[0][0] == "3":
|
||||
return redirect("/gem?gemini=" + i.split(" ")[1])
|
||||
elif i.split(" ")[0][0] != "2":
|
||||
return f'<!DOCTYPE html>\n<html><head><meta charset="UTF-8"><link rel="stylesheet" href="https://swee.codes/style.css"><title>Something went wrong...</title></head><body><h1>Something went wrong...</h1><p>The specified Gemini server returned a status of: {i}</p></body></html>'
|
||||
else:
|
||||
firstline = False
|
||||
if i.split(" ")[1] != "text/gemini":
|
||||
return f'<!DOCTYPE html>\n<html><head><meta charset="UTF-8"><link rel="stylesheet" href="https://swee.codes/style.css"><title>Something went wrong...</title></head><body><h1>Something went wrong...</h1><p>This path returned a file that isn\'t Gemtext, which Gem2Browser doesn\'t support downloading files.</p></body></html>'
|
||||
else:
|
||||
if i[0:1] == "# ":
|
||||
if title == "Something went wrong...":
|
||||
title = i[2:]
|
||||
temp = i[2:]
|
||||
code += f"<h1>{temp}</h1>\n"
|
||||
elif i[0:2] == "## "
|
||||
temp = i[3:]
|
||||
code += f"<h2>{temp}</h2>\n"
|
||||
elif i[0:3] == "### ":
|
||||
temp = i[4:]
|
||||
code += f"<h3>{temp}</h3>\n"
|
||||
elif i[0:1] == "* ":
|
||||
temp = i[2:]
|
||||
code += f"<ul><li>{temp}</li></ul>"
|
||||
else:
|
||||
code += f"<p>{code}</p>\n"
|
||||
if title == "Something went wrong...":
|
||||
title = "gemini://" + url
|
||||
except:
|
||||
code += traceback.format_exc()
|
||||
return f'<!DOCTYPE html>\n<html><head><meta charset="UTF-8"><link rel="stylesheet" href="https://swee.codes/style.css"><title>{title}</title></head><body>{code}</body></html>'
|
||||
|
|
Loading…
Add table
Reference in a new issue