commit ae05ce3aae56c28350138f8f27286a55305c35f9 Author: David Fifield david@bamsoftware.com Date: Sat Jan 5 22:01:35 2013 -0800
Add instructions for bundling pyobfsproxy.
These are from Alexandre. --- doc/bundle-gnulinux.txt | 26 +++++++++++++++++++++++++- doc/bundle-macosx.txt | 37 ++++++++++++++++++++++++++++++++----- doc/bundle-windows.txt | 43 ++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 99 insertions(+), 7 deletions(-)
diff --git a/doc/bundle-gnulinux.txt b/doc/bundle-gnulinux.txt index c84047b..848aecb 100644 --- a/doc/bundle-gnulinux.txt +++ b/doc/bundle-gnulinux.txt @@ -65,6 +65,14 @@ Packages to install: sudo apt-get update sudo apt-get upgrade sudo apt-get install git make python-m2crypto zip + sudo apt-get install python-setuptools python-crypto python-twisted python-argparse + +== Dependencies + +=== pyptlib + + $ git clone https://git.torproject.org/user/asn/pyptlib.git + $ cd pyptlib && python setup.py install
== Browser bundle
@@ -74,6 +82,10 @@ Clone and build the flashproxy source. $ cd flashproxy $ make dist
+Clone pyobfsproxy. + + $ git clone https://git.torproject.org/user/asn/pyobfsproxy.git + Within the VM, download the 32-bit or 64-bit obfsproxy bundle from https://www.torproject.org/projects/obfsproxy. The instructions below are for the 32-bit (i686) version. @@ -97,20 +109,32 @@ Copy files into the bundle. $ mkdir -p Docs/FlashProxy $ cp ~/flashproxy/dist/flashproxy-client-VERSION/{doc/*,README,LICENSE,ChangeLog} Docs/FlashProxy
+ $ rm App/obfsproxy + $ cp -r ~/pyobfsproxy/{obfsproxy,obfsproxy.py} App + $ cp -r /usr/lib/python2.6/dist-packages/{Crypto,twisted} App + $ cp /usr/lib/pymodules/python2.6/argparse.pyc App + Make the second half of Data/Tor/torrc look like this (i.e., keep the generic configuration, but change the obfsproxy-specific stuff). Basically you are concatenating the normal flashproxy-client torrc, but -changing "./flashproxy-client" to "./App/flashproxy-client". +changing "./flashproxy-client" to "./App/flashproxy-client". You are also +changing the obfsproxy ClientTransportPlugin line to match what pyobfsproxy +expects.
UseBridges 1 # The address and port are ignored by the client transport plugin. Bridge websocket 0.0.1.0:1 + +# Keep the obfs2 bridges. +... + LearnCircuitBuildTimeout 0 CircuitBuildTimeout 60 # Change the second number here (9000) to the number of a port that can # receive connections from the Internet (the port for which you # configured port forwarding). ClientTransportPlugin websocket exec ./App/flashproxy-client --register :0 :9000 +ClientTransportPlugin obfs2 exec ./App/obfsproxy.py managed
Re-zip the bundle. The "alpha" number should be independent of the obfsproxy bundle's alpha. diff --git a/doc/bundle-macosx.txt b/doc/bundle-macosx.txt index 8d33701..7bea830 100644 --- a/doc/bundle-macosx.txt +++ b/doc/bundle-macosx.txt @@ -1,8 +1,8 @@ This document describes how to build a Tor Browser bundle for Mac OS X -that is preconfigured to use the flash proxy transport. Because Mac have -Python preinstalled, we include the Python source of the programs. An -exception to this is the M2Crypto library, which has some compiled -components. +that is preconfigured to use the pyobfsproxy and flashproxy transports. +Because Macs have Python preinstalled, we include the Python source of +the programs. Exceptions to this are the M2Crypto and PyCrypto libraries, +which have some compiled components.
== Dependencies
@@ -41,6 +41,20 @@ http://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.21.1.tar.gz.asc $ mkdir -p ~/usr/lib/python2.7/site-packages/ $ python setup.py install --root=~/bundle --prefix=/usr
+=== PyCrypto + +http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz +http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz.asc + +Extract and verify the tarball. Then run + + $ python setup.py install --root=~/bundle --prefix=/usr + +=== pyptlib + + $ git clone https://git.torproject.org/user/asn/pyptlib.git + $ cd pyptlib && python setup.py install --root=~/bundle --prefix=/usr + == Browser bundle
Run "make dist" in the flashproxy source directory. @@ -64,20 +78,33 @@ Copy files into the bundle. $ mkdir -p Contents/Resources/Docs/FlashProxy $ cp ~/flashproxy/dist/flashproxy-client-VERSION/{doc/*,README,LICENSE,ChangeLog} Contents/Resources/Docs/FlashProxy
+ $ rm Contents/MacOs/obfsproxy + $ cp -r ~/pyobfsproxy/{obfsproxy,obfsproxy.py} Contents/MacOs + $ cp -r ~/bundle/usr/lib/python2.7/site-packages/{Crypto,pyptlib} Contents/MacOS + $ mkdir -p Contents/Resources/Docs/PyObfsproxy + $ cp ~/pyobfsproxy/{LICENSE,README} Contents/Resources/Docs/PyObfsproxy + Make the second half of Library/Vidalia/torrc look like this (i.e., keep the generic configuration, but change the obfsproxy-specific stuff). Basically you are concatenating the normal flashproxy-client torrc, but -changing "./flashproxy-client" to "flashproxy-client". +changing "./flashproxy-client" to "flashproxy-client". You are also +changing "--managed" to "managed" and "obfsproxy" to "obfsproxy.py" in +the obfsproxy ClientTransportPlugin line.
UseBridges 1 # The address and port are ignored by the client transport plugin. Bridge websocket 0.0.1.0:1 + +# Keep the obfs2 bridges. +... + LearnCircuitBuildTimeout 0 CircuitBuildTimeout 60 # Change the second number here (9000) to the number of a port that can # receive connections from the Internet (the port for which you # configured port forwarding). ClientTransportPlugin websocket exec flashproxy-client --register :0 :9000 +ClientTransportPlugin obfs2 exec obfsproxy.py managed
Re-zip the bundle. The "alpha" number should be independent of the obfsproxy bundle's alpha. diff --git a/doc/bundle-windows.txt b/doc/bundle-windows.txt index 360ec1b..9e908b6 100644 --- a/doc/bundle-windows.txt +++ b/doc/bundle-windows.txt @@ -13,6 +13,38 @@ The sha256sum of the package I used was
fe4807b4698ec89f82de7d85d32deaa4c772fc871537e31fb0fccf4473455cb8 7z920.msi
+=== PyCrypto + +http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz +http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz.asc + +To install run: + + $ python setup.py install + +=== zope.interface + +Required by Twisted. Visit https://pypi.python.org/pypi/zope.interface/4.0.3#downloads +and download the appropriate egg for your version of Windows. Extract the egg and +copy the EGG-INFO and zope directories to /cygdrive/c/Python27/Lib/site-packages. + +=== Twisted + +Download and run the appropriate installer from https://twistedmatrix.com/trac/wiki/Downloads. + +=== pyptlib + +Run: + + $ git clone https://git.torproject.org/user/asn/pyptlib.git + $ cd pyptlib && python setup.py install + +== Bundle pyobfsproxy + +Use PyInstaller to bundle pyobfsproxy. + + $ ../pyinstaller-2.0/pyinstaller.py obfsproxy.py + == Browser bundle
Run "make dist-exe" in the flashproxy source directory. @@ -36,21 +68,30 @@ from being overwritten. $ cp -n ~/flashproxy/dist/flashproxy-client-VERSION-win32/{*.pyd,*.dll,*.exe,*.manifest} App $ mkdir -p Docs/FlashProxy $ cp ~/flashproxy/dist/flashproxy-client-VERSION-win32/{doc/*,README,LICENSE,ChangeLog} Docs/FlashProxy + $ cp -r ~/pyobfsproxy/dist/obfsproxy/{*.pyd,*.dll,*.exe,*.manifest,eggs} App + $ mkdir -p Docs/PyObfsproxy + $ cp ~/pyobfsproxy/{LICENSE,README} Docs/PyObfsproxy
Make the second half of Data/Tor/torrc look like this (i.e., keep the generic configuration, but change the obfsproxy-specific stuff). Basically you are concatenating the normal flashproxy-client torrc, but -changing "./flashproxy-client" to "flashproxy-client". +changing "./flashproxy-client" to "flashproxy-client". You are also +changing "--managed" to "managed" in the obfsproxy ClientTransportPlugin line.
UseBridges 1 # The address and port are ignored by the client transport plugin. Bridge websocket 0.0.1.0:1 + +# Keep the list of obfs2 bridges +... + LearnCircuitBuildTimeout 0 CircuitBuildTimeout 60 # Change the second number here (9000) to the number of a port that can # receive connections from the Internet (the port for which you # configured port forwarding). ClientTransportPlugin websocket exec flashproxy-client --register :0 :9000 +ClientTransportPlugin obfs2 exec obfsproxy managed
Re-zip the bundle. The "alpha" number should be independent of the obfsproxy bundle's alpha. The 7zg program (as opposed to 7z) causes the
tor-commits@lists.torproject.org