#!/bin/bash set -e SOURCE_DOWNLOAD=http://www.ptokax.org/files/0.5.0.2-nix-src.tgz SOURCE_MD5=897d9793554b7e85e3ca84d9781cb670 INSTALL_DIR=/opt/PtokaX/ GENERATE_USERNAME=ptokax fatal() { echo "FATAL: $1" 1>&2 exit 1 } dependencies() { # base64 and md5sum are in coreutils for dep in build-essential wget liblua5.2 liblua5.2-dev zlib1g zlib1g-dev authbind procps ; do if [[ $UID != 0 ]] ; then fatal "Need root to install $dep" fi if ! dpkg -s "$dep" > /dev/null 2>&1 ; then apt-get -y install "$dep" fi done } download() { local dest=$(mktemp) wget "$SOURCE_DOWNLOAD" -O "$dest" local got_hash=$(md5sum "$dest" | cut -d' ' -f1) if [[ $got_hash != $SOURCE_MD5 ]] ; then fatal "MD5 Mismatch" fi mkdir -p "${INSTALL_DIR}" cd "${INSTALL_DIR}" tar zxf "$dest" rm "$dest" mv PtokaX build cd build sed -i 's/lua5.1/lua5.2/' makefile sed -i 's/lua51/lua52/' makefile make -j4 rm -r core skein obj tinyxml ico rm makefile compile.txt cd ../ mv build/* . rmdir build cp -R cfg.example cfg sed -i 's/AutoRegister">1/AutoRegister">0/' cfg/Settings.xml sed -i -r 's/HubAddress">.+0.0.0.0"${INSTALL_DIR}service/stdout" \\ 2>"${INSTALL_DIR}service/stderr" \\ & exit 0 ;; restart|force-reload) /etc/init.d/ptokax stop /etc/init.d/ptokax start exit 0 ;; stop) pkill PtokaX exit 0 ;; status) pidof PtokaX >/dev/null exit $? ;; *) echo "Usage: /etc/init.d/ptokax {start|stop|restart|status}" exit 2 ;; esac EOF } install_init_script() { build_init_script > /etc/init.d/ptokax chown root:root /etc/init.d/ptokax chmod 755 /etc/init.d/ptokax update-rc.d ptokax defaults } main() { if [[ $USER == "root" ]] ; then if [[ "$BASH_SOURCE" == "" ]] ; then fatal "Running from pipe is unsupported" fi dependencies create_user create_dir cat "$BASH_SOURCE" | su "$GENERATE_USERNAME" -c "bash -s" allow_bind install_init_script service ptokax start elif [[ $USER == $GENERATE_USERNAME ]] ; then download else fatal "Please run as root" fi exit 0 } main