summaryrefslogtreecommitdiffstats
path: root/third_party/pyftpdlib/doc/index.html
blob: 210a20e36afd432bd66ade8535389ee4831a58be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>pyftpdlib Home Page</title>
</head>

<body>
<div id="wikicontent">
  <div id="wikicontent2">
    <div id="wikicontent3">
      <h1><a id="Python_FTP_server_library_(pyftpdlib)">Python FTP server library (pyftpdlib)</a></h1>
      <h2><a id="About">About</a></h2>
      <p><a id="About">Python  FTP server library provides a high-level portable interface to easily  write asynchronous FTP servers with Python. Based on <strong>asyncore</strong> framework pyftpdlib is currently the most complete </a><a href="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">Python</a> programming language. </p>
      <h2><a id="Features">Features</a></h2>
      <ul>
        <li><a id="Features">High portability: </a></li>
        <ul>
          <li><a id="Features">Entirely written in pure Python, no third party modules are used. It just should work on any system where <em>select( )</em> or <em>poll( )</em> are available. </a></li>
          <li><a id="Features">Extremely flexible system of &quot;authorizers&quot; able to manage both &quot;virtual&quot; and &quot;real&quot; users on different platforms (<strong>Windows NT</strong>, <strong>UNIX</strong>, <strong>OSx</strong>). </a></li>
        </ul>
        <li><a id="Features">High performance: multiplexing I/O with various client connections within a single process / thread. </a></li>
        <li><a id="Features">Compact: the entire library is distributed in a single file <em>(ftpserver.py).</em> </a></li>
        <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/rfcs/rfc959.html" rel="nofollow">RFC-3659</a>. </li>
        <li>Support for <strong><a href="http://www.proftpd.org/docs/howto/FXP.html" rel="nofollow">FXP</a></strong>, site-to-site transfers. </li>
        <li>Support for <strong>IPv6</strong> (<a href="ftp://ftp.rfc-editor.org/in-notes/rfc2428.txt" rel="nofollow">RFC-2428</a>). </li>
        <li>NAT/Firewall support with PASV (passive) mode connections. </li>
        <li>Support for resumed transfers. </li>
        <li>Per-user permissions configurability. </li>
        <li>Maximum connections limit. </li>
        <li>Per-source-IP limits. </li>
        <li> Configurable idle timeouts for both control and data channels.</li>
      </ul>
      <h2><a id="Quick_start">Quick start</a></h2>
      <pre><a id="Quick_start">  &gt;&gt;&gt; from pyftpdlib import ftpserver
  &gt;&gt;&gt; authorizer = ftpserver.DummyAuthorizer()
  &gt;&gt;&gt; authorizer.add_user(&quot;user&quot;, &quot;12345&quot;, &quot;/home/user&quot;, perm=&quot;elradfmw&quot;)
  &gt;&gt;&gt; authorizer.add_anonymous(&quot;/home/nobody&quot;)
  &gt;&gt;&gt; ftp_handler = ftpserver.FTPHandler
  &gt;&gt;&gt; ftp_handler.authorizer = authorizer
  &gt;&gt;&gt; address = (&quot;127.0.0.1&quot;, 21)
  &gt;&gt;&gt; ftpd = ftpserver.FTPServer(address, ftp_handler)
  &gt;&gt;&gt; ftpd.serve_forever()
  Serving FTP on 127.0.0.1:21
  []127.0.0.1:2503 connected.
  127.0.0.1:2503 ==&gt; 220 Ready.
  127.0.0.1:2503 &lt;== USER anonymous
  127.0.0.1:2503 ==&gt; 331 Username ok, send password.
  127.0.0.1:2503 &lt;== PASS ******
  127.0.0.1:2503 ==&gt; 230 Login successful.
  [anonymous]@127.0.0.1:2503 User anonymous logged in.
  127.0.0.1:2503 &lt;== TYPE A
  127.0.0.1:2503 ==&gt; 200 Type set to: ASCII.
  127.0.0.1:2503 &lt;== PASV  127.0.0.1:2503 ==&gt;
  227 Entering passive mode (127,0,0,1,9,201).
  127.0.0.1:2503 &lt;== LIST
  127.0.0.1:2503 ==&gt; 150 File status okay. About to open data connection.
  [anonymous]@127.0.0.1:2503 OK LIST &quot;/&quot;. Transfer starting.
  127.0.0.1:2503 ==&gt; 226 Transfer complete.
  [anonymous]@127.0.0.1:2503 Transfer complete. 706 bytes transmitted.
  127.0.0.1:2503 &lt;== QUIT
  127.0.0.1:2503 ==&gt; 221 Goodbye.  [anonymous]@127.0.0.1:2503 Disconnected.</a></pre>
      <h2><a id="Documentation_and_related_links">Documentation and related links</a></h2>
      <p><a id="Documentation_and_related_links">Primary documentation and related links include the following: </a></p>
      <table border="1">
        <tbody>
          <tr>
            <td><strong>Type</strong> </td>
            <td><strong>Description</strong> </td>
          </tr>
          <tr>
            <td><a href="http://code.google.com/p/pyftpdlib/wiki/Tutorial" rel="nofollow">Tutorial</a> </td>
            <td> Tutorial containing API reference and example usages. </td>
          </tr>
          <tr>
            <td><a href="http://code.google.com/p/pyftpdlib/wiki/FAQ" rel="nofollow">FAQ</a> </td>
            <td> Frequently Asked Questions about pyftpdlib. </td>
          </tr>
          <tr>
            <td><a href="http://code.google.com/p/pyftpdlib/wiki/Install" rel="nofollow">Install</a> </td>
            <td> Instructions for installing pyftpdlib (for those really new to Python). </td>
          </tr>
          <tr>
            <td><a href="http://code.google.com/p/pyftpdlib/wiki/RFCsCompliance" rel="nofollow">RFCs Compliance</a> </td>
            <td> A paper showing pyftpdlib compliance against FTP protocol standard RFCs. </td>
          </tr>
          <tr>
            <td><a href="http://code.google.com/p/pyftpdlib/wiki/ReleaseNotes05" rel="nofollow">Release Notes</a> </td>
            <td> Release notes of the current pyftpdlib release. </td>
          </tr>
          <tr>
            <td><a href="http://code.google.com/p/pyftpdlib/wiki/Roadmap" rel="nofollow">Roadmap</a> </td>
            <td> A &quot;roadmap&quot; describing current and future project's changes. </td>
          </tr>
          <tr>
            <td><a href="http://code.google.com/p/pyftpdlib/wiki/Adoptions" rel="nofollow">Adoptions List</a> </td>
            <td> A list of softwares and systems using pyftpdlib. </td>
          </tr>
          <tr>
            <td><a href="http://www.freshports.org/ftp/py-pyftpdlib/" rel="nofollow">FreeBSD port</a> </td>
            <td> Porting of pyftpdlib on FreeBSD system (note: it is a separate project maintained by a different team). </td>
          </tr>
        </tbody>
      </table>
      <h2><a id="Timeline">Timeline</a></h2>
      <ul>
        <li><a name="Timeline" id="Timeline2">09-20-2008: version 0.5.0 released. </a></li>
        <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>
        <li><a>05-16-2008: version 0.4.0 released. </a></li>
        <li><a id="Timeline">04-09-2008: pyftpdlib used as backend for </a><a href="http://arkadiusz-wahlig.blogspot.com/2008/04/hosting-files-on-google.html" rel="nofollow">gpftpd</a>, an FTP server for managing files hosted on <a href="http://pages.google.com" rel="nofollow">Google Pages</a>. </li>
        <li>01-17-2008: version 0.3.0 released. </li>
        <li>10-14-2007: pyftpdlib included in <a href="http://walco.n--tree.net/projects/aksy/wiki" rel="nofollow">Aksy</a>. </li>
        <li>09-17-2007: version 0.2.0 released. </li>
        <li>09-08-2007: pyftpdlib included as <a href="http://farmanager.com/" rel="nofollow">FarManager</a> <a href="http://enforum.farmanager.com/viewtopic.php?t=640" rel="nofollow">plug-in</a>. </li>
        <li>03-06-2007: pyftpdlib <a href="http://www.freshports.org/ftp/py-pyftpdlib/" rel="nofollow">ported on FreeBSD</a> systems to make users can easily install on it. </li>
        <li>03-07-2007: version 0.1.1 released. </li>
        <li>02-26-2007: version 0.1.0 released. </li>
      </ul>
      <h2><a id="Contribute">Contribute</a></h2>
      <p><a id="Contribute">If you want to help or just give us suggestions about the project and other related things,  subscribe to the </a><a href="http://groups.google.com/group/pyftpdlib" rel="nofollow">discussion mailing list</a>.  If you want to talk with project team members about pyftpdlib and other  related things, feel free to contact us at the following addresses: </p>
      <table border="1">
        <tbody>
          <tr>
            <td><strong>Name</strong> </td>
            <td><strong>Country</strong> </td>
            <td><strong>E-mail</strong> </td>
            <td><strong>Description</strong> </td>
          </tr>
          <tr>
            <td> Giampaolo Rodola' </td>
            <td> Italy </td>
            <td> g.rodola at gmail dot com </td>
            <td> Original pyftpdlib author and main maintainer. </td>
          </tr>
          <tr>
            <td> Jay Loden </td>
            <td> New Jersey (USA) </td>
            <td> jloden at gmail dot com </td>
            <td> OS X and Linux platform development/testing. </td>
          </tr>
          <tr>
            <td> Li-Wen Hsu </td>
            <td> Taiwan </td>
            <td> lwhsu at freebsd dot org </td>
            <td><a href="http://www.freshports.org/ftp/py-pyftpdlib/" rel="nofollow">FreeBSD port</a> maintainer. </td>
          </tr>
        </tbody>
      </table>
      <p>Feedbacks and suggestions are greatly appreciated as well as new testers and coders willing to join the development. </p>
      <p>For any bug report, patch proposal or feature request, add an entry into the <a href="http://code.google.com/p/pyftpdlib/issues/list" rel="nofollow">Issue Tracker</a>. </p>
      <p>In case you're using pyftpdlib into a software or website of yours, please update the pyftpdlib <a href="http://code.google.com/p/pyftpdlib/wiki/Adoptions" rel="nofollow">Adoptions List</a> by adding a comment in the Wiki. </p>
      <p>Thank you. </p>
    </div>
    <p>&nbsp;</p>
  </div>
</div>
</body>
</html>