Skip to content

Commit

Permalink
Update doc (#649)
Browse files Browse the repository at this point in the history
  • Loading branch information
giampaolo authored Sep 16, 2024
1 parent 328efa0 commit d90cc93
Show file tree
Hide file tree
Showing 36 changed files with 812 additions and 1,216 deletions.
2 changes: 1 addition & 1 deletion CREDITS
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ D: Original pyftpdlib author and maintainer
N: Jay Loden
C: NJ, USA
E: [email protected]
W: http://www.jayloden.com
W: http://jayloden.com/About.htm
D: OS X and Linux platform development/testing

N: Silas Sewell
Expand Down
10 changes: 5 additions & 5 deletions HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Version: 2.0.0 - 2024-09-04
* #629: Python 2.7 is no longer supported.
* #629: pysendfile module is no longer a required dependency, because we ceased
support for Python 2.
* #639: (FTPS)SSLv2 and SSLv3 connections are no longer accepted when client
* #639: (FTPS) SSLv2 and SSLv3 connections are no longer accepted when client
connects.

Version: 1.5.10 - 2024-06-23
Expand Down Expand Up @@ -126,7 +126,7 @@ Version: 1.5.3 - 2017-11-04
- #201: implemented SITE MFMT command which changes file modification time.
(patch by Tahir Ijaz)
- #327: add username and password command line options
- #433: documentation moved to readthedocs: http://pyftpdlib.readthedocs.io
- #433: documentation moved to readthedocs: https://pyftpdlib.readthedocs.io

**Bug fixes**

Expand Down Expand Up @@ -258,7 +258,7 @@ Version: 1.3.0 - Date: 2013-11-07
Juan J. Martinez)
- #265: FTPServer class cannot be used with Circus.
- #272: pyftpdlib fails when imported on OpenBSD because of Python bug
http://bugs.python.org/issue3770
https://bugs.python.org/issue3770
- #273: IOLoop.fileno() on BSD systems raises AttributeError. (patch by
Michael Ross)

Expand Down Expand Up @@ -450,7 +450,7 @@ namespaces has been moved here:
(see issue 213)
- ftpserver.py's log(), logline() and logerror() functions are deprecated.
logging module is now used instead. See:
http://code.google.com/p/billiejoex/wiki/Tutorial#4.2_-_Logging_management
https://pyftpdlib.readthedocs.io/en/latest/tutorial.html#logging-management
- Unicode is now used instead of bytes pretty much everywhere.
- FTPHandler.__init__() and TLS_FTPHandler.__init__() signatures have changed:
from __init__(conn, server)
Expand Down Expand Up @@ -729,7 +729,7 @@ Version: 0.5.1 - Date: 2009-01-21
- #98: added preliminary support for SITE command.
- #99: a new script implementing FTPS (FTP over TLS/SSL) has been added to the
demo directory. See:
http://code.google.com/p/pyftpdlib/source/browse/trunk/demo/tls_ftpd.py
https://code.google.com/p/pyftpdlib/source/browse/trunk/demo/tls_ftpd.py

**Bug fixes**

Expand Down
4 changes: 3 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ include demo/throttled_ftpd.py
include demo/tls_ftpd.py
include demo/unix_daemon.py
include demo/unix_ftpd.py
include demo/winnt_ftpd.py
include demo/win_ftpd.py
include docs/.readthedocs.yaml
include docs/Makefile
include docs/README
Expand All @@ -25,6 +25,8 @@ include docs/benchmarks.rst
include docs/conf.py
include docs/faqs.rst
include docs/images/freebsd.gif
include docs/images/google-pages.gif
include docs/images/peerscape.gif
include docs/index.rst
include docs/install.rst
include docs/make.bat
Expand Down
70 changes: 41 additions & 29 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -48,54 +48,50 @@
Quick links
===========

- `Home <https://github.com/giampaolo/pyftpdlib>`__
- `Documentation <http://pyftpdlib.readthedocs.io>`__
- `Download <https://pypi.python.org/pypi/pyftpdlib/>`__
- `Blog <http://grodola.blogspot.com/search/label/pyftpdlib>`__
- `Mailing list <http://groups.google.com/group/pyftpdlib/topics>`__
- `What's new <https://github.com/giampaolo/pyftpdlib/blob/master/HISTORY.rst>`__
- `Home`_
- `Documentation`_
- `Download`_
- `Mailing list`_
- `What's new`_

About
=====

Python FTP server library provides a high-level portable interface to easily
write very efficient, scalable and asynchronous FTP servers with Python. It is
the most complete `RFC-959 <http://www.faqs.org/rfcs/rfc959.html>`__ FTP server
implementation available for `Python <http://www.python.org/>`__ programming
language.
the most complete `RFC-959`_ FTP server implementation available for `Python`_
programming language.

Features
========

- Extremely **lightweight**, **fast** and **scalable** (see
`why <https://github.com/giampaolo/pyftpdlib/issues/203>`__ and
`benchmarks <http://pyftpdlib.readthedocs.io/en/latest/benchmarks.html>`__).
`benchmarks`__).
- Uses **sendfile(2)** (see `pysendfile <https://github.com/giampaolo/pysendfile>`__)
system call for uploads.
- Uses epoll() / kqueue() / select() to handle concurrency asynchronously.
- ...But can optionally skip to a
`multiple thread / process <http://pyftpdlib.readthedocs.io/en/latest/tutorial.html#changing-the-concurrency-model>`__
model (as in: you'll be free to block or use slow filesystems).
system call for uploads (Linux only).
- Uses ``epoll()`` / ``kqueue()`` / ``select()`` to handle concurrency
asynchronously.
- ...But can optionally skip to a `multiple thread / process`_ model (as in:
you'll be free to block or use slow filesystems).
- Portable: entirely written in pure Python.
- Supports **FTPS** (`RFC-4217 <http://tools.ietf.org/html/rfc4217>`__),
**IPv6** (`RFC-2428 <ftp://ftp.rfc-editor.org/in-notes/rfc2428.txt>`__),
**Unicode** file names (`RFC-2640 <http://tools.ietf.org/html/rfc2640>`__),
**MLSD/MLST** commands (`RFC-3659 <ftp://ftp.rfc-editor.org/in-notes/rfc3659.txt>`__).
- Supports **FTPS** (`RFC-4217`_), **IPv6** (`RFC-2428`_), **Unicode** file
names (`RFC-2640`_), **MLSD/MLST** commands (`RFC-3659`_).
- Support for virtual users and virtual filesystem.
- Flexible system of "authorizers" able to manage both "virtual" and
"real" users on on both
`UNIX <http://pyftpdlib.readthedocs.io/en/latest/tutorial.html#unix-ftp-server>`__
`UNIX <https://pyftpdlib.readthedocs.io/en/latest/tutorial.html#unix-ftp-server>`__
and
`Windows <http://pyftpdlib.readthedocs.io/en/latest/tutorial.html#windows-ftp-server>`__.
`Windows <https://pyftpdlib.readthedocs.io/en/latest/tutorial.html#windows-ftp-server>`__.

Performances
============

Despite being written in an interpreted language, pyftpdlib has transfer rates
comparable or superior to common UNIX FTP servers written in C. It usually tends
to scale better (see `benchmarks <https://pyftpdlib.readthedocs.io/en/latest/benchmarks.html>`__)
because whereas vsftpd and proftpd use multiple processes to
achieve concurrency, pyftpdlib only uses one (see `the C10K problem <http://www.kegel.com/c10k.html>`__).
comparable or superior to common UNIX FTP servers written in C. It usually
tends to scale better (see `benchmarks`_) because whereas vsftpd and proftpd
use multiple processes to achieve concurrency, pyftpdlib only uses one (see
`the C10K problem`_).

pyftpdlib vs. proftpd 1.3.4
---------------------------
Expand Down Expand Up @@ -143,14 +139,14 @@ pyftpdlib vs. vsftpd 2.3.5
| 300 concurrent clients (QUIT) | 0.03 secs | 0.01 secs | +0.14x |
+-----------------------------------------+----------------+----------------+-------------+

For more benchmarks see `here <http://pyftpdlib.readthedocs.io/en/latest/benchmarks.html>`__.
For more benchmarks see `here <https://pyftpdlib.readthedocs.io/en/latest/benchmarks.html>`__.

Command line usage
==================

Start a FTP server, with an anonymous user with write permissions, on port 2121:

.. code-block::
.. code-block:: sh
$ python3 -m pyftpdlib --write
RuntimeWarning: write permissions assigned to anonymous user.
Expand Down Expand Up @@ -188,11 +184,27 @@ API usage
[I 13-02-19 10:56:27] 127.0.0.1:34179-[user] RETR /home/giampaolo/.vimrc completed=1 bytes=1700 seconds=0.001
[I 13-02-19 10:56:39] 127.0.0.1:34179-[user] FTP session closed (disconnect).
`other code samples <http://pyftpdlib.readthedocs.io/en/latest/tutorial.html>`__
For other code samples read the `tutorial <https://pyftpdlib.readthedocs.io/en/latest/tutorial.html>`__

Donate
======

A lot of time and effort went into making pyftpdlib as it is right now.
If you feel pyftpdlib is useful to you or your business and want to support its
future development please consider `donating <https://gmpy.dev/donate>`__ me some money.
future development please consider `donating`_ me some money.

.. _`benchmarks`: https://pyftpdlib.readthedocs.io/en/latest/benchmarks.html
.. _`Documentation`: https://pyftpdlib.readthedocs.io
.. _`donating`: https://gmpy.dev/donate
.. _`Download`: https://pypi.org/project/pyftpdlib/
.. _`Home`: https://github.com/giampaolo/pyftpdlib
.. _`Mailing list`: https://groups.google.com/group/pyftpdlib/topics
.. _`multiple thread / process`: https://pyftpdlib.readthedocs.io/en/latest/tutorial.html#changing-the-concurrency-model
.. _`Python`: https://www.python.org/
.. _`RFC-2428`: https://datatracker.ietf.org/doc/html/rfc2428
.. _`RFC-2640`: https://datatracker.ietf.org/doc/html/rfc2640
.. _`RFC-3659`: https://datatracker.ietf.org/doc/html/rfc3659
.. _`RFC-4217`: https://datatracker.ietf.org/doc/html/rfc4217
.. _`RFC-959`: https://datatracker.ietf.org/doc/html/rfc959.html
.. _`the C10K problem`: http://www.kegel.com/c10k.html
.. _`What's new`: https://github.com/giampaolo/pyftpdlib/blob/master/HISTORY.rst
2 changes: 1 addition & 1 deletion demo/tls_ftpd.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

"""
An RFC-4217 asynchronous FTPS server supporting both SSL and TLS.
Requires PyOpenSSL module (http://pypi.python.org/pypi/pyOpenSSL).
Requires PyOpenSSL module (https://pypi.org/project/pyOpenSSL).
"""

import os
Expand Down
2 changes: 1 addition & 1 deletion demo/unix_daemon.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# found in the LICENSE file.

"""A basic unix daemon using the python-daemon library:
http://pypi.python.org/pypi/python-daemon.
https://pypi.org/project/python-daemon.
Example usages:
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion docs/README
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ About

This directory contains the reStructuredText (reST) sources to the pyftpdlib
documentation. You don't need to build them yourself, prebuilt versions are
available at http://pyftpdlib.readthedocs.io.
available at https://pyftpdlib.readthedocs.io.
In case you want, you need to install sphinx first:

$ pip install sphinx
Expand Down
Loading

0 comments on commit d90cc93

Please sign in to comment.