I may be too ambitious and what I am trying to accomplish May not even be possible using twisted, but I would like to develop an application using Twisted that does all of the following.
- Run an SFTP server
- Run an FTPS server
- Run an HTTPS server (web UI for transferring files)
All of these protocols will share a single database for user authentication.
I would also like to create a scheduler that can trigger files transfers on some time interval.
This framework seems limitless when reading through the docs on the site, but it's hard for me to dive in and figure out if Twisted is capable of doing all of the above without knowing it inside and out.
I am still going through the examples on their site and it seems like there is a steep learning curve to really grasping how to do these things.
I would appreciate any feedback or pointers on how to accomplish this, if it's possible.
Yes, it absolutely can.
From a Twisted perspective, there is a support for pretty much everything you ask for - SFTP, FTPS, HTTPS and scheduling.
When it comes to database integration, I would use standard Python db libraries. I don't think you need anything special from Twisted for that.
Scheduled tasks could be accomplished through either Python scheduler libraries or using Twisted's reactor framework.
Regarding the SFTP, FTPS and HTTPS:
SFTP server can be implemented using Twisted Conch. Documentation is little bit skimpy, but yes you can do it. Take a look at this source code and look for the implementation of class SFTPServerForUnixConchUser.
FTPS is, to the best of my knowledge, a matter of using a third party package.
HTTPS is a mainstream. Here is an officially documented setup.
(I suspect that my answer will become obsolete in a year when all these features get incorporated into a main release.)