|
@@ -2,6 +2,7 @@ import argparse
|
|
import hashlib
|
|
import hashlib
|
|
import logging
|
|
import logging
|
|
import os
|
|
import os
|
|
|
|
+
|
|
import pyftpdlib.authorizers
|
|
import pyftpdlib.authorizers
|
|
import pyftpdlib.handlers
|
|
import pyftpdlib.handlers
|
|
import pyftpdlib.servers
|
|
import pyftpdlib.servers
|
|
@@ -26,8 +27,12 @@ class SHA256Authorizer(pyftpdlib.authorizers.DummyAuthorizer):
|
|
raise pyftpdlib.authorizers.AuthenticationFailed()
|
|
raise pyftpdlib.authorizers.AuthenticationFailed()
|
|
|
|
|
|
|
|
|
|
-def serve(root_dir_path, username, password_sha256_hexdigest, control_port, passive_port, passive_address, log_level):
|
|
+def serve(root_dir_path, username, password_sha256_hexdigest,
|
|
|
|
+ control_port, passive_port, passive_address, umask, log_level):
|
|
logging.basicConfig(level=log_level)
|
|
logging.basicConfig(level=log_level)
|
|
|
|
+ if umask:
|
|
|
|
+ os.umask(umask)
|
|
|
|
+ logging.info('umask=0o%o', umask)
|
|
assert os.path.isdir(root_dir_path), root_dir_path
|
|
assert os.path.isdir(root_dir_path), root_dir_path
|
|
authorizer = SHA256Authorizer()
|
|
authorizer = SHA256Authorizer()
|
|
authorizer.add_user(
|
|
authorizer.add_user(
|
|
@@ -115,8 +120,14 @@ def _init_argparser():
|
|
envvar='FTP_PASSIVE_ADDRESS',
|
|
envvar='FTP_PASSIVE_ADDRESS',
|
|
default=None,
|
|
default=None,
|
|
help='address returned to client (227)'
|
|
help='address returned to client (227)'
|
|
- + ' after opening port for passive mode (PASV)'
|
|
+ + ' after opening port for passive mode (PASV)'
|
|
- + ' default: socket\'s own address',
|
|
+ + ' default: socket\'s own address',
|
|
|
|
+ )
|
|
|
|
+ argparser.add_argument(
|
|
|
|
+ '--umask',
|
|
|
|
+ type=int,
|
|
|
|
+ envvar='UMASK',
|
|
|
|
+ default=' default: env var $UMASK',
|
|
)
|
|
)
|
|
argparser.add_argument(
|
|
argparser.add_argument(
|
|
'--log-level',
|
|
'--log-level',
|