Merge lp:~jderose/dmedia/peering into lp:dmedia
Status: | Merged |
---|---|
Merged at revision: | 459 |
Proposed branch: | lp:~jderose/dmedia/peering |
Merge into: | lp:dmedia |
Diff against target: | 0 lines |
To merge this branch: | bzr merge lp:~jderose/dmedia/peering |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Jason Gerard DeRose | Approve | ||
Review via email: mp+127132@code.launchpad.net |
Description of the change
I should have done the httpd.py module in a separate merge, but this is a good point to merge this before it becomes even more of a mega merge.
The important thing here is the new httpd.py module and its tests. There is also sundry work in progress on the secure peering protocol and the new SSL based machine and user identity stuff.
httpd.py contains a tiny WSGI server designed to do just enough for our needs. In terms of why I wrote one, there aren't a lot of options for our Python3 + IPv6 + SSL requirements. gunicorn was my first thought, be it doesn't have a stable Python3 release yet.
And the server I wrote is less than 400 lines of Python, so who cares. By only supporting exactly the features we need, we have a lot less code to review for security issues.
The server already supports everything we need for Dmedia file transfer. There might be a few things we need to add once I dive into the details of exactly how the CouchDB replicator behaves. In particular, we might need to add support for chunked-encoding, and perhaps support for "100 Continue".
The file transfer logic will remain on the WSGI app side of things, as it currently is. Likewise, the logic for proxying requests to CouchDB will be in the WSGI app. So it will be easy for us to swap out to a different WSGI server should another seems like a better fit.
I'm gonna self-approve this so we can get this through the daily builds and then I do the remaining work in smaller pieces.
Note that none of this functionality is turned on yet by default, so this is safe to merge to trunk, despite parts of it still being works in progress.