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