Broken project to implement a cross-protocol browser in textual
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import socket
import ssl
class GeminiProtocol():
def get(url):
hostname = _gethostname(url)
try:
s = socket.create_connection((hostname, 1965),timeout=2)
context = ssl.SSLContext()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
s = context.wrap_socket(s, server_hostname = hostname)
s.sendall((url + '\r\n').encode("UTF-8"))
fp = s.makefile("rb")
except:
return ("error",["error"])
header = fp.readline()
header = header.decode("UTF-8").strip()
if header[0:1] == "2":
return (header[3:], fp)
return ("error", [header])
def _gethostname(url):
return url.split('/')[2]
if __name__ == "__main__":
(mime, fp) = GeminiProtocol.get("gemini://gemini.zachdecook.com/")
print(mime)
print(fp)
|