Skip to content

Wide Protocol Support

No due date 0% complete

In an effort to improve the wide usability of the launcher, a number of protocols and services beyond direct FTP and HTTP/HTTPS should be implemented. As a part of this, the protocol abstraction and refactoring will have to be improved and extended beyond the current implementation.

Currently, each protocol handler is bundled and hard-coded into the launc…

In an effort to improve the wide usability of the launcher, a number of protocols and services beyond direct FTP and HTTP/HTTPS should be implemented. As a part of this, the protocol abstraction and refactoring will have to be improved and extended beyond the current implementation.

Currently, each protocol handler is bundled and hard-coded into the launcher. In order to be able to support protocols in a more flexible manner, a plugin-based system might be more viable. However, this may present an issue with distribution and will inevitably leave a gaping security hole in the launcher. A maliciously crafted protocol plugin could execute arbitrary code, and there is no guarantee that the compiled plugin contains the code provided in the source.

Mitigation of this is under consideration, but it may be simpler to just internally bundle all protocols for now.

Currently, these protocols have planned support:

SFTP

SFTP (Secure File Transfer Protocol) is an implementation of the FTP protocol over SSH. This is available on a number of systems, and can be used in place of full FTP or HTTP servers.

Amazon S3 Buckets

Amazon buckets are already available as a platform, but there is no tutorial or set of instructions on how to set it up for use with Launchpad. One of the main tasks is to document this, along with other protocols which may be supported through direct FTP or HTTP/HTTPS access.

Google Drive

Google Drive requires a specific API implementation to work. Fortunately, there are some libraries available through NuGet, and should be largely simple to implement.

Google Cloud Storage

Google Cloud Storage is, like Amazon S3, technically already supported and only lacks documentation. Additionally, it supports some interesting file metadata which could be used for versioning or faster integrity validation.

BitTorrent

BitTorrent is an exciting prospect, but vastly different from the current manifest-based implementation. It's definitely viable, but will require some rethinking. The current train of thought is to use the manifest to version and distribute .torrent files. There may be some issues with files that are merely updated instead of added, but the BitTorrent protocol should be able to cover those cases.

Dropbox

Dropbox, like Google Drive, requires a specific API implementation. There may be NuGet libraries for it.

ownCloud

ownCloud is also already supported through direct HTTP/HTTPS access, and only needs documentation.