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:
- Full support of Shadowsocks AEAD ciphers (requires
- Full support of Shadowsocks SIP004 URI scheme, which is widely used by other clients for QR code
- Complete migration to CMake build system
- 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):
- 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
- Finish the plug-in support proposed in SIP003
- Replace the dependency
zbarwith something more modern