diff options
Diffstat (limited to 'third_party/pyftpdlib/demo/basic_ftpd.py')
-rw-r--r-- | third_party/pyftpdlib/demo/basic_ftpd.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/third_party/pyftpdlib/demo/basic_ftpd.py b/third_party/pyftpdlib/demo/basic_ftpd.py new file mode 100644 index 0000000..128eafc --- /dev/null +++ b/third_party/pyftpdlib/demo/basic_ftpd.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# basic_ftpd.py + +"""A basic FTP server which uses a DummyAuthorizer for managing 'virtual +users', setting a limit for incoming connections. +""" + +import os + +from pyftpdlib import ftpserver + + +if __name__ == "__main__": + + # Instantiate a dummy authorizer for managing 'virtual' users + authorizer = ftpserver.DummyAuthorizer() + + # Define a new user having full r/w permissions and a read-only + # anonymous user + authorizer.add_user('user', '12345', os.getcwd(), perm='elradfmw') + authorizer.add_anonymous(os.getcwd()) + + # Instantiate FTP handler class + ftp_handler = ftpserver.FTPHandler + ftp_handler.authorizer = authorizer + + # Define a customized banner (string returned when client connects) + ftp_handler.banner = "pyftpdlib %s based ftpd ready." %ftpserver.__ver__ + + # Specify a masquerade address and the range of ports to use for + # passive connections. Decomment in case you're behind a NAT. + #ftp_handler.masquerade_address = '151.25.42.11' + #ftp_handler.passive_ports = range(60000, 65535) + + # Instantiate FTP server class and listen to 0.0.0.0:21 + address = ('', 21) + ftpd = ftpserver.FTPServer(address, ftp_handler) + + # set a limit for connections + ftpd.max_cons = 256 + ftpd.max_cons_per_ip = 5 + + # start ftp server + ftpd.serve_forever() |