style: a stapler in ascii art

This commit is contained in:
2026-04-16 23:26:48 +02:00
parent 8404bd3713
commit b103890009
3 changed files with 20 additions and 10 deletions
+9
View File
@@ -0,0 +1,9 @@
STAPLER_ASCII = """ __..--''\\
__..--'' \\
__..--'' __..--''
__..--'' __..--'' |
\\ o __..--''____....----""
\\__..--''\\
| \\
+----------------------------------+
+----------------------------------+"""
+8 -9
View File
@@ -9,16 +9,13 @@ import re
import tarfile
import typing
from . import cert, data_dir, logs, project
from . import STAPLER_ASCII, cert, data_dir, logs, project
if typing.TYPE_CHECKING:
from . import params, registry
class _BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
protocol_version = "HTTP/2.0"
server_version = "StaplerServer/" + project.get_version()
@typing.override
def __init__(
self,
@@ -45,7 +42,7 @@ class _BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
explain = longmsg
if "Accept" not in self.headers["Accept"] or "text/" in self.headers["Accept"]:
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,
message=message,
)
@@ -134,6 +131,9 @@ class _BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
fmt += " - %s"
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):
protocol_version = "HTTP/2.0"
@@ -170,7 +170,7 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler, _BaseHandler):
def do_GET(self) -> None:
self._pre_log_request()
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()
return None
@@ -266,11 +266,10 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler, _BaseHandler):
def __valid_host(self, host: str) -> bool:
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):
server_version = "StaplerUpgradeServer/" + project.get_version()
def do_HEAD(self) -> None:
self._pre_log_request()
self.send_status_only(
+3 -1
View File
@@ -4,7 +4,7 @@ import logging
import threading
import typing
from . import cert, data_dir, handlers, project, registry
from . import STAPLER_ASCII, cert, data_dir, handlers, project, registry
if typing.TYPE_CHECKING:
from . import params
@@ -106,6 +106,8 @@ class StaplerServer:
def run(self) -> int:
self.logger.info("Version %s", project.get_version())
for line in STAPLER_ASCII.split("\n"):
self.logger.debug(line.ljust(36))
self.__startup()
base_server, https = self.__create_base_server()
upgrade_server = self.__start_upgrade_server() if https else None