Python FTP服务器:如何支持安全和不安全

Python FTP服务器:如何支持安全和不安全,python,ftp,pyftpdlib,Python,Ftp,Pyftpdlib,我可以使用文档中的示例制作一个基本FTP服务器,用于应答端口21(或在本例中为2121): from pyftpdlib.handlers import FTPHandler from pyftpdlib.servers import FTPServer from pyftpdlib.contrib.authorizers import WindowsAuthorizer def main(): authorizer = WindowsAuthorizer() # Use Gu

我可以使用文档中的示例制作一个基本FTP服务器,用于应答端口21(或在本例中为2121):

from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
from pyftpdlib.contrib.authorizers import WindowsAuthorizer

def main():
    authorizer = WindowsAuthorizer()
    # Use Guest user with empty password to handle anonymous sessions.
    # Guest user must be enabled first, empty password set and profile
    # directory specified.
    #authorizer = WindowsAuthorizer(anonymous_user="Guest", anonymous_password="")
    handler = FTPHandler
    handler.authorizer = authorizer
    server = FTPServer(('', 2121), handler)
    server.serve_forever()

if __name__ == "__main__":
    main()
或者我可以制作一个支持TLS的(这也是文档中的示例,除了我们的安全FTP端口是990,而不是图中所示的21):

是否有一种方法可以在同一脚本中应答端口21(不安全)和990(使用TLS保护),它们共享一系列被动端口,例如:

handler.passive_ports = range(50000, 50051)

我想我可以写两个脚本,但如果它们共享被动端口范围,它将如何工作?这个范围是一个要求,我们使用的当前IIS设置同时支持TLS和不安全连接。我想在自定义服务器中使用pyftpdlib,这样我们就可以对上传的文件执行自定义逻辑。所有这些都很好,我只需要理解最后一点,我没有编写FTP服务器的经验。

没有必要在同一进程中同时使用两种服务器,但您可以使用具有相同
被动端口设置的单独进程。当创建套接字时,它只会尝试使用给定范围内的端口,该端口不被系统上的任何其他进程使用。因此,如果另一个服务器进程已经在使用某个特定端口,那么一个服务器进程将使用另一个端口重试。

我在线程方面做了很多工作,但在启动两个线程时遇到了麻烦。因此,我制作了两个脚本,使调试更容易。在同样的被动范围内,他们似乎很高兴,但我还没有使出浑身解数,只是上传了很多。除非有更好的方法,否则我明天会试试。这才是我真正需要知道的。
handler.passive_ports = range(50000, 50051)