[tor-commits] [flashproxy/master] Add instructions for bundling pyobfsproxy.

dcf at torproject.org dcf at torproject.org
Sun Jan 6 06:03:00 UTC 2013


commit ae05ce3aae56c28350138f8f27286a55305c35f9
Author: David Fifield <david at 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



More information about the tor-commits mailing list