Index: third_party/pyftpdlib/demo/basic_ftpd.py |
=================================================================== |
--- third_party/pyftpdlib/demo/basic_ftpd.py (revision 0) |
+++ third_party/pyftpdlib/demo/basic_ftpd.py (revision 0) |
@@ -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() |