GSOC idea : file transfer plugin

Jean-Grégoire Foulon at
Sun Mar 23 10:53:23 EDT 2008


I am not a student anymore so I can only propose subjects for the Google
Summer of code, I think a plugin dedicated to file transfer could be useful

The goal of this project is to create a plugin that allows user to share
files with their contacts. It can be compared to what some call a
Friend-2-Friend network.
 On one side the plugin runs an instance of a light secure FTP/HTTPS daemon
and advertise the port and IP address of this service to contacts asking it.
On the other side it allows to browse the files of the contacts who use this
plugin. Access will be granted with certificate that the user will exchange,
just the same way you can access a SSH server without any password.
This plugin will mainly consist of a link between Pidgin and a FTPS,HTTPS or
SCP suite. There is no time nor need to create a new file transfer protocol.

Security :
It is advised that this project uses certificates to restrict access to the
files. When the plugin authorize a contact A to access the files of a user
B, it will requests the public certificate of A and add it to the list of
the authorized contacts. A will keep its private certificate for himself and
he will use it to prove to B that he is really A and can have access to the
files. It is just the basic way SSH/SSL works, GnuTLS and OpenSSH support
this access scheme.

File server :
The goal is to use a FTPS client server suite that already exists. Other
alternatives can be used like SCP or HTTPS. At first, we don't need to
support more than one directory or any rights on the files, just keep it
simple. If we use something like SCP and we can not have a real directory
listing, we can just get the files list by downloading a specially named
file like $dir or .dir.
If a FTP file is used, any write access from a client must be prohibited.

File browsing:
When the user wants to browse the files of another contact we can do it in
several ways:
-by typing FTP like command in the chat window (/Pidgin_ls,/Pidgin_cd,
Pidgin_get, etc.)
-by browsing a HTML like file list from a Pidgin window (internal HTTP
server required)
-by browsing a HTML file list from the default browser (internal HTTP server
-by browsing files in a classic GTK type file dialog

Optional advanced features:
-resumable downloads for big files and in case of network problems
-uPNP support to automatically configure the router/firewall
-support multiple sources for downloads to speedup the download

I recently worked with GNU TLS library and can help students on this
subject, I think this is doable in 3 months. I know file transfer might be a
bit off topic for a IM client but this plugin isn't supposed to be in the
main code tree, it can remain optional.
Comments are welcome.

Jean-Grégoire Foulon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Devel mailing list