Opened 6 years ago

Closed 5 years ago

#11489 closed enhancement (fixed)

obfsclient integration for orbot

Reported by: yawning Owned by: n8fr8
Priority: Medium Milestone:
Component: Applications/Orbot Version:
Severity: Keywords: obfsclient, pluggable transport, obfs2, obfs3, scramblesuit
Cc: Actual Points:
Parent ID: Points:
Reviewer: Sponsor:


In order to support more than obfs2, orbot should switch to using obfsclient from obfsproxy. I have attached a preliminary set of patches that accomplish this, based off 8d73be655e84879e56369546cdefa7c8d84fa4ac.

To be done:

  • obfsproxy is still build and included as an asset.
  • The obfsclient binary built with debugging information is gigantic, stripping after build is recommended.
  • UI work for pluggable transport protocol selection.

Please let me know if there are any questions.

Child Tickets

Change History (9)

Changed 6 years ago by yawning

comment:1 Changed 5 years ago by n8fr8

The first 3 patches work great. The 4th I will reject because I am refactoring the binary install/server startup code anyhow.

Will have this all integrated in a v14_alpha branch soon.

comment:2 Changed 5 years ago by n8fr8

Resolution: implemented
Status: newclosed

comment:3 Changed 5 years ago by n8fr8

Resolution: implemented
Status: closedreopened

Getting a build error

make -C obfsclient
make[1]: Entering directory `/home/n8fr8/dev/repos/orbot/external/obfsclient'
make all-am
make[2]: Entering directory `/home/n8fr8/dev/repos/orbot/external/obfsclient'
/home/n8fr8/dev/android/ndk/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ --sysroot=/home/n8fr8/dev/android/ndk/platforms/android-9/arch-arm -DHAVE_CONFIG_H -I. -I./src -I. -DANDROID -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -g -DNDEBUG -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -D_FORTIFY_SOURCE=2 -fPIE -fwrapv -fno-strict-aliasing -fno-strict-overflow -Wall -Werror -fno-exceptions -fno-rtti -I/home/n8fr8/dev/repos/orbot/external/include -I/home/n8fr8/dev/repos/orbot/external/include -I/home/n8fr8/dev/repos/orbot/external/include -DANDROID -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -g -DNDEBUG -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -D_FORTIFY_SOURCE=2 -fPIE -fwrapv -fno-strict-aliasing -fno-strict-overflow -I/home/n8fr8/dev/android/ndk/sources/cxx-stl/gnu-libstdc++/4.7/include -I/home/n8fr8/dev/android/ndk/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi/include -std=c++11 -MT src/schwanenlied/crypto/obfsclient-base32.o -MD -MP -MF src/schwanenlied/crypto/.deps/obfsclient-base32.Tpo -c -o src/schwanenlied/crypto/obfsclient-base32.o test -f 'src/schwanenlied/crypto/' || echo './'src/schwanenlied/crypto/
In file included from ./src/schwanenlied/common.h:47:0,

from ./src/schwanenlied/crypto/utils.h:40,
from ./src/schwanenlied/crypto/base32.h:37,
from src/schwanenlied/crypto/

./src/ext/easylogging++.h: In static member function 'static char* el::base::utils::OS::getProperty(const char*)':
./src/ext/easylogging++.h:1283:14: error: address of local variable 'propVal' returned [-Werror]
cc1plus: all warnings being treated as errors
make[2]: * [src/schwanenlied/crypto/obfsclient-base32.o] Error 1
make[2]: Leaving directory `/home/n8fr8/dev/repos/orbot/external/obfsclient'
* [all] Error 2
make[1]: Leaving directory `/home/n8fr8/dev/repos/orbot/external/obfsclient'
make: * [obfsclient-build-stamp] Error 2

comment:4 Changed 5 years ago by yawning

Hmm, I think your obfsclient submodule isn't at the right commit, since I fixed that when doing the integration work, and the offending line is #if 0-ed out (See:

Patch 2 in the series of patches does update the commit did you refresh the local copy before building?

comment:5 Changed 5 years ago by n8fr8

Resolution: fixed
Status: reopenedclosed

indeed that was the problem. sorry for the trouble! :)

Note: See TracTickets for help on using tickets.