Browse Source

added param --pasv-addr

Fabian Peter Hammerle 5 years ago
parent
commit
03b7adfaae
1 changed files with 13 additions and 3 deletions
  1. 13 3
      pyftpd-sink

+ 13 - 3
pyftpd-sink

@@ -28,7 +28,7 @@ class SHA256Authorizer(pyftpdlib.authorizers.DummyAuthorizer):
             raise pyftpdlib.authorizers.AuthenticationFailed()
 
 
-def serve(root_dir_path, username, password_sha256_hexdigest, control_port, passive_port, log_level):
+def serve(root_dir_path, username, password_sha256_hexdigest, control_port, passive_port, passive_address, log_level):
     logging.basicConfig(level=log_level)
     assert os.path.isdir(root_dir_path), root_dir_path
     authorizer = SHA256Authorizer()
@@ -47,8 +47,8 @@ def serve(root_dir_path, username, password_sha256_hexdigest, control_port, pass
     handler = pyftpdlib.handlers.FTPHandler
     handler.authorizer = authorizer
     handler.banner = 'ni hao'
-    # handler.masquerade_address = '192.168.1.1'
     handler.passive_ports = (passive_port,)
+    handler.masquerade_address = passive_address
     server = pyftpdlib.servers.FTPServer((None, control_port), handler)
     # apparently requires +1 for unknown reasons
     server.max_cons = 1 + 1
@@ -107,7 +107,17 @@ def _init_argparser():
         envvar='FTP_PASSIVE_PORT',
         default=62121,
         help='port for passive (PASV) & extended passive (EPSV) mode;'
-            +' default: env var $FTP_PASSIVE_PORT or 62121',
+        + ' default: env var $FTP_PASSIVE_PORT or 62121',
+    )
+    argparser.add_argument(
+        '--pasv-addr', '--passive-address', '--masquerade-address',
+        metavar='ip_address',
+        dest='passive_address',
+        envvar='FTP_PASSIVE_ADDRESS',
+        default=None,
+        help='address returned to client (227)'
+            + ' after opening port for passive mode (PASV)'
+            + ' default: socket\'s own address',
     )
     argparser.add_argument(
         '--log-level',