commit 35e7deda2a78051bd75aaba8b144ff4dfb07688b Author: David Stainton dstainton415@gmail.com Date: Mon Jan 13 21:25:44 2014 +0100
Teach setup-dependencies.sh two install modes
Privileged mode installs python package dependencies systems wide. Unprevileged mode installs them in the virtualenv. Commandline args required: -u|-p Now uses pip 1.5 so that we don't allow arbitrary code execution. gpg signing key for pip updated to Donald Stufft's key 3372DCFA --- setup-dependencies.sh | 1056 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 733 insertions(+), 323 deletions(-)
diff --git a/setup-dependencies.sh b/setup-dependencies.sh index 5ff3b87..dc933cc 100755 --- a/setup-dependencies.sh +++ b/setup-dependencies.sh @@ -22,9 +22,7 @@ elif [ -r /lib/lsb/init-functions ]; then fi
TOR_DEB_REPO="http://deb.torproject.org/torproject.org"; -if [[ -z "$USE_VIRTUALENV" ]]; then - USE_VIRTUALENV=1 -fi + usage() { cat << EOF @@ -33,12 +31,15 @@ usage: ./${SCRIPTNAME} options OPTIONS: -h Show this message -y To assume yes to all queries - +ONE MODE SPECIFICATION REQUIRED: + -p Privileged mode - install all dependencies system wide + -u Unprivileged mode - install most dependencies in a virtualenv EOF }
ASSUME_YES=0 -while getopts “hv:ny” OPTION +PRIV_MODE=3 +while getopts “hypu” OPTION do case $OPTION in h) @@ -48,6 +49,12 @@ do y) ASSUME_YES=1 ;; + u) + PRIV_MODE=0 + ;; + p) + PRIV_MODE=1 + ;; ?) usage exit @@ -55,6 +62,28 @@ do esac done
+# make sure a privilege mode was specified +if [[ $PRIV_MODE -eq 3 ]]; then + usage + exit +fi + +# make sure we are not root when in unprivileged mode +if [[ $PRIV_MODE -eq 0 ]]; then + if [[ $EUID -eq 0 ]]; then + echo "operator error: non-privilege mode must be run as non-root user with sudo privileges" + exit + fi +fi + +# make sure we are root when in privileged mode +if [[ $PRIV_MODE -eq 1 ]]; then + if [[ $EUID -ne 0 ]]; then + echo "operator error: privileged-mode must be run as root" + exit + fi +fi + DO () { if [ -z "$2" ]; then RET=0 @@ -69,7 +98,7 @@ DO () { echo "Running: " echo " $CMD" $1 &>${BUILD_LOG} - if [ "$?" -eq "$2" ]; then + if [[ "$?" -eq "$2" ]]; then echo "SUCCESS" else echo "FAIL" @@ -115,7 +144,7 @@ vercomp () { }
## BEGIN PIP SECURE INSTALL -NEEDED_VERSION_PIP=1.3.1 +NEEDED_VERSION_PIP=1.5
PIP_PKG="pip-${NEEDED_VERSION_PIP}.tar.gz" PKG_VERIFY=${BUILD_DIR}/${PIP_PKG}.asc @@ -124,291 +153,666 @@ PIP_SIG_URL="https://pypi.python.org/packages/source/p/pip/$%7BPIP_PKG%7D.asc" PIP_KEY_FILE=${BUILD_DIR}/pip-pub-key.gpg PIP_PUB_KEY=" -----BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1.4.12 (Darwin) -Comment: GPGTools - http://gpgtools.org - -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 -=0zqq + +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 +dCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABk +ZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5 +NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGlu +IElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAA +E6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dt +ZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBj +dXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQA +WQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA +0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkB +YAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQC +HQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwAD +CwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE +LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcF +hgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcH +GQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII +5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK +8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYN +QA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP +zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQS +oxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsV +vRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZ +IBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMc +zBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJgg +xCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNol +CSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWsp +nSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwu +gi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z +uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5 +Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/ +IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJF +VUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL +4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxS +x1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbha +B1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9h +omH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNp +mmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx +8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6 +pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eD +uoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqN +MY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+X +Cpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNih +R6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr +6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm2 +8Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePC +X8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO +Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHa +dtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn +H+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0 +NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////hAJhF +eGlmAABNTQAqAAAACAAGAQYAAwAAAAEAAgAAARIAAwAAAAEAAQAAARoABQAAAAEA +AABWARsABQAAAAEAAABeASgAAwAAAAEAAgAAh2kABAAAAAEAAABmAAAAAAAAAEgA +AAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAyKADAAQAAAABAAAA +zQAAAAD/2wBDAAICAgICAQICAgICAgIDAwYEAwMDAwcFBQQGCAcICAgHCAgJCg0L +CQkMCggICw8LDA0ODg4OCQsQEQ8OEQ0ODg7/2wBDAQICAgMDAwYEBAYOCQgJDg4O +Dg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg7/ +wAARCADNAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI +CQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEI +I0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZ +WmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2 +t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA +AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3 +AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom +JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaH +iImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna +4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDyfw7Pqmo2kN15EQlt1Zo0 +jG3cCMZ2/pXqSXNxY+H7Ga1t7m8vpyTKkgCpGp6Aepyfp1NeQ+FNcK+IlQSRpbuC +JzvyzL2AHqT0r1q11C+u7iazjtAkEWFQzchfc+v0oA3nXWbDWYptVtUWS7ttsWxt +wQdwPQ16NaatF4avoU1TTTPApiEktvOBEFJHyMTj2BH4VheJtP1PUfCOlalZgXl1 +aoBKANuU29APXv8AhWKmtaDrPw3m0bxFNZWN+EW809bmQqCYnAO4dgTxz60Afelz +4y+HOs/E74e+DPD9/NqHgmOQ/wBtrFIWt1upATChyckh8sQucELnivOPj/8AALw9 +4N8OzeKIdTvbSwijEccJKu99dyPhB1GDzzgehzXxVpXxO/sXVrLTW0u3tbFtWGo3 +EtpIA9wwK4jQ/wACADAPvmvqH4zfHvQ/Hmk3j6fApWSWA6W17JuFmIwA+wA/eZur +HPANAHiujNqh0q40qyieOO4ulV0YANJIg4yc9Bz9OTXoug+Kbqz08Wl5cSieCCaO +CwuXzGC68nHQ+ufpW18ItI8AeJtS1W48WateXOnqIvs0dm7K5nbBcZXnb2x3zX0N +qHwb+FUH7TGj31td382jzRvFcQeaHt4R5ZAG49txzk/3QKAPl/w/8QddTw/e6DLc +GLThlIIM5AkcgZx3fHAPYGvafgp498dQ/EiLQ9Jdb9rqbyZLeYbo1ABw2R0AznIr +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 +=1NFB -----END PGP PUBLIC KEY BLOCK----- " INSTALL_PIP=1 @@ -426,8 +830,8 @@ install_pip_securely() {
echo "[+] Verifying PGP signature of pip" echo "${PIP_PUB_KEY}" > ${PIP_KEY_FILE} - DO "gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --import $PIP_KEY_FILE" "0" - DO "gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --verify $PKG_VERIFY" "0" + DO "sudo gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --import $PIP_KEY_FILE" "0" + DO "sudo gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --verify $PKG_VERIFY" "0"
DO "tar xzf ${BUILD_DIR}/${PIP_PKG}" "0" DO "cd pip-*" "0" @@ -445,15 +849,10 @@ install_pip_securely() { exit fi fi - DO "python setup.py install" "0" + DO "sudo python setup.py install" "0"
}
-if [[ "$EUID" -ne "0" ]]; then - echo "Error: OONI setup dependencies script must be run as root." - exit 1 -fi - case $DISTRO_VERSION in natty|wheezy|squeeze|precise|n/a)
@@ -462,16 +861,16 @@ case $DISTRO_VERSION in DO "chmod 700 ${BUILD_DIR}" "0"
# Import the Tor public key - DO "gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --keyserver x-hkp://pool.sks-keyservers.net --recv-keys 0x886DDD89" "0" - gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add - + DO "sudo gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --keyserver x-hkp://pool.sks-keyservers.net --recv-keys 0x886DDD89" "0" + sudo gpg --homedir /root --no-default-keyring --keyring $TMP_KEYRING --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
HAVE_TOR_REPO="`grep deb.torproject.org/torproject.org /etc/apt/sources.list /etc/apt/sources.list.d/* 2>&1|grep torproject|head -n 1`"; if [ -z "$HAVE_TOR_REPO" ]; then echo "[-] It appears that you do not have the torproject.org Debian repository installed; installing it..."; if which apt-add-repository >/dev/null 2>&1; then - apt-add-repository "deb $TOR_DEB_REPO $DISTRO_VERSION main" + sudo apt-add-repository "deb $TOR_DEB_REPO $DISTRO_VERSION main" else - echo -e "deb $TOR_DEB_REPO $DISTRO_VERSION main\ndeb-src $TOR_DEB_REPO $DISTRO_VERSION main" | tee -a /etc/apt/sources.list + echo -e "deb $TOR_DEB_REPO $DISTRO_VERSION main\ndeb-src $TOR_DEB_REPO $DISTRO_VERSION main" | sudo tee -a /etc/apt/sources.list fi else echo "[.] It appears that you have the torproject.org Debian repository installed!"; @@ -479,46 +878,57 @@ case $DISTRO_VERSION in
# Install the basic packages to get pip ready to roll echo "[+] Updating OS package list..."; - apt-get update 2>&1 > /dev/null; + sudo sudo apt-get update 2>&1 > /dev/null; echo "[+] Installing packages for your system..."; - DO "apt-get -y install curl git-core python python-dev python-setuptools build-essential libdumbnet1 python-dumbnet python-libpcap python-dnspython tor tor-geoipdb libgeoip-dev" "0" + DO "sudo apt-get -y install curl git-core python python-dev python-setuptools build-essential libdumbnet1 python-dumbnet python-libpcap python-dnspython tor tor-geoipdb libgeoip-dev" "0"
if [ "${INSTALL_PIP}" -eq "1" ] ; then echo "[+] Installing pip securely" install_pip_securely fi
- if [ "$USE_VIRTUALENV" -eq "1" ]; then + if [ "$PRIV_MODE" -eq "0" ]; then echo "[+] Using virtualenvironment..." - DO "apt-get -y install python-virtualenv virtualenvwrapper" "0" - if [ ! -f ~/.virtualenvs/ooniprobe/bin/activate ]; then + DO "sudo apt-get -y install python-virtualenv virtualenvwrapper" "0" + if [ ! -f $HOME/.virtualenvs/ooniprobe/bin/activate ]; then # Set up the virtual environment - DO "mkdir -p ~/.virtualenvs" "0" - DO "virtualenv ~/.virtualenvs/ooniprobe" "0" - source ~/.virtualenvs/ooniprobe/bin/activate + DO "mkdir -p $HOME/.virtualenvs" "0" + DO "virtualenv $HOME/.virtualenvs/ooniprobe" "0" + source $HOME/.virtualenvs/ooniprobe/bin/activate else - source ~/.virtualenvs/ooniprobe/bin/activate + source $HOME/.virtualenvs/ooniprobe/bin/activate fi + echo "[+] Installing all of the Python dependency requirements with pip in your virtualenv!"; fi
- - echo "[+] Installing all of the Python dependency requirements with pip!"; + if [[ $PRIV_MODE -eq 1 ]]; then + echo "[+] Installing all of the Python dependency requirements with pip system wide!"; + # pip 1.5 needs this + DO "sudo pip install setuptools --no-use-wheel --upgrade" + fi
# Install all of the out of package manager dependencies DO "pip install -v --timeout 60 -r ${REPO_ROOT}/requirements.txt" "0" if [ $? != 0 ]; then - echo "[+] It appears that pip is having issues installing our Python dependency requirements, we'll try again!"; - DO "pip install -v --timeout 60 -r ${REPO_ROOT}/requirements.txt" "0" - if [ $? != 0 ]; then - echo "[+] It appears that pip is unable to satisfy our requirements - please run the following command:"; - echo " pip install -v --timeout 60 -r ${REPO_ROOT}/requirements.txt "; - exit 1; - fi + echo "[+] It appears that pip is having issues installing our Python dependency requirements, we'll try again!"; + DO "pip install -v --timeout 60 -r ${REPO_ROOT}/requirements.txt" "0" + if [ $? != 0 ]; then + echo "[+] It appears that pip is unable to satisfy our requirements - please run the following command:"; + echo " pip install -v --timeout 60 -r ${REPO_ROOT}/requirements.txt "; + exit 1; + fi fi - + + echo "" echo "You can now install ooniprobe with: " echo "" + + if [[ $PRIV_MODE -eq 0 ]]; then + echo "source $HOME/.virtualenvs/ooniprobe/bin/activate" + fi + echo "python setup.py install" + echo "" echo "You should also be sure to edit your configuration appropriately by doing:" echo ""