|
@@ -1,5 +1,6 @@
|
|
#!/usr/bin/env python3
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
+import argparse
|
|
import hashlib
|
|
import hashlib
|
|
import os
|
|
import os
|
|
import pyftpdlib.authorizers
|
|
import pyftpdlib.authorizers
|
|
@@ -44,9 +45,18 @@ def serve(root_dir_path, username, password_sha256_hexdigest, control_port, pass
|
|
server.serve_forever()
|
|
server.serve_forever()
|
|
|
|
|
|
|
|
|
|
|
|
+class EnvDefaultArgparser(argparse.ArgumentParser):
|
|
|
|
+ def add_argument(self, *args, envvar=None, **kwargs):
|
|
|
|
+ if envvar:
|
|
|
|
+ envvar_value = os.environ.get(envvar, None)
|
|
|
|
+ if envvar_value:
|
|
|
|
+ kwargs['required'] = False
|
|
|
|
+ kwargs['default'] = envvar_value
|
|
|
|
+ super().add_argument(*args, **kwargs)
|
|
|
|
+
|
|
|
|
+
|
|
def _init_argparser():
|
|
def _init_argparser():
|
|
- import argparse
|
|
|
|
- argparser = argparse.ArgumentParser()
|
|
|
|
|
|
+ argparser = EnvDefaultArgparser()
|
|
argparser.add_argument(
|
|
argparser.add_argument(
|
|
'--root', '--root-dir',
|
|
'--root', '--root-dir',
|
|
metavar='path',
|
|
metavar='path',
|
|
@@ -58,16 +68,16 @@ def _init_argparser():
|
|
'--user', '--username',
|
|
'--user', '--username',
|
|
metavar='username',
|
|
metavar='username',
|
|
dest='username',
|
|
dest='username',
|
|
- required=not os.environ.get('FTP_USERNAME'),
|
|
|
|
- default=os.environ.get('FTP_USERNAME'),
|
|
|
|
|
|
+ required=True,
|
|
|
|
+ envvar='FTP_USERNAME',
|
|
help='default: env var $FTP_USERNAME',
|
|
help='default: env var $FTP_USERNAME',
|
|
)
|
|
)
|
|
argparser.add_argument(
|
|
argparser.add_argument(
|
|
'--pwd-hash', '--password-hash',
|
|
'--pwd-hash', '--password-hash',
|
|
metavar='sha256_hexdigest',
|
|
metavar='sha256_hexdigest',
|
|
dest='password_sha256_hexdigest',
|
|
dest='password_sha256_hexdigest',
|
|
- required=not os.environ.get('FTP_PASSWORD_SHA256'),
|
|
|
|
- default=os.environ.get('FTP_PASSWORD_SHA256'),
|
|
|
|
|
|
+ required=True,
|
|
|
|
+ envvar='FTP_PASSWORD_SHA256',
|
|
help='default: env var $FTP_PASSWORD_SHA256',
|
|
help='default: env var $FTP_PASSWORD_SHA256',
|
|
)
|
|
)
|
|
argparser.add_argument(
|
|
argparser.add_argument(
|