[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Arx-users] Networking libraries and Windows

From: Walter Landry
Subject: [Arx-users] Networking libraries and Windows
Date: Fri, 21 Apr 2006 16:41:46 -0700 (PDT)


ArX has depended on gnome-vfs for a long time.  Unfortunately,
gnome-vfs is a large dependency and is not ported to Windows except
through cygwin.  What has impeded a replacement is that it must cover
sftp, http, https + webdav, ftp, and ftps, and it must already build
on a variety of Unix platforms, Mac, and Windows (mingw is ok).  I
think I have figured out a replacement now.  Each of them come with

sftp: libssh2

This is not to be confused with the libssh library by Aris
Adamantiadis.  libssh2 already builds on Windows.  The only problem is
that it uses OpenSSL, which has a license that is incompatible with
the GPL.  However, it only uses the ciphers and hashes, so it should
be straightforward to make it use Botan.  Using Botan would also mean
we can take out the existing sha256 code.

http, https+webdav: neon

This is basically the only library around besides gnome-vfs and
corresponding KDE libraries that understands webdav.  For https, it
can use either OpenSSL or gnutls.  However, gnutls does not seem to
work with mingw.  So https would not be supported under Windows.

ftp(s): ftplibpp

This is a nice little library that only implements ftp.  It also uses
OpenSSL for crypto, but it comes real close to compiling gnutls'
compatibility layer.  I also considered libcurl, but that seemed like
a large dependency for an infrequently used protocol.  ftplibpp can be
included directly in the source.  If ftplibpp ends up causing
problems, it should be simple to switch it out for libcurl.

So the end result would be that the only way to do secure transactions
on Windows would be with ssh.  But since we can bundle almost
everything, it is pretty easy to provide simple executables for all
platforms.  It would still require a few extra helper commands (diff,
patch, and tar), but I think those can be replaced with libxdiff and

Also, it would probably be good to rework the way ArX uses the
networking code.  Right now, there is no explicit reuse of
connections.  I would want to rework the code to open a connection,
perform operations, and then close the connection.  That should reduce


reply via email to

[Prev in Thread] Current Thread [Next in Thread]