feat: install certbot and add parameters

This commit is contained in:
2026-04-12 11:42:40 +02:00
parent 416dc2673b
commit 084e8e5ae4
6 changed files with 110 additions and 52 deletions
+80 -26
View File
@@ -14,6 +14,8 @@ class Parameters:
bind: str
token: str
max_size_bytes: int
certbot_conf: str
certbot_www: str
@classmethod
def from_namespace(cls, args: argparse.Namespace) -> "Parameters":
@@ -33,48 +35,100 @@ def __get_env_int(var: str, default: int) -> int:
return default
def __add_arg_str(
parser: argparse.ArgumentParser, *flags: str, env_var: str, default: str, help: str
):
parser.add_argument(
*flags,
metavar=env_var,
default=__get_env_str(env_var, default),
help=f"{help} (default: {default})",
)
def __add_arg_int(
parser: argparse.ArgumentParser, *flags: str, env_var: str, default: int, help: str
):
parser.add_argument(
*flags,
type=int,
metavar=env_var,
default=__get_env_int(env_var, default),
help=f"{help} (default: {default})",
)
def __add_arg_str_required(
parser: argparse.ArgumentParser, *flags: str, env_var: str, help: str
):
parser.add_argument(
*flags,
metavar=env_var,
required=os.getenv(env_var) is None,
default=os.getenv(env_var),
help=f"{help}",
)
def parse_parameters() -> Parameters:
parser = argparse.ArgumentParser(
project.get_name(), description=project.get_description()
project.get_name(),
description=project.get_description(),
epilog="(Each option can be supplied with equivalent environment variable.)",
)
parser.add_argument(
"-p",
"--port",
type=int,
default=__get_env_int("PORT", 8080),
help="server port (default: 8080) (env var: PORT)",
__add_arg_int(
parser, "-p", "--port", env_var="PORT", default=8080, help="server port"
)
parser.add_argument(
__add_arg_str(
parser,
"--host",
default=__get_env_str("HOST", "localhost"),
help="server default host (default: localhost) (env var: HOST)",
env_var="HOST",
default="localhost",
help="server default host",
)
parser.add_argument(
__add_arg_str(
parser,
"-d",
"--data-dir",
default=__get_env_str("DATA_DIR", os.path.join(os.getcwd(), "data")),
help="directory where files are/will be stored"
" (default: ./data) (env var: DATA_DIR)",
env_var="DATA_DIR",
default=os.path.join(".", "data"),
help="directory where pages are/will be stored",
)
parser.add_argument(
__add_arg_str_required(
parser,
"-t",
"--token",
required=os.getenv("TOKEN") is None,
default=os.getenv("TOKEN"),
help="secret token for update requests (env var: TOKEN)",
env_var="TOKEN",
help="secret token for update requests",
)
parser.add_argument(
__add_arg_int(
parser,
"--max-size-bytes",
type=int,
default=__get_env_int("MAX_SIZE", 2000000),
help="max size of accepted archives (in bytes)"
" (default: 2000000 -> 2MB) (env var: MAX_SIZE)",
env_var="MAX_SIZE",
default=2_000_000,
help="max size of accepted archives (in bytes)",
)
parser.add_argument(
__add_arg_str(
parser,
"-b",
"--bind",
default=__get_env_str("BIND", "0.0.0.0"),
help="server bind address (default: 0.0.0.0) (env var: BIND)",
env_var="BIND",
default="0.0.0.0",
help="server bind address",
)
__add_arg_str(
parser,
"--certbot-conf",
env_var="CERTBOT_CONF",
default="/etc/letsencrypt",
help="Certbot config dir",
)
__add_arg_str(
parser,
"--certbot-www",
env_var="CERTBOT_WWW",
default=os.path.join(".", "data", ".certbot"),
help="Certbot www dir",
)
args = parser.parse_args()
return Parameters.from_namespace(args)