gpt4 book ai didi

Python FTP服务器: How do I support both secure and insecure

转载 作者:太空宇宙 更新时间:2023-11-03 16:48:09 29 4
gpt4 key购买 nike

我可以使用文档中的示例制作一个基本的 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,而不是 original code sample 中所示的 21):

from pyftpdlib.servers import FTPServer
from pyftpdlib.authorizers import DummyAuthorizer
from pyftpdlib.contrib.handlers import TLS_FTPHandler


def main():
authorizer = DummyAuthorizer()
authorizer.add_user('user', '12345', '.', perm='elradfmw')
authorizer.add_anonymous('.')
handler = TLS_FTPHandler
handler.certfile = 'keycert.pem'
handler.authorizer = authorizer
# requires SSL for both control and data channel
#handler.tls_control_required = True
#handler.tls_data_required = True
server = FTPServer(('', 990), handler)
server.serve_forever()

if __name__ == '__main__':
main()

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

handler.passive_ports = range(50000, 50051)

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

最佳答案

无需在同一进程中同时使用两种服务器,但您可以简单地使用具有相同 passive_ports 设置的单独进程。创建套接字时,它只会尝试使用给定范围内的端口,该端口未被系统上的任何其他进程使用。因此,如果特定端口已被另一个服务器进程使用,则一个服务器进程将仅重试另一个端口。

关于Python FTP服务器: How do I support both secure and insecure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36121221/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com