OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or
g/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| 2 <html xmlns="http://www.w3.org/1999/xhtml"> |
| 3 <head> |
| 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| 5 <title>pyftpdlib Home Page</title> |
| 6 </head> |
| 7 |
| 8 <body> |
| 9 <div id="wikicontent"> |
| 10 <div id="wikicontent2"> |
| 11 <div id="wikicontent3"> |
| 12 <h1><a id="Python_FTP_server_library_(pyftpdlib)">Python FTP server librar
y (pyftpdlib)</a></h1> |
| 13 <h2><a id="About">About</a></h2> |
| 14 <p><a id="About">Python FTP server library provides a high-level portable
interface to easily write asynchronous FTP servers with Python. Based on <stro
ng>asyncore</strong> framework pyftpdlib is currently the most complete </a><a h
ref="http://www.faqs.org/rfcs/rfc959.html" rel="nofollow">RFC-959</a> FTP server
implementation available for <a href="http://www.python.org/" rel="nofollow">Py
thon</a> programming language. </p> |
| 15 <h2><a id="Features">Features</a></h2> |
| 16 <ul> |
| 17 <li><a id="Features">High portability: </a></li> |
| 18 <ul> |
| 19 <li><a id="Features">Entirely written in pure Python, no third party m
odules are used. It just should work on any system where <em>select( )</em> or <
em>poll( )</em> are available. </a></li> |
| 20 <li><a id="Features">Extremely flexible system of "authorizers&qu
ot; able to manage both "virtual" and "real" users on differ
ent platforms (<strong>Windows NT</strong>, <strong>UNIX</strong>, <strong>OSx</
strong>). </a></li> |
| 21 </ul> |
| 22 <li><a id="Features">High performance: multiplexing I/O with various cli
ent connections within a single process / thread. </a></li> |
| 23 <li><a id="Features">Compact: the entire library is distributed in a sin
gle file <em>(ftpserver.py).</em> </a></li> |
| 24 <li><a id="Features">Support for recent FTP commands like <strong>MLSD</
strong> and <strong>MLST</strong> defined in </a><a href="http://www.faqs.org/rf
cs/rfc959.html" rel="nofollow">RFC-3659</a>. </li> |
| 25 <li>Support for <strong><a href="http://www.proftpd.org/docs/howto/FXP.h
tml" rel="nofollow">FXP</a></strong>, site-to-site transfers. </li> |
| 26 <li>Support for <strong>IPv6</strong> (<a href="ftp://ftp.rfc-editor.org
/in-notes/rfc2428.txt" rel="nofollow">RFC-2428</a>). </li> |
| 27 <li>NAT/Firewall support with PASV (passive) mode connections. </li> |
| 28 <li>Support for resumed transfers. </li> |
| 29 <li>Per-user permissions configurability. </li> |
| 30 <li>Maximum connections limit. </li> |
| 31 <li>Per-source-IP limits. </li> |
| 32 <li> Configurable idle timeouts for both control and data channels.</li> |
| 33 </ul> |
| 34 <h2><a id="Quick_start">Quick start</a></h2> |
| 35 <pre><a id="Quick_start"> >>> from pyftpdlib import ftpserver |
| 36 >>> authorizer = ftpserver.DummyAuthorizer() |
| 37 >>> authorizer.add_user("user", "12345", "/h
ome/user", perm="elradfmw") |
| 38 >>> authorizer.add_anonymous("/home/nobody") |
| 39 >>> ftp_handler = ftpserver.FTPHandler |
| 40 >>> ftp_handler.authorizer = authorizer |
| 41 >>> address = ("127.0.0.1", 21) |
| 42 >>> ftpd = ftpserver.FTPServer(address, ftp_handler) |
| 43 >>> ftpd.serve_forever() |
| 44 Serving FTP on 127.0.0.1:21 |
| 45 []127.0.0.1:2503 connected. |
| 46 127.0.0.1:2503 ==> 220 Ready. |
| 47 127.0.0.1:2503 <== USER anonymous |
| 48 127.0.0.1:2503 ==> 331 Username ok, send password. |
| 49 127.0.0.1:2503 <== PASS ****** |
| 50 127.0.0.1:2503 ==> 230 Login successful. |
| 51 [anonymous]@127.0.0.1:2503 User anonymous logged in. |
| 52 127.0.0.1:2503 <== TYPE A |
| 53 127.0.0.1:2503 ==> 200 Type set to: ASCII. |
| 54 127.0.0.1:2503 <== PASV 127.0.0.1:2503 ==> |
| 55 227 Entering passive mode (127,0,0,1,9,201). |
| 56 127.0.0.1:2503 <== LIST |
| 57 127.0.0.1:2503 ==> 150 File status okay. About to open data connection. |
| 58 [anonymous]@127.0.0.1:2503 OK LIST "/". Transfer starting. |
| 59 127.0.0.1:2503 ==> 226 Transfer complete. |
| 60 [anonymous]@127.0.0.1:2503 Transfer complete. 706 bytes transmitted. |
| 61 127.0.0.1:2503 <== QUIT |
| 62 127.0.0.1:2503 ==> 221 Goodbye. [anonymous]@127.0.0.1:2503 Disconnected.</
a></pre> |
| 63 <h2><a id="Documentation_and_related_links">Documentation and related link
s</a></h2> |
| 64 <p><a id="Documentation_and_related_links">Primary documentation and relat
ed links include the following: </a></p> |
| 65 <table border="1"> |
| 66 <tbody> |
| 67 <tr> |
| 68 <td><strong>Type</strong> </td> |
| 69 <td><strong>Description</strong> </td> |
| 70 </tr> |
| 71 <tr> |
| 72 <td><a href="http://code.google.com/p/pyftpdlib/wiki/Tutorial" rel="
nofollow">Tutorial</a> </td> |
| 73 <td> Tutorial containing API reference and example usages. </td> |
| 74 </tr> |
| 75 <tr> |
| 76 <td><a href="http://code.google.com/p/pyftpdlib/wiki/FAQ" rel="nofol
low">FAQ</a> </td> |
| 77 <td> Frequently Asked Questions about pyftpdlib. </td> |
| 78 </tr> |
| 79 <tr> |
| 80 <td><a href="http://code.google.com/p/pyftpdlib/wiki/Install" rel="n
ofollow">Install</a> </td> |
| 81 <td> Instructions for installing pyftpdlib (for those really new to
Python). </td> |
| 82 </tr> |
| 83 <tr> |
| 84 <td><a href="http://code.google.com/p/pyftpdlib/wiki/RFCsCompliance"
rel="nofollow">RFCs Compliance</a> </td> |
| 85 <td> A paper showing pyftpdlib compliance against FTP protocol stand
ard RFCs. </td> |
| 86 </tr> |
| 87 <tr> |
| 88 <td><a href="http://code.google.com/p/pyftpdlib/wiki/ReleaseNotes05"
rel="nofollow">Release Notes</a> </td> |
| 89 <td> Release notes of the current pyftpdlib release. </td> |
| 90 </tr> |
| 91 <tr> |
| 92 <td><a href="http://code.google.com/p/pyftpdlib/wiki/Roadmap" rel="n
ofollow">Roadmap</a> </td> |
| 93 <td> A "roadmap" describing current and future project's c
hanges. </td> |
| 94 </tr> |
| 95 <tr> |
| 96 <td><a href="http://code.google.com/p/pyftpdlib/wiki/Adoptions" rel=
"nofollow">Adoptions List</a> </td> |
| 97 <td> A list of softwares and systems using pyftpdlib. </td> |
| 98 </tr> |
| 99 <tr> |
| 100 <td><a href="http://www.freshports.org/ftp/py-pyftpdlib/" rel="nofol
low">FreeBSD port</a> </td> |
| 101 <td> Porting of pyftpdlib on FreeBSD system (note: it is a separate
project maintained by a different team). </td> |
| 102 </tr> |
| 103 </tbody> |
| 104 </table> |
| 105 <h2><a id="Timeline">Timeline</a></h2> |
| 106 <ul> |
| 107 <li><a name="Timeline" id="Timeline2">09-20-2008: version 0.5.0 released
. </a></li> |
| 108 <li><a name="Timeline" id="Timeline2">08-10-2008: pyftpdlib included in
</a><a href="http://trac.manent-backup.com/" rel="nofollow">Manent</a></li> |
| 109 <li><a>05-16-2008: version 0.4.0 released. </a></li> |
| 110 <li><a id="Timeline">04-09-2008: pyftpdlib used as backend for </a><a hr
ef="http://arkadiusz-wahlig.blogspot.com/2008/04/hosting-files-on-google.html" r
el="nofollow">gpftpd</a>, an FTP server for managing files hosted on <a href="ht
tp://pages.google.com" rel="nofollow">Google Pages</a>. </li> |
| 111 <li>01-17-2008: version 0.3.0 released. </li> |
| 112 <li>10-14-2007: pyftpdlib included in <a href="http://walco.n--tree.net/
projects/aksy/wiki" rel="nofollow">Aksy</a>. </li> |
| 113 <li>09-17-2007: version 0.2.0 released. </li> |
| 114 <li>09-08-2007: pyftpdlib included as <a href="http://farmanager.com/" r
el="nofollow">FarManager</a> <a href="http://enforum.farmanager.com/viewtopic.ph
p?t=640" rel="nofollow">plug-in</a>. </li> |
| 115 <li>03-06-2007: pyftpdlib <a href="http://www.freshports.org/ftp/py-pyft
pdlib/" rel="nofollow">ported on FreeBSD</a> systems to make users can easily in
stall on it. </li> |
| 116 <li>03-07-2007: version 0.1.1 released. </li> |
| 117 <li>02-26-2007: version 0.1.0 released. </li> |
| 118 </ul> |
| 119 <h2><a id="Contribute">Contribute</a></h2> |
| 120 <p><a id="Contribute">If you want to help or just give us suggestions abou
t the project and other related things, subscribe to the </a><a href="http://gr
oups.google.com/group/pyftpdlib" rel="nofollow">discussion mailing list</a>. If
you want to talk with project team members about pyftpdlib and other related t
hings, feel free to contact us at the following addresses: </p> |
| 121 <table border="1"> |
| 122 <tbody> |
| 123 <tr> |
| 124 <td><strong>Name</strong> </td> |
| 125 <td><strong>Country</strong> </td> |
| 126 <td><strong>E-mail</strong> </td> |
| 127 <td><strong>Description</strong> </td> |
| 128 </tr> |
| 129 <tr> |
| 130 <td> Giampaolo Rodola' </td> |
| 131 <td> Italy </td> |
| 132 <td> g.rodola at gmail dot com </td> |
| 133 <td> Original pyftpdlib author and main maintainer. </td> |
| 134 </tr> |
| 135 <tr> |
| 136 <td> Jay Loden </td> |
| 137 <td> New Jersey (USA) </td> |
| 138 <td> jloden at gmail dot com </td> |
| 139 <td> OS X and Linux platform development/testing. </td> |
| 140 </tr> |
| 141 <tr> |
| 142 <td> Li-Wen Hsu </td> |
| 143 <td> Taiwan </td> |
| 144 <td> lwhsu at freebsd dot org </td> |
| 145 <td><a href="http://www.freshports.org/ftp/py-pyftpdlib/" rel="nofol
low">FreeBSD port</a> maintainer. </td> |
| 146 </tr> |
| 147 </tbody> |
| 148 </table> |
| 149 <p>Feedbacks and suggestions are greatly appreciated as well as new tester
s and coders willing to join the development. </p> |
| 150 <p>For any bug report, patch proposal or feature request, add an entry int
o the <a href="http://code.google.com/p/pyftpdlib/issues/list" rel="nofollow">Is
sue Tracker</a>. </p> |
| 151 <p>In case you're using pyftpdlib into a software or website of yours, ple
ase update the pyftpdlib <a href="http://code.google.com/p/pyftpdlib/wiki/Adopti
ons" rel="nofollow">Adoptions List</a> by adding a comment in the Wiki. </p> |
| 152 <p>Thank you. </p> |
| 153 </div> |
| 154 <p> </p> |
| 155 </div> |
| 156 </div> |
| 157 </body> |
| 158 </html> |
OLD | NEW |