Some morning cleanup
This commit is contained in:
parent
f27398ea51
commit
d8f6d0b0a1
29
jetforce.py
29
jetforce.py
|
@ -58,7 +58,7 @@ class EchoApp:
|
||||||
|
|
||||||
def __iter__(self) -> typing.Iterator[bytes]:
|
def __iter__(self) -> typing.Iterator[bytes]:
|
||||||
self.send_status(STATUS_SUCCESS, "text/plain")
|
self.send_status(STATUS_SUCCESS, "text/plain")
|
||||||
path = self.environ["PATH"]
|
path = self.environ["PATH_INFO"]
|
||||||
yield f"Received path: {path}".encode()
|
yield f"Received path: {path}".encode()
|
||||||
|
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ class StaticDirectoryApp:
|
||||||
return build_class
|
return build_class
|
||||||
|
|
||||||
def __iter__(self) -> typing.Iterator[bytes]:
|
def __iter__(self) -> typing.Iterator[bytes]:
|
||||||
url_path = pathlib.Path(self.environ["PATH"].strip("/"))
|
url_path = pathlib.Path(self.environ["PATH_INFO"].strip("/"))
|
||||||
filesystem_path = (self.root / url_path).resolve()
|
filesystem_path = (self.root / url_path).resolve()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -162,13 +162,10 @@ class GeminiRequestHandler:
|
||||||
def __init__(self, server: "GeminiServer", app: typing.Callable) -> None:
|
def __init__(self, server: "GeminiServer", app: typing.Callable) -> None:
|
||||||
self.server = server
|
self.server = server
|
||||||
self.app = app
|
self.app = app
|
||||||
|
|
||||||
self.reader: typing.Optional[asyncio.StreamReader] = None
|
self.reader: typing.Optional[asyncio.StreamReader] = None
|
||||||
self.writer: typing.Optional[asyncio.StreamWriter] = None
|
self.writer: typing.Optional[asyncio.StreamWriter] = None
|
||||||
|
|
||||||
self.received_timestamp: typing.Optional[datetime.datetime] = None
|
self.received_timestamp: typing.Optional[datetime.datetime] = None
|
||||||
self.client_ip: typing.Optional[str] = None
|
self.remote_addr: typing.Optional[str] = None
|
||||||
self.client_port: typing.Optional[int] = None
|
|
||||||
self.path: typing.Optional[str] = None
|
self.path: typing.Optional[str] = None
|
||||||
self.status: typing.Optional[int] = None
|
self.status: typing.Optional[int] = None
|
||||||
self.mimetype: typing.Optional[str] = None
|
self.mimetype: typing.Optional[str] = None
|
||||||
|
@ -187,7 +184,7 @@ class GeminiRequestHandler:
|
||||||
"""
|
"""
|
||||||
self.reader = reader
|
self.reader = reader
|
||||||
self.writer = writer
|
self.writer = writer
|
||||||
self.client_ip, self.client_port = writer.get_extra_info("peername")
|
self.remote_addr = writer.get_extra_info("peername")[0]
|
||||||
self.received_timestamp = datetime.datetime.utcnow()
|
self.received_timestamp = datetime.datetime.utcnow()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -214,11 +211,10 @@ class GeminiRequestHandler:
|
||||||
Construct a dictionary that will be passed to the application handler.
|
Construct a dictionary that will be passed to the application handler.
|
||||||
"""
|
"""
|
||||||
return {
|
return {
|
||||||
"SERVER_HOST": self.server.host,
|
"SERVER_NAME": self.server.host,
|
||||||
"SERVER_PORT": self.server.port,
|
"SERVER_PORT": self.server.port,
|
||||||
"CLIENT_IP": self.client_ip,
|
"REMOTE_ADDR": self.remote_addr,
|
||||||
"CLIENT_PORT": self.client_port,
|
"PATH_INFO": self.path,
|
||||||
"PATH": self.path,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async def parse_request(self) -> None:
|
async def parse_request(self) -> None:
|
||||||
|
@ -275,7 +271,7 @@ class GeminiRequestHandler:
|
||||||
Log a gemini request using a format derived from the Common Log Format.
|
Log a gemini request using a format derived from the Common Log Format.
|
||||||
"""
|
"""
|
||||||
self.server.log_message(
|
self.server.log_message(
|
||||||
f"{self.client_ip} "
|
f"{self.remote_addr} "
|
||||||
f"[{self.received_timestamp:%d/%b/%Y:%H:%M:%S +0000}] "
|
f"[{self.received_timestamp:%d/%b/%Y:%H:%M:%S +0000}] "
|
||||||
f'"{self.path}" '
|
f'"{self.path}" '
|
||||||
f"{self.status} "
|
f"{self.status} "
|
||||||
|
@ -354,7 +350,10 @@ def generate_tls_certificate(hostname: str) -> typing.Tuple[str, str]:
|
||||||
return str(certfile), str(keyfile)
|
return str(certfile), str(keyfile)
|
||||||
|
|
||||||
|
|
||||||
def run_server():
|
def run_server() -> None:
|
||||||
|
"""
|
||||||
|
Entry point for running the command line directory server.
|
||||||
|
"""
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
prog="jetforce",
|
prog="jetforce",
|
||||||
description="An Experimental Gemini Protocol Server",
|
description="An Experimental Gemini Protocol Server",
|
||||||
|
@ -363,11 +362,9 @@ def run_server():
|
||||||
)
|
)
|
||||||
parser.add_argument("--host", help="server host", default="127.0.0.1")
|
parser.add_argument("--host", help="server host", default="127.0.0.1")
|
||||||
parser.add_argument("--port", help="server port", type=int, default=1965)
|
parser.add_argument("--port", help="server port", type=int, default=1965)
|
||||||
parser.add_argument(
|
|
||||||
"--dir", help="local directory to serve files from", default="/var/gemini"
|
|
||||||
)
|
|
||||||
parser.add_argument("--tls-certfile", help="TLS certificate file", metavar="FILE")
|
parser.add_argument("--tls-certfile", help="TLS certificate file", metavar="FILE")
|
||||||
parser.add_argument("--tls-keyfile", help="TLS private key file", metavar="FILE")
|
parser.add_argument("--tls-keyfile", help="TLS private key file", metavar="FILE")
|
||||||
|
parser.add_argument("--dir", help="local directory to serve", default="/var/gemini")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
certfile, keyfile = args.tls_certfile, args.tls_keyfile
|
certfile, keyfile = args.tls_certfile, args.tls_keyfile
|
||||||
|
|
Loading…
Reference in New Issue