Metadata-Version: 2.4
Name: django-ftpserver
Version: 1.0.0
Summary: FTP server application for Django.
Author-email: Shinya Okano <tokibito@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/tokibito/django-ftpserver
Classifier: Development Status :: 5 - Production/Stable
Classifier: Framework :: Django
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: Django>=4.2
Requires-Dist: pyftpdlib
Provides-Extra: tls
Requires-Dist: pyOpenSSL; extra == "tls"
Provides-Extra: windows
Requires-Dist: pywin32; extra == "windows"
Provides-Extra: develop
Requires-Dist: pytest; extra == "develop"
Requires-Dist: ruff; extra == "develop"
Requires-Dist: pytest-django; extra == "develop"
Requires-Dist: tox; extra == "develop"
Dynamic: license-file

=================
Django FTP server
=================

|build-status| |pypi| |python-version| |docs|

FTP server application that uses Django's user authentication.

Features
========

* FTP server integrated with Django's user authentication system
* Permission management through FTP user groups (read, write, delete, etc.)
* Per-user and per-group home directory configuration
* FTP account management via Django Admin
* Secure communication with TLS/SSL support (FTPS)
* Daemon mode for background service operation
* Integration with Django Storage backends (S3, Google Cloud Storage, etc.) [#experimental]_
* Passive mode and masquerade address configuration
* Cross-platform support (Windows/Unix)
* Management commands for FTP user/group operations (create, list, delete)
* Django signals for FTP events (login, logout, file transfers, etc.)

.. [#experimental] Experimental feature. May be removed in future versions.

Getting Started
===============

1.  Install django-ftpserver using pip.

::

   $ pip install django-ftpserver

Optional dependencies can be installed with extras:

::

   # For TLS/SSL support (FTPS)
   $ pip install django-ftpserver[tls]

   # For Windows service support
   $ pip install django-ftpserver[windows]

   # Multiple extras
   $ pip install django-ftpserver[tls,windows]

2. Add a line to settings.INSTALLED_APPS in your Django project.

::

   INSTALLED_APPS = (
       # ..
       'django_ftpserver',
   )

3. Run migrations.

::

   $ python manage.py migrate

4. Create FTP user group.

::

   $ python manage.py createftpusergroup my-ftp-group

5. Create FTP user account.

::

   $ python manage.py createftpuseraccount <username> my-ftp-group

``<username>`` is the django authentication username.

6. Run ``manage.py ftpserver`` command.

::

   $ python manage.py ftpserver 127.0.0.1:10021

7. Connect with your favorite FTP client.

Requirements
============

* Target Python version is 3.10, 3.11, 3.12, 3.13, 3.14
* Django>=4.2
* pyftpdlib

Optional Dependencies
---------------------

* pyOpenSSL - Required for TLS/SSL support (``pip install django-ftpserver[tls]``)
* pywin32 - Required for Windows service support (``pip install django-ftpserver[windows]``)

License
=======

This software is licensed under the MIT License.

Documentation
=============

The latest documentation is hosted at Read The Docs.

https://django-ftpserver.readthedocs.org/en/latest/

Develop
=======

This project is hosted at Github: https://github.com/tokibito/django-ftpserver

Author
======

* Shinya Okano

.. |build-status| image:: https://github.com/tokibito/django-ftpserver/workflows/Tests/badge.svg
   :target: https://github.com/tokibito/django-ftpserver/actions/workflows/tests.yml
.. |docs| image:: https://readthedocs.org/projects/django-ftpserver/badge/?version=latest
   :target: https://readthedocs.org/projects/django-ftpserver/
.. |pypi| image:: https://badge.fury.io/py/django-ftpserver.svg
   :target: http://badge.fury.io/py/django-ftpserver
.. |python-version| image:: https://img.shields.io/pypi/pyversions/django-ftpserver.svg
   :target: https://pypi.python.org/pypi/django-ftpserver
