Improve path handling in PageNode class to ensure consistent formatting of served pages and files.

This commit is contained in:
2025-09-23 04:13:37 -05:00
parent 62fde2617b
commit fb36907447

View File

@@ -69,6 +69,8 @@ class PageNode:
self.servedpages = [] self.servedpages = []
self._scan_pages(self.pagespath) self._scan_pages(self.pagespath)
pagespath = os.path.join(self.pagespath, "")
if not os.path.isfile(os.path.join(self.pagespath, "index.mu")): if not os.path.isfile(os.path.join(self.pagespath, "index.mu")):
self.destination.register_request_handler( self.destination.register_request_handler(
"/page/index.mu", "/page/index.mu",
@@ -77,7 +79,9 @@ class PageNode:
) )
for full_path in self.servedpages: for full_path in self.servedpages:
rel = full_path[len(self.pagespath) :] rel = full_path[len(pagespath) :]
if not rel.startswith("/"):
rel = "/" + rel
request_path = f"/page{rel}" request_path = f"/page{rel}"
self.destination.register_request_handler( self.destination.register_request_handler(
request_path, request_path,
@@ -90,8 +94,12 @@ class PageNode:
self.servedfiles = [] self.servedfiles = []
self._scan_files(self.filespath) self._scan_files(self.filespath)
filespath = os.path.join(self.filespath, "")
for full_path in self.servedfiles: for full_path in self.servedfiles:
rel = full_path[len(self.filespath) :] rel = full_path[len(filespath) :]
if not rel.startswith("/"):
rel = "/" + rel
request_path = f"/file{rel}" request_path = f"/file{rel}"
self.destination.register_request_handler( self.destination.register_request_handler(
request_path, request_path,
@@ -129,7 +137,8 @@ class PageNode:
def serve_page( def serve_page(
self, path, data, request_id, link_id, remote_identity, requested_at, self, path, data, request_id, link_id, remote_identity, requested_at,
): ):
file_path = path.replace("/page", self.pagespath, 1) pagespath = os.path.join(self.pagespath, "")
file_path = pagespath + path[5:]
try: try:
with open(file_path, "rb") as _f: with open(file_path, "rb") as _f:
first_line = _f.readline() first_line = _f.readline()
@@ -174,7 +183,8 @@ class PageNode:
def serve_file( def serve_file(
self, path, data, request_id, link_id, remote_identity, requested_at, self, path, data, request_id, link_id, remote_identity, requested_at,
): ):
file_path = path.replace("/file", self.filespath, 1) filespath = os.path.join(self.filespath, "")
file_path = filespath + path[6:]
return [ return [
open(file_path, "rb"), open(file_path, "rb"),
{"name": os.path.basename(file_path).encode("utf-8")}, {"name": os.path.basename(file_path).encode("utf-8")},