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 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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user