I made some progress on the client side the past week.
I use bootstrap_develop.sh script to get a working development environment and it seems to work nice.
I made a simple addition to the script to get obfsproxy binary in the environment, so as to use it later. However what’s the best way to to have this binary in the bitmask bundle is stil an open question to me, please advise.
So, given that most part of the obfsproxy work on the server side is done, client has to be adapted accordingly.
configs.json was introduced in platform and is a file that contains service definition file names, listed by version. Client should download that file in order to pick a specific version of each service definition from the provider.
This is the relevant ticket and this is the pull request. I spent some time to get familiar with how things are done in bitmask, i’m really happy i came to understand a lot while making changes in it. Still i definitely need comments and reviews and some guidance on the client side.
eip-service-2.json is a new service definition file introduced in platform so as to add values for obfsproxy service without modifying eip-service.json
As long as client downloads configs.json and sees that the provider supports multiple version of a service-definition file should favor the latest e.g. eip-service-2.json instead of eip-service.json.
There is an issue here. Since a section for obfsproxy is added in eip-service-2.json eipspec.py has to be modified accordingly. What is more gateways in eip-service-2.json are a hash instead of list. Changing eipspec will break compatibility with eip-service.json
As long as all the above are addressed, client will have all the necessary details to make a remote connection to provider’s obfsproxy server. obfsproxy client should listen to localhost and forward traffic to remote obfsproxy server. VPN should be pointed to obfsproxy listening to localhost. Ideas and directions on that are more than welcome.