diff --git a/Scripts/installer.sh b/Scripts/installer.sh index 8d1c8b6..af1e0b3 100644 --- a/Scripts/installer.sh +++ b/Scripts/installer.sh @@ -1 +1,104 @@ +install_prerequisites(){ + p "Installing pre-requisites..." + spin_it "goland-go (1/5)" sudo apt-get install -y golang-go + spin_it "gum       (2/5)" go install github.com/charmbracelet/gum@latest && sleep 0.1 + spin_it "git       (3/5)" sudo apt-get install -y git && sleep 0.1 + spin_it "tor       (4/5)" sudo apt-get install -y tor && sleep 0.1 + spin_it "curl      (5/5)" sudo apt-get install -y curl && sleep 0.1 +} + +go_to_install_directory(){ + echo "" + cd ~ + local install_folder="$(pwd)/shurikenpi" + p "Install directory will be: $install_folder" + if [ -d $install_folder ]; then + echo "" + p_warn "An existing installation of ShurikenPi was detected!" + ask_yes_or_no "Would you like to re-install ShurikenPi and wipe the existing installation?" + local result=$? + if [ $result == 0 ]; then + rm -fr $install_folder + else + p_err "Fatal: Aborting the installation script now" + exit 1 + fi + fi + mkdir $install_folder + cd $install_folder +} + +check_if_root(){ + echo "" + p "Root user check..." + + if [[ $EUID -ne 0 ]]; then + echo "" + echo -e " ShurikenPi called with non-root priviledeges \033[31m:(\033[0m" + echo -e " Elevated priviledeges are required to install and run ShurikenPi" + echo -e " Please check the installer for any concerns about this requirement" + echo -e " Make sure you downloaded this script from a trusted source" + echo "" + if sudo true; then + p "Correct password." + else + p_err "Wrong password. Exiting." + exit 1 + fi + fi + p_ok "We are root :)" +} + +do_update() { + spin_it "Updating, please wait..." sudo apt update +} + +check_if_upgrade(){ + + UPGRADABLE_COUNT=$(apt list --upgradable 2>/dev/null | grep -c ^) + if (( UPGRADABLE_COUNT > 0 )); then + p_warn "There are $UPGRADABLE_COUNT packages that can be upgraded." + p_warn "It is recommended to run 'sudo apt upgrade' after ShurikenPi installation" + else + p "All packages are up to date." + fi +} + +clone_repository(){ + spin_it "Downloading ShurikenPi, please wait..." git clone https://github.com/Urban-Hacker/shurikenpi.io/ +} + +create_tmp_log_directory() { + rm -fr /tmp/shuriken 2>&1 + mkdir /tmp/shuriken 2>&1 +} + + +VERBOSE=0 + +# check if -v is passed as argument +while getopts ":v" option; do + case "${option}" in + v) + VERBOSE=1 + ;; + *) + echo "Usage: $0 [-v]" + exit 1 + ;; + esac +done + +create_tmp_log_directory + +# Entry point +check_if_root +do_update +install_prerequisites +check_if_upgrade +go_to_install_directory +clone_repository +cd ./shuriken/Tools/ +chmod +x dependencies.sh +./dependencies.sh \ No newline at end of file