Shadowsocks-Qt 3.0

Happy 2018! Shadowsocks-Qt5 3.0 and libQtShadowsocks 2.0 have now been marked as stable and released!

For people who are not familiar with Shadowsocks, it is a lightweight secure SOCKS5 proxy initially developed in China to circumvent the great firewall. I’ve been developing and maintaining the Qt/C++ implementation of this protocol for quite some time. By protocol, it means you can mix and match different implementations (or so called ports in some context) of Shadowsocks. A popular setup is to use shadowsocks-libev as the server, while using the Android app or shadowsocks-windows, shadowsocks-qt5 as desktop clients.

Back to today’s business, after a long and painful period of refactoring and cleaning, I’m happy to announce that the new major update of Shadowsocks-Qt5 and libQtShadowsocks have finally come! The highlights are:

  1. Full support of Shadowsocks AEAD ciphers (requires botan >= 2.3.0)
  2. Full support of Shadowsocks SIP004 URI scheme, which is widely used by other clients for QR code
  3. Complete migration to CMake build system
  4. A compiler that supports C++14 is required (e.g. GCC >= 4.9)

Meanwhile, some of you may also notice a few changes to the project. I will no longer maintain any binary packages except for Fedora and AppImage. Right, that means not even Windows binaries are provided. I had a lot of difficulties compiling all the dependencies and linking them statically on Windows. As for Ubuntu PPA, I don’t use Ubuntu and it makes little sense for me, a non-Ubuntu user, to maintain it since I can’t even test. Time is also part of the reason why I’ve made this decision so that I can focus on coding.

Since I did mention AppImage, yes, this is an exciting new way to try out Shadowsocks-Qt5 on your Linux machines. Especially if you want to use AEAD ciphers since most Linux distributions don’t ship Botan-2, why not downloading the AppImage file and give it a go? It has bundled the latest version of Qt and Botan libraries as of writing.

Before I finish this post, I’d like to mention a few things that I probably will do later in this year (this is not a promise):

  1. Moving further away from Qt libraries in libQtShadowsocks, more and more C++11 and C++14 features will be used instead. The ultimate goal (in the far future) might be to create a “libShadowsocks++” project that doesn’t depend on Qt at all (the alternative for networking library can be asio)
  2. Finish the plug-in support proposed in SIP003
  3. Replace the dependency zbar with something more modern

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s