[tor-commits] [ooni-probe/master] Make planetlab install script more modular
art at torproject.org
art at torproject.org
Thu Jun 26 13:58:10 UTC 2014
commit 2f8b70f848182b2c5bfb7175cecd3d6502537ea6
Author: Arturo Filastò <art at fuffa.org>
Date: Sat May 31 17:48:51 2014 +0200
Make planetlab install script more modular
Update python url
---
scripts/install_on_planetlab.sh | 371 ++++++++++++++++++++++-----------------
1 file changed, 208 insertions(+), 163 deletions(-)
diff --git a/scripts/install_on_planetlab.sh b/scripts/install_on_planetlab.sh
index b329228..881ab22 100644
--- a/scripts/install_on_planetlab.sh
+++ b/scripts/install_on_planetlab.sh
@@ -2,171 +2,216 @@
## You should also create a file from the directory where you run this script
## called torrc with inside the details of the torrc to use.
-sudo yum -y groupinstall "Development tools"
-sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel libffi-devel screen libeven-devel unzip tor
-cd `mktemp -d`
-
-# Install Python 2.7.6
-curl -o Python-2.7.6.tgz http://legacy.python.org/ftp//python/2.7.6/Python-2.7.6.tgz
-tar xzf Python-2.7.6.tgz
-cd Python-2.7.6
-./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
-make
-sudo make altinstall
-sudo ln -sf /usr/local/bin/python2.7 /usr/bin/python
-cd ..
-
-# Install the latest version of libtool
-curl -o libtool-2.4.2.tar.gz http://ftpmirror.gnu.org/libtool/libtool-2.4.2.tar.gz
-tar xzf libtool-2.4.2.tar.gz
-cd libtool-2.4.2
-./configure
-make
-sudo make install
-sudo mv /usr/bin/libtool /usr/bin/libtool.old
-sudo ln -s /usr/local/bin/libtool /usr/bin/libtool
-cd ..
-
-# Install the latest version of autoconf
-curl -o autoconf-2.69.tar.gz http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
-tar xzf autoconf-2.69.tar.gz
-cd autoconf-2.69
-./configure
-make
-sudo make install
-sudo mv /usr/bin/autoconf /usr/bin/autoconf.old
-sudo ln -s /usr/local/bin/autoconf /usr/bin/autoconf
-cd ..
-
-# Install the latest version of automake
-curl -o automake-1.14.1.tar.gz http://ftp.gnu.org/gnu/automake/automake-1.14.1.tar.gz
-tar xzf automake-1.14.1.tar.gz
-cd automake-1.14.1
-./configure
-make
-sudo make install
-sudo mv /usr/bin/automake /usr/bin/automake.old
-sudo ln -s /usr/local/bin/automake /usr/bin/automake
-cd ..
-
-# Install latest version of libevent
-curl -o libevent-2.0.21-stable.tar.gz https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
-tar xvzf libevent-2.0.21-stable.tar.gz
-cd libevent-2.0.21-stable
-./autogen.sh
-./configure
-cp /usr/bin/libtool libtool
-make
-sudo make install
-cd ..
-
-# Install GMP
-curl -o gmp-6.0.0a.tar.bz2 https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2
-tar xjpf gmp-6.0.0a.tar.bz2
-cd gmp-6.0.0
-export ABI=32
-./configure --enable-cxx
-make
-sudo make install
-cd ..
-
-# Install the latest version of Tor
-curl -o tor.zip https://github.com/hellais/tor/archive/fix/fedora8.zip
-unzip tor.zip
-cd tor-fix-fedora8
-./autogen.sh
-./configure --disable-asciidoc --with-libevent-dir=/usr/local/lib/
-make
-sudo make install
-sudo mv /usr/bin/tor /usr/bin/tor.old
-sudo ln -s /usr/local/bin/tor /usr/bin/tor
-echo "SocksPort 9050" > /usr/local/etc/tor/torrc
-cat torrc >> /usr/local/etc/tor/torrc
-cat <<EOF > tor.init
-RETVAL=0
-prog="tor"
-
-# Source function library.
-. /etc/init.d/functions
-
-
-start() {
- echo -n $"Starting \$prog: "
- daemon \$prog --runasdaemon 1 && success || failure
- RETVAL=\$?
- echo
- return \$RETVAL
+TMP_INSTALL_DIR=`mktemp -d`
+
+yum_installs() {
+ sudo yum -y groupinstall "Development tools" &&
+ sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel libffi-devel screen libeven-devel unzip tor
+}
+
+install_python() {
+ cd $TMP_INSTALL_DIR;
+ # Install Python 2.7.6
+ curl -o Python-2.7.6.tgz https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz &&
+ tar xzf Python-2.7.6.tgz &&
+ cd Python-2.7.6 &&
+ ./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib" &&
+ make &&
+ sudo make altinstall &&
+ sudo ln -sf /usr/local/bin/python2.7 /usr/bin/python
+}
+
+install_libtool() {
+ # Install the latest version of libtool
+ curl -o libtool-2.4.2.tar.gz http://ftpmirror.gnu.org/libtool/libtool-2.4.2.tar.gz &&
+ tar xzf libtool-2.4.2.tar.gz &&
+ cd libtool-2.4.2 &&
+ ./configure &&
+ make &&
+ sudo make install &&
+ sudo mv /usr/bin/libtool /usr/bin/libtool.old &&
+ sudo ln -s /usr/local/bin/libtool /usr/bin/libtool
+}
+
+install_autoconf() {
+ # Install the latest version of autoconf
+ curl -o autoconf-2.69.tar.gz http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz &&
+ tar xzf autoconf-2.69.tar.gz &&
+ cd autoconf-2.69 &&
+ ./configure &&
+ make &&
+ sudo make install &&
+ sudo mv /usr/bin/autoconf /usr/bin/autoconf.old &&
+ sudo ln -s /usr/local/bin/autoconf /usr/bin/autoconf
}
-stop() {
- echo -n $"Stopping \$prog: "
- killall \$prog
- RETVAL=\$?
- echo
- return \$RETVAL
+install_automake(){
+ # Install the latest version of automake
+ curl -o automake-1.14.1.tar.gz http://ftp.gnu.org/gnu/automake/automake-1.14.1.tar.gz &&
+ tar xzf automake-1.14.1.tar.gz &&
+ cd automake-1.14.1 &&
+ ./configure &&
+ make &&
+ sudo make install &&
+ sudo mv /usr/bin/automake /usr/bin/automake.old &&
+ sudo ln -s /usr/local/bin/automake /usr/bin/automake
}
-case "\$1" in
- start)
- start
- ;;
- stop)
+install_libevent(){
+ # Install latest version of libevent
+ curl -o libevent-2.0.21-stable.tar.gz https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz &&
+ tar xvzf libevent-2.0.21-stable.tar.gz &&
+ cd libevent-2.0.21-stable &&
+ ./autogen.sh &&
+ ./configure &&
+ cp /usr/bin/libtool libtool &&
+ make &&
+ sudo make install
+}
+
+install_gmp() {
+ # Install GMP
+ curl -o gmp-6.0.0a.tar.bz2 https://gmplib.org/download/gmp/gmp-6.0.0a.tar.bz2 &&
+ tar xjpf gmp-6.0.0a.tar.bz2 &&
+ cd gmp-6.0.0 &&
+ export ABI=32 &&
+ ./configure --enable-cxx &&
+ make &&
+ sudo make install
+}
+
+install_tor() {
+ # Install the latest version of Tor
+ curl -o tor.zip https://github.com/hellais/tor/archive/fix/fedora8.zip &&
+ unzip tor.zip &&
+ cd tor-fix-fedora8 &&
+ ./autogen.sh &&
+ ./configure --disable-asciidoc --with-libevent-dir=/usr/local/lib/ &&
+ make &&
+ sudo make install &&
+ sudo mv /usr/bin/tor /usr/bin/tor.old &&
+ sudo ln -s /usr/local/bin/tor /usr/bin/tor &&
+ echo "SocksPort 9050" > /usr/local/etc/tor/torrc &&
+ cat torrc >> /usr/local/etc/tor/torrc &&
+ cat <<EOF > tor.init
+ RETVAL=0
+ prog="tor"
+
+ # Source function library.
+ . /etc/init.d/functions
+
+
+ start() {
+ echo -n $"Starting \$prog: "
+ daemon \$prog --runasdaemon 1 && success || failure
+ RETVAL=\$?
+ echo
+ return \$RETVAL
+ }
+
+ stop() {
+ echo -n $"Stopping \$prog: "
+ killall \$prog
+ RETVAL=\$?
+ echo
+ return \$RETVAL
+ }
+
+ case "\$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
stop
- ;;
- restart)
- stop
- start
- ;;
- *)
- echo $"Usage: \$0 {start|stop|restart}"
- RETVAL=3
-esac
-exit \$RETVAL
-EOF
-sudo mv tor.init /etc/init.d/tor
-sudo chmod +x /etc/init.d/tor
-sudo /etc/init.d/tor restart
-cd ..
-
-# Install libGeoIP
-curl -o master.zip https://github.com/maxmind/geoip-api-c/archive/master.zip
-unzip master.zip
-cd geoip-api-c-master/
-./bootstrap
-./configure
-make
-sudo make install
-cd ..
-
-# Install the latest version of pip
-curl -o get-pip.py https://raw.github.com/pypa/pip/master/contrib/get-pip.py
-sudo python get-pip.py
-
-# Install the patched versions of cryptography and pyopenssl
-sudo pip install cryptography
-sudo pip install https://github.com/pyca/pyopenssl/archive/master.zip
-
-# Install pluggable transport related stuff
-sudo pip install obfsproxy
-curl -o 0.2.9.zip https://github.com/kpdyer/fteproxy/archive/0.2.9.zip
-unzip 0.2.9.zip
-cd fteproxy-0.2.9
-make
-sudo cp bin/fteproxy /usr/bin/fteproxy
-sudo python setup.py install
-cd ..
-
-# Install ooniprobe and obfsproxy
-sudo pip install https://github.com/TheTorProject/ooni-probe/archive/master.zip
-/usr/local/bin/ooniprobe
-
-# Update the Tor running in ooniprobe
-cat /usr/share/ooni/ooniprobe.conf.sample | sed s/'start_tor: true'/'start_tor: false'/ | sed s/'#socks_port: 8801'/'socks_port: 9050'/ > ~/.ooni/ooniprobe.conf
-
-mkdir /home/$USER/bridge_reachability/
-
-# Add cronjob to run ooniprobe daily
-{ crontab -l; echo "PATH=\$PATH:/usr/local/bin/\n0 0 * * * /usr/local/bin/ooniprobe -c httpo://e2nl5qgtkzp7cibx.onion blocking/bridge_reachability -f /home/$USER/bridge_reachability/bridges.txt -t 300"; } | crontab
-sudo /etc/init.d/crond start
-sudo /sbin/chkconfig crond on
-sudo chmod 777 /var/mail
+ start
+ ;;
+ *)
+ echo $"Usage: \$0 {start|stop|restart}"
+ RETVAL=3
+ esac
+ exit \$RETVAL
+ EOF &&
+ sudo mv tor.init /etc/init.d/tor &&
+ sudo chmod +x /etc/init.d/tor &&
+ sudo /etc/init.d/tor restart
+
+}
+
+install_geoip() {
+ # Install libGeoIP
+ curl -o master.zip https://github.com/maxmind/geoip-api-c/archive/master.zip &&
+ unzip master.zip &&
+ cd geoip-api-c-master/ &&
+ ./bootstrap &&
+ ./configure &&
+ make &&
+ sudo make install
+}
+
+install_pip() {
+ # Install the latest version of pip
+ curl -o get-pip.py https://raw.github.com/pypa/pip/master/contrib/get-pip.py &&
+ sudo python get-pip.py
+}
+
+install_cryptography() {
+ # Install the patched versions of cryptography and pyopenssl
+ sudo pip install cryptography &&
+ sudo pip install https://github.com/pyca/pyopenssl/archive/master.zip
+}
+
+install_pluggable_transports() {
+ # Install pluggable transport related stuff
+ sudo pip install obfsproxy
+ curl -o 0.2.9.zip https://github.com/kpdyer/fteproxy/archive/0.2.9.zip
+ unzip 0.2.9.zip
+ cd fteproxy-0.2.9
+ make
+ sudo cp bin/fteproxy /usr/bin/fteproxy
+ sudo python setup.py install
+}
+
+install_ooniprobe() {
+ # Install ooniprobe and obfsproxy
+ sudo pip install https://github.com/TheTorProject/ooni-probe/archive/master.zip &&
+ /usr/local/bin/ooniprobe
+}
+
+setup_ooniprobe() {
+ # Update the Tor running in ooniprobe
+ cat /usr/share/ooni/ooniprobe.conf.sample | sed s/'start_tor: true'/'start_tor: false'/ | sed s/'#socks_port: 8801'/'socks_port: 9050'/ > ~/.ooni/ooniprobe.conf &&
+
+ mkdir /home/$USER/bridge_reachability/ &&
+
+ # Add cronjob to run ooniprobe daily
+ { crontab -l; echo "PATH=\$PATH:/usr/local/bin/\n0 0 * * * /usr/local/bin/ooniprobe -c httpo://e2nl5qgtkzp7cibx.onion blocking/bridge_reachability -f /home/$USER/bridge_reachability/bridges.txt -t 300"; } | crontab &&
+ sudo /etc/init.d/crond start &&
+ sudo /sbin/chkconfig crond on &&
+ sudo chmod 777 /var/mail
+}
+
+run_or_exit() {
+ cd $TMP_INSTALL_DIR &&
+ echo "[*] Running" $1 &&
+ $1 &&
+ echo "[*] Completed running" $1 ||
+ echo "[!] Failed to run" $1 && exit 1
+}
+
+run_or_exit yum_installs
+run_or_exit install_python
+run_or_exit install_libtool
+run_or_exit install_autoconf
+run_or_exit install_automake
+run_or_exit install_libevent
+run_or_exit install_gmp
+run_or_exit install_tor
+run_or_exit install_geoip
+run_or_exit install_pip
+run_or_exit install_cryptography
+run_or_exit install_pluggable_transports
+run_or_exit install_ooniprobe
+run_or_exit setup_ooniprobe
More information about the tor-commits
mailing list