[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