Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor install for #1477 #1518

Merged
merged 13 commits into from
Mar 9, 2018
199 changes: 113 additions & 86 deletions install
Original file line number Diff line number Diff line change
Expand Up @@ -8,127 +8,154 @@
set -euo pipefail
IFS=$'\n\t'

clear

if [ -f core/main/console/beef.ascii ] ; then
cat core/main/console/beef.ascii
echo
fi
info() { echo -e "\\033[1;36m[INFO]\\033[0m $*"; }
warn() { echo -e "\\033[1;33m[WARNING]\\033[0m $*"; }
fatal() { echo -e "\\033[1;31m[FATAL]\\033[0m $*"; exit 1 ; }

echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#"
echo " -- [ BeEF Installer ] -- "
echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#"
echo

command_exists () {

command -v "$1" /dev/null 2&>/dev/null
}

info() { echo "[INFO] $*"; }
warn() { echo "[WARN] $*"; }
error() { echo "[ERROR] $*"; }
fatal() { echo "[FATAL] $*"; exit 1 ; }

warn 'This script will install BeEF and its required dependencies (including operating system packages).'
read -p "Are you sure you wish to continue (Y/n)? "
if [ "`echo ${REPLY} | tr [:upper:] [:lower:]`" = "n" ] ; then
fatal 'Installation aborted'
fi
get_permission () {

warn 'This script will install BeEF and its required dependencies (including operating system packages).'

read -rp "Are you sure you wish to continue (Y/n)? "
if [ "$(echo "${REPLY}" | tr "[:upper:]" "[:lower:]")" = "n" ] ; then
fatal 'Installation aborted'
fi
}


check_os () {

info "Detecting OS..."

OS=$(uname)
readonly OS
info "Operating System: $OS"
if [ "${OS}" = "Linux" ] ; then
info "Launching Linux install..."
install_linux
elif [ "${OS}" = "Darwin" ]; then
info "Launching Mac OSX install..."
install_mac
else
fatal "Unable to locate installer for your Operating system: $OS"
fi
}


install_linux () {

info "Detecting Linux OS distribution..."

Distro=''
if [ -f /etc/redhat-release ] ; then
Distro='RedHat'
elif [ -f /etc/debian_version ] ; then
Distro='Debian'
elif [ -f /etc/os-release ] ; then
DISTRO_ID=`grep ^ID= /etc/os-release | cut -d= -f2-`
if [ "$DISTRO_ID" = 'kali' ] ; then
DISTRO_ID=$(grep ^ID= /etc/os-release | cut -d= -f2-)
if [ "${DISTRO_ID}" = 'kali' ] ; then
Distro='Kali'
fi
fi

if [ -z $Distro ] ; then
fatal "Unable to locate installer for your $OS distribution"
if [ -z "${Distro}" ] ; then
fatal "Unable to locate installer for your ${OS} distribution"
fi

readonly Distro
info "OS Distribution: $Distro"
info "Installing $Distro prerequisite packages..."
if [ "$Distro" = "Debian" -o "$Distro" = "Kali" ]; then
info "OS Distribution: ${Distro}"
info "Installing ${Distro} prerequisite packages..."
if [ "${Distro}" = "Debian" ] || [ "${Distro}" = "Kali" ]; then
sudo apt-get update
sudo apt-get install curl git build-essential openssl libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev autoconf libc6-dev libncurses5-dev automake libtool bison subversion nodejs
elif [ "$Distro" = "RedHat" ]; then
elif [ "${Distro}" = "RedHat" ]; then
sudo yum install -y git make gcc openssl-devel gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel bzip2 autoconf automake libtool bison iconv-devel sqlite-devel nodejs
fi
}


install_mac () {
# brew install ...
echo
}

info "Detecting OS..."
OS=`uname`
readonly OS
info "Operating System: $OS"
if [ "${OS}" = "Linux" ] ; then
info "Launching Linux install..."
install_linux
elif [ "$OS" = "Darwin" ]; then
info "Launching Mac OSX install..."
install_mac
else
fatal "Unable to locate installer for your Operating system: $OS"
fi

info 'Detecting Ruby environment...'
MIN_RUBY_VER='2.3'
if command_exists ruby
then
RUBY_VERSION=`ruby -e "puts RUBY_VERSION"`
info "Ruby version ${RUBY_VERSION} is installed"
if [ `ruby -e "puts RUBY_VERSION.to_f >= ${MIN_RUBY_VER}"` = 'false' ]

check_ruby_version () {

info 'Detecting Ruby environment...'

MIN_RUBY_VER='2.3'
if command_exists ruby
then
fatal "Ruby version ${RUBY_VERSION} is not supported. Please install Ruby ${MIN_RUBY_VER} (or newer) and restart the installer."
RUBY_VERSION=$(ruby -e "puts RUBY_VERSION")
info "Ruby version ${RUBY_VERSION} is installed"
if [ "$(ruby -e "puts RUBY_VERSION.to_f >= ${MIN_RUBY_VER}")" = 'false' ]
then
fatal "Ruby version ${RUBY_VERSION} is not supported. Please install Ruby ${MIN_RUBY_VER} (or newer) and restart the installer."
fi
else
fatal "Ruby is not installed. Please install Ruby ${MIN_RUBY_VER} (or newer) and restart the installer."
fi
else
fatal "Ruby is not installed. Please install Ruby ${MIN_RUBY_VER} (or newer) and restart the installer."
fi

#if command_exists rbenv
#then
# info 'rbenv is installed'
#elif command_exists rvm
#then
# info 'rvm is installed'
#else
# fatal 'Could not find Ruby environment manager!
#Please install either RVM or rbenv and restart the installer
#For more information:
# * rbenv: https://github.com/rbenv/rbenv
# * rvm: https://rvm.io/rvm/install'
#fi

info 'Detecting bundler gem...'
if command_exists bundler
then
info 'bundler gem is installed'
else
info 'Installing bundler gem'
gem install bundler
fi

info "Installing required Ruby gems..."
bundle install --without test development

echo
echo "=========================================="
echo
echo " Install completed successfully!"
echo " Run './beef' to launch BeEF"
echo
echo "=========================================="
echo
}


check_bundler () {

info 'Detecting bundler gem...'

if command_exists bundler
then
info 'bundler gem is installed'
else
info 'Installing bundler gem'
gem install bundler
fi
}


install_beef () {

echo "Installing required Ruby gems..."
bundle install --without test development

echo
echo "=========================================="
echo
info "Install completed successfully!"
info "Run './beef' to launch BeEF"
echo
echo "=========================================="
echo
}


main () {

clear

if [ -f core/main/console/beef.ascii ] ; then
cat core/main/console/beef.ascii
echo
fi

echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#"
echo " -- [ BeEF Installer ] -- "
echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#"
echo

get_permission
check_os
check_ruby_version
check_bundler
install_beef
}

main "$@"