style: a stapler in ascii art
This commit is contained in:
@@ -0,0 +1,9 @@
|
|||||||
|
STAPLER_ASCII = """ __..--''\\
|
||||||
|
__..--'' \\
|
||||||
|
__..--'' __..--''
|
||||||
|
__..--'' __..--'' |
|
||||||
|
\\ o __..--''____....----""
|
||||||
|
\\__..--''\\
|
||||||
|
| \\
|
||||||
|
+----------------------------------+
|
||||||
|
+----------------------------------+"""
|
||||||
|
|||||||
+8
-9
@@ -9,16 +9,13 @@ import re
|
|||||||
import tarfile
|
import tarfile
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from . import cert, data_dir, logs, project
|
from . import STAPLER_ASCII, cert, data_dir, logs, project
|
||||||
|
|
||||||
if typing.TYPE_CHECKING:
|
if typing.TYPE_CHECKING:
|
||||||
from . import params, registry
|
from . import params, registry
|
||||||
|
|
||||||
|
|
||||||
class _BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
|
class _BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
|
||||||
protocol_version = "HTTP/2.0"
|
|
||||||
server_version = "StaplerServer/" + project.get_version()
|
|
||||||
|
|
||||||
@typing.override
|
@typing.override
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@@ -45,7 +42,7 @@ class _BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
|
|||||||
explain = longmsg
|
explain = longmsg
|
||||||
if "Accept" not in self.headers["Accept"] or "text/" in self.headers["Accept"]:
|
if "Accept" not in self.headers["Accept"] or "text/" in self.headers["Accept"]:
|
||||||
self.send_basic_body(
|
self.send_basic_body(
|
||||||
f"{code} {message}\n{explain}\n{self.server_version}\n",
|
f"{code} {message}\n{explain}\n\n{self._server_signature()}",
|
||||||
code=code,
|
code=code,
|
||||||
message=message,
|
message=message,
|
||||||
)
|
)
|
||||||
@@ -134,6 +131,9 @@ class _BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
|
|||||||
fmt += " - %s"
|
fmt += " - %s"
|
||||||
self.logger.debug(fmt, *args)
|
self.logger.debug(fmt, *args)
|
||||||
|
|
||||||
|
def _server_signature(self) -> str:
|
||||||
|
return self.server_version + "\n\n" + STAPLER_ASCII + "\n"
|
||||||
|
|
||||||
|
|
||||||
class RequestHandler(http.server.SimpleHTTPRequestHandler, _BaseHandler):
|
class RequestHandler(http.server.SimpleHTTPRequestHandler, _BaseHandler):
|
||||||
protocol_version = "HTTP/2.0"
|
protocol_version = "HTTP/2.0"
|
||||||
@@ -170,7 +170,7 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler, _BaseHandler):
|
|||||||
def do_GET(self) -> None:
|
def do_GET(self) -> None:
|
||||||
self._pre_log_request()
|
self._pre_log_request()
|
||||||
if self.path == "/" and self._get_host() == self.default_host:
|
if self.path == "/" and self._get_host() == self.default_host:
|
||||||
return self.__server_index()
|
return self.send_basic_body(self._server_signature())
|
||||||
super().do_GET()
|
super().do_GET()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -266,11 +266,10 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler, _BaseHandler):
|
|||||||
def __valid_host(self, host: str) -> bool:
|
def __valid_host(self, host: str) -> bool:
|
||||||
return all(self.HOST_PART_REGEX.fullmatch(part) for part in host.split("."))
|
return all(self.HOST_PART_REGEX.fullmatch(part) for part in host.split("."))
|
||||||
|
|
||||||
def __server_index(self) -> None:
|
|
||||||
self.send_basic_body(self.server_version + "\n")
|
|
||||||
|
|
||||||
|
|
||||||
class UpgradeHandler(_BaseHandler):
|
class UpgradeHandler(_BaseHandler):
|
||||||
|
server_version = "StaplerUpgradeServer/" + project.get_version()
|
||||||
|
|
||||||
def do_HEAD(self) -> None:
|
def do_HEAD(self) -> None:
|
||||||
self._pre_log_request()
|
self._pre_log_request()
|
||||||
self.send_status_only(
|
self.send_status_only(
|
||||||
|
|||||||
+3
-1
@@ -4,7 +4,7 @@ import logging
|
|||||||
import threading
|
import threading
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
from . import cert, data_dir, handlers, project, registry
|
from . import STAPLER_ASCII, cert, data_dir, handlers, project, registry
|
||||||
|
|
||||||
if typing.TYPE_CHECKING:
|
if typing.TYPE_CHECKING:
|
||||||
from . import params
|
from . import params
|
||||||
@@ -106,6 +106,8 @@ class StaplerServer:
|
|||||||
|
|
||||||
def run(self) -> int:
|
def run(self) -> int:
|
||||||
self.logger.info("Version %s", project.get_version())
|
self.logger.info("Version %s", project.get_version())
|
||||||
|
for line in STAPLER_ASCII.split("\n"):
|
||||||
|
self.logger.debug(line.ljust(36))
|
||||||
self.__startup()
|
self.__startup()
|
||||||
base_server, https = self.__create_base_server()
|
base_server, https = self.__create_base_server()
|
||||||
upgrade_server = self.__start_upgrade_server() if https else None
|
upgrade_server = self.__start_upgrade_server() if https else None
|
||||||
|
|||||||
Reference in New Issue
Block a user