[tor-commits] [ooni-probe/master] Major fixes and enhancements to psipshon install script

art at torproject.org art at torproject.org
Wed Dec 2 11:49:13 UTC 2015


commit be90c3b95f9262124cc9fc7fa344659bd5d8c759
Author: anadahz <kojgelo at inbox.com>
Date:   Fri Nov 6 10:58:54 2015 +0100

    Major fixes and enhancements to psipshon install script
    
    * Create required PSIPHON_PATH directory
    * Add command_exists function
    * Check if running as root user non sudo usage
    * Add required package dependencies
    * Fix check if hg command exits and if not install mercurial package
    * Check if virtualenv exists and if not install it
    * Fix minor format typos
---
 scripts/psiphon_install.sh |   42 ++++++++++++++++++++++++++++++++++++------
 1 file changed, 36 insertions(+), 6 deletions(-)

diff --git a/scripts/psiphon_install.sh b/scripts/psiphon_install.sh
index 1b6837d..208aa83 100755
--- a/scripts/psiphon_install.sh
+++ b/scripts/psiphon_install.sh
@@ -6,9 +6,35 @@ set -ex
 PSIPHON_PATH=$HOME/test
 PSIPHON_PYCLIENT_PATH=$PSIPHON_PATH/psiphon-circumvention-system/pyclient
 
+mkdir -p $PSIPHON_PATH
+
+command_exists() {
+	command -v "$@" > /dev/null 2>&1
+}
+
+user="$(id -un 2>/dev/null || true)"
+
+sh_c='sh -c'
+
+if [ "$user" != 'root' ]; then
+	if command_exists sudo; then
+		sh_c='sudo sh -c -E'
+	elif command_exists su; then
+		sh_c='su -c --preserve-environment'
+	else
+		echo >&2 'Error: this installer needs the ability to run commands as root.'
+		echo >&2 'We are unable to find either "sudo" or "su" available to make this happen.'
+		exit 1
+	fi
+fi
+
 echo "installing dependencies"
-# FIXME: check if hg command exits and if not bail out?
-sudo apt-get install -y mercurial
+$sh_c "apt-get -y install zlib1g-dev libssl-dev"
+
+if [ -z "command_exists hg" ]; then
+    $sh_c "apt-get -y install mercurial"
+fi
+
 echo "cloning psiphon repository"
 cd $PSIPHON_PATH
 hg clone https://bitbucket.org/psiphon/psiphon-circumvention-system
@@ -29,8 +55,9 @@ if [ python -c 'import sys; print hasattr(sys, "real_prefix")'  = "False"];then
     # we are not in a virtualenv
     # create a virtualenv
     # FIXME: assuming debian version will have secure pip/virtualenv
-    sudo apt-get -y install python-virtualenv
-
+    if [ -z "command_exists virtualenv" ]; then
+        $sh_c "apt-get -y install python-virtualenv"
+    fi
     if [ ! -f $HOME/.virtualenvs/ooniprobe/bin/activate ]; then
       # Set up the virtual environment
       mkdir -p $HOME/.virtualenvs
@@ -72,9 +99,12 @@ dat["servers"] = json.load(open('server_list'))['data'].split()
 json.dump(dat, open('psi_client.dat', 'w'))
 EOF
 
-chmod +x psi_generate_dat.py 
+chmod +x psi_generate_dat.py
+./psi_generate_dat.py
+echo "servers data file created"
+chmod +x psi_generate_dat.py
 ./psi_generate_dat.py
-echo "serers data file created"
+echo "servers data file created"
 mv psi_client.dat $PSIPHON_PYCLIENT_PATH
 
 





More information about the tor-commits mailing list