Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5e5147251f | ||
|
|
3fe33cb348 | ||
|
|
65c6145022 | ||
|
|
4af15b082d | ||
|
|
9aa84cc2c3 | ||
|
|
658174518a |
+1
-1
@@ -1,3 +1,3 @@
|
||||
# do daily/weekly/monthly maintenance
|
||||
# min hour day month weekday command
|
||||
0 3 * * 1 /app/main.py renew
|
||||
0 3 * * 1 stapler renew
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "stapler"
|
||||
version = "1.2.2"
|
||||
version = "1.2.4"
|
||||
description = "Static pages as simple as a gzip file"
|
||||
requires-python = ">=3.14"
|
||||
dependencies = [
|
||||
@@ -28,7 +28,7 @@ dev = [
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = ["ALL"]
|
||||
ignore = ["D", "E501", "S104", "PLR2004", "ANN401", "BLE001", "COM812", "S603", "PLR0911", "S101", "PT"]
|
||||
ignore = ["D", "E501", "S104", "PLR2004", "ANN401", "BLE001", "COM812", "S603", "PLR0911", "S101", "PT", "E722"]
|
||||
|
||||
[tool.coverage.run]
|
||||
source = ["stapler"]
|
||||
|
||||
+19
-2
@@ -73,6 +73,10 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
|
||||
else:
|
||||
self.send_status_only(code, message)
|
||||
|
||||
@typing.override
|
||||
def address_string(self) -> str: # pragma: no cover
|
||||
return re.sub(r"[^\x00-\x7F]+", "", super().address_string())
|
||||
|
||||
@typing.override
|
||||
def log_message(self, format: str, *args: typing.Any) -> None: # pragma: no cover
|
||||
fmt = "%s - " + format
|
||||
@@ -98,7 +102,12 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
|
||||
code = color + str(code.value) + logs.TermColor.RESET
|
||||
if size == "" and self.out_size > 0:
|
||||
size = str(self.out_size)
|
||||
args = (code, self.address_string(), self.host, self.requestline)
|
||||
args = (
|
||||
code,
|
||||
self.address_string(),
|
||||
self.host,
|
||||
re.sub(r"[^\x00-\x7F]+", "?", self.requestline),
|
||||
)
|
||||
fmt = "→ %s - %s - %s - %s"
|
||||
if size != "":
|
||||
args = (*args, size)
|
||||
@@ -219,7 +228,12 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
|
||||
)
|
||||
|
||||
def _pre_log_request(self) -> None: # pragma: no cover
|
||||
args = ("...", self.address_string(), self.host, self.requestline)
|
||||
args = (
|
||||
"...",
|
||||
self.address_string(),
|
||||
self.host,
|
||||
re.sub(r"[^\x00-\x7F]+", "?", self.requestline),
|
||||
)
|
||||
fmt = "← %s - %s - %s - %s"
|
||||
if self.in_size > 0:
|
||||
args = (*args, self.in_size)
|
||||
@@ -275,7 +289,10 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler, BaseHandler):
|
||||
self.__target_redirect: str | None = None
|
||||
self.__target_proxy: str | None = None
|
||||
self.__target_spa: str | None = None
|
||||
try:
|
||||
super().__init__(*args, directory=params.data_dir, **kwargs, params=params) # ty:ignore[unknown-argument]
|
||||
except:
|
||||
self.logger.exception("Could not handle request")
|
||||
|
||||
@property
|
||||
def token(self) -> str:
|
||||
|
||||
@@ -162,6 +162,21 @@ class TestRequestHandler(BaseHandlerTestCase):
|
||||
handler.data_dir = self.data_dir
|
||||
return handler
|
||||
|
||||
def test_handle_errors_silently(self) -> None:
|
||||
with self.patch("http.server.BaseHTTPRequestHandler.__init__") as mock:
|
||||
mock.side_effect = Exception
|
||||
logging.basicConfig(level=logging.CRITICAL)
|
||||
RequestHandler(
|
||||
unittest.mock.MagicMock(),
|
||||
"127.0.0.1",
|
||||
unittest.mock.MagicMock(),
|
||||
params=Parameters(
|
||||
data_dir=self.get_tmp_dir(), certbot_www=str(self.certbot_www)
|
||||
),
|
||||
registry=self.registry,
|
||||
token_manager=self.token_manager,
|
||||
)
|
||||
|
||||
def test_do_head_forward(self) -> None:
|
||||
handler = self._get_handler()
|
||||
with (
|
||||
@@ -1253,6 +1268,7 @@ class TestUpgradeHandler(BaseHandlerTestCase):
|
||||
handler.headers = collections.defaultdict(lambda: None, headers) # ty:ignore[invalid-assignment]
|
||||
handler.rfile = rfile if rfile is not None else io.BytesIO()
|
||||
handler.wfile = io.BytesIO()
|
||||
handler.client_address = ("127.0.0.1", 12345)
|
||||
handler.logger = unittest.mock.Mock(logging.Logger)
|
||||
handler.data_dir = self.data_dir
|
||||
return handler
|
||||
|
||||
Reference in New Issue
Block a user