|
|
|
@ -66,9 +66,13 @@ class Handler(socketserver.StreamRequestHandler):
|
|
|
|
|
|
|
|
|
|
file_name = None
|
|
|
|
|
if header.get("type") == "txt":
|
|
|
|
|
file_name = write_text(data, title=header.get("title"))
|
|
|
|
|
file_name = write_text(data, title=header.get("title", ""))
|
|
|
|
|
elif header.get("type") == "raw":
|
|
|
|
|
file_name = write_content(data)
|
|
|
|
|
file_name = write_content(
|
|
|
|
|
data,
|
|
|
|
|
name=header.get("name", ""),
|
|
|
|
|
extension=header.get("ext", ""),
|
|
|
|
|
)
|
|
|
|
|
else:
|
|
|
|
|
print("Unknown type.")
|
|
|
|
|
if file_name is None:
|
|
|
|
@ -100,26 +104,36 @@ class Handler(socketserver.StreamRequestHandler):
|
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def write_text(data: bytes, title=None):
|
|
|
|
|
def write_text(data: bytes, title: str = "", name: str = ""):
|
|
|
|
|
content = "<pre>{}</pre>".format(data.decode(errors="replace"))
|
|
|
|
|
html = HTML_TEMPLATE.format(title=title or "", content=content).encode()
|
|
|
|
|
return write_content(html)
|
|
|
|
|
return write_content(html, extension="html")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def write_content(data: bytes):
|
|
|
|
|
def write_content(data: bytes, name: str = "", extension: str = ""):
|
|
|
|
|
print("name", name, "extension", extension)
|
|
|
|
|
path = str(Path(ARGS.root) / "txt")
|
|
|
|
|
if not os.path.isdir(path):
|
|
|
|
|
print(f"Missing '{path}' folder.")
|
|
|
|
|
return None
|
|
|
|
|
with tempfile.NamedTemporaryFile(
|
|
|
|
|
mode="wb",
|
|
|
|
|
dir=path,
|
|
|
|
|
suffix=".html",
|
|
|
|
|
delete=False
|
|
|
|
|
mode="wb",
|
|
|
|
|
dir=path,
|
|
|
|
|
suffix=f".{extension}" if extension else None,
|
|
|
|
|
delete=False,
|
|
|
|
|
) as output_file:
|
|
|
|
|
output_file.write(data)
|
|
|
|
|
os.chmod(output_file.name, 0o644)
|
|
|
|
|
return output_file.name
|
|
|
|
|
file_name = output_file.name
|
|
|
|
|
if name:
|
|
|
|
|
new_file_name = os.path.join(os.path.dirname(file_name), name)
|
|
|
|
|
try:
|
|
|
|
|
os.rename(file_name, name)
|
|
|
|
|
file_name = new_file_name
|
|
|
|
|
except OSError as exc:
|
|
|
|
|
print(f"Failed to give required name to the file: {exc}")
|
|
|
|
|
return None
|
|
|
|
|
return file_name
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|