raspap-webgui/installers/raspbian.sh

181 lines
5.5 KiB
Bash
Raw Normal View History

#!/bin/bash
#
# RaspAP Quick Installer
2020-03-23 10:31:18 +01:00
# Author: @billz <billzimmerman@gmail.com>
# License: GNU General Public License v3.0
#
2019-12-09 13:07:57 +01:00
# Usage:
#
# -y, --yes, --assume-yes
2019-12-01 10:45:06 +01:00
# Assume "yes" as answer to all prompts and run non-interactively
2019-11-07 21:12:41 +01:00
# c, --cert, --certficate
2019-12-01 10:45:06 +01:00
# Installs mkcert and generates an SSL certificate for lighttpd
# -o, --openvpn <flag>
2019-12-01 10:45:06 +01:00
# Used with -y, --yes, sets OpenVPN install option (0=no install)
2020-04-13 09:49:18 +02:00
# -a, --adblock <flag>
# Used with -y, --yes, sets Adblock install option (0=no install)
2019-12-01 10:45:06 +01:00
# -r, --repo, --repository <name>
# Overrides the default GitHub repo (billz/raspap-webgui)
# -b, --branch <name>
2019-12-01 10:45:06 +01:00
# Overrides the default git branch (master)
# -h, --help
# Outputs usage notes and exits
# -u, --upgrade
# Upgrades an existing installation to the latest release version
2019-12-01 10:45:06 +01:00
# -v, --version
# Outputs release info and exits
2020-01-15 18:47:09 +01:00
#
# Depending on options passed to the installer, ONE of the following
# additional shell scripts will be downloaded and sourced:
#
2020-03-05 22:47:46 +01:00
# https://raw.githubusercontent.com/billz/raspap-webgui/master/installers/common.sh
2020-01-15 18:47:09 +01:00
# - or -
2020-03-05 22:47:46 +01:00
# https://raw.githubusercontent.com/billz/raspap-webgui/master/installers/mkcert.sh
2020-03-23 10:31:18 +01:00
#
# You are not obligated to bundle the LICENSE file with your RaspAP projects as long
# as you leave these references intact in the header comments of your source files.
2019-12-09 13:07:57 +01:00
# Set defaults
repo="billz/raspap-webgui"
branch="master"
2019-12-01 10:45:06 +01:00
assume_yes=0
upgrade=0
2019-12-01 10:45:06 +01:00
ovpn_option=1
2020-04-13 09:49:18 +02:00
adblock_option=1
# Define colors
readonly ANSI_RED="\033[0;31m"
readonly ANSI_GREEN="\033[0;32m"
readonly ANSI_YELLOW="\033[0;33m"
readonly ANSI_RASPBERRY="\033[0;35m"
readonly ANSI_ERROR="\033[1;37;41m"
readonly ANSI_RESET="\033[m"
# Fetch latest release from GitHub API
2020-03-23 10:31:18 +01:00
readonly RASPAP_LATEST=$(curl -s "https://api.github.com/repos/$repo/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")' )
2019-12-09 13:07:57 +01:00
# Define usage notes
2019-11-11 20:18:20 +01:00
usage=$(cat << EOF
Usage: raspbian.sh [OPTION]\n
-y, --yes, --assume-yes\n\tAssumes "yes" as an answer to all prompts
2019-11-28 10:45:54 +01:00
-c, --cert, --certificate\n\tInstalls an SSL certificate for lighttpd
-o, --openvpn <flag>\n\tUsed with -y, --yes, sets OpenVPN install option (0=no install)
2020-04-13 09:49:18 +02:00
-a, --adblock <flag>\n\tUsed with -y, --yes, sets Adblock install option (0=no install)
-r, --repo, --repository <name>\n\tOverrides the default GitHub repo (billz/raspap-webgui)
2019-11-28 10:45:54 +01:00
-b, --branch <name>\n\tOverrides the default git branch (master)
2019-12-01 10:45:06 +01:00
-h, --help\n\tOutputs usage notes and exits
-u, --upgrade\n\tUpgrades an existing installation to the latest release version
2019-12-01 10:45:06 +01:00
-v, --version\n\tOutputs release info and exits\n
2019-11-11 20:18:20 +01:00
EOF
)
2019-11-07 09:44:13 +01:00
2019-12-09 13:07:57 +01:00
# Parse command-line options
2019-11-07 09:44:13 +01:00
while :; do
case $1 in
-y|--yes|--assume-yes)
assume_yes=1
apt_option="-y"
;;
-o|--openvpn)
ovpn_option="$2"
shift
;;
2020-03-31 23:54:46 +02:00
-a|--adblock)
2020-04-13 09:49:18 +02:00
adblock_option="$2"
shift
2020-03-31 23:54:46 +02:00
;;
2019-11-07 21:12:41 +01:00
-c|--cert|--certificate)
install_cert=1
;;
-r|--repo|--repository)
repo="$2"
shift
;;
-b|--branch)
branch="$2"
shift
;;
2019-11-11 20:24:01 +01:00
-h|--help)
printf "$usage"
exit 1
;;
-u|--upgrade)
upgrade=1
;;
2019-12-01 10:45:06 +01:00
-v|--version)
printf "RaspAP v${RASPAP_LATEST} - Simple AP setup & WiFi management for Debian-based devices\n"
2019-12-01 10:45:06 +01:00
exit 1
;;
-*|--*)
echo "Unknown option: $1"
2019-11-11 20:18:20 +01:00
printf "$usage"
exit 1
;;
*)
2019-11-07 09:44:13 +01:00
break
;;
esac
shift
2019-09-30 19:58:12 +02:00
done
UPDATE_URL="https://raw.githubusercontent.com/$repo/$branch/"
2019-11-07 09:44:13 +01:00
# Outputs a welcome message
2020-03-23 10:31:18 +01:00
function _display_welcome() {
echo -e "${ANSI_RASPBERRY}\n"
2019-11-07 09:44:13 +01:00
echo -e " 888888ba .d888888 888888ba"
echo -e " 88 8b d8 88 88 8b"
echo -e "a88aaaa8P' .d8888b. .d8888b. 88d888b. 88aaaaa88a a88aaaa8P"
echo -e " 88 8b. 88 88 Y8ooooo. 88 88 88 88 88"
echo -e " 88 88 88. .88 88 88. .88 88 88 88"
echo -e " dP dP 88888P8 88888P 88Y888P 88 88 dP"
echo -e " 88"
echo -e " dP version ${RASPAP_LATEST}"
echo -e "${ANSI_GREEN}"
echo -e "The Quick Installer will guide you through a few easy steps${ANSI_RESET}\n\n"
2019-11-07 09:44:13 +01:00
}
# Outputs a RaspAP Install log line
2020-03-23 10:31:18 +01:00
function _install_log() {
echo -e "${ANSI_GREEN}RaspAP Install: $1${ANSI_RESET}"
2019-11-07 09:44:13 +01:00
}
2020-04-25 23:06:02 +02:00
# Outputs a RaspAP divider
function _install_divider() {
echo -e "\033[1;32m***************************************************************$*\033[m"
}
# Outputs a RaspAP status indicator
function _install_status() {
case $1 in
0)
echo -e "[$ANSI_GREEN \U2713 ok $ANSI_RESET] $2"
;;
1)
echo -e "[$ANSI_RED \U2718 error $ANSI_RESET] $ANSI_ERROR $2 $ANSI_RESET"
;;
2)
echo -e "[$ANSI_YELLOW \U26A0 warning $ANSI_RESET] $2"
;;
esac
2019-11-07 11:41:56 +01:00
}
2020-03-23 10:31:18 +01:00
function _update_system_packages() {
_install_log "Updating sources"
sudo apt-get update || _install_error "Unable to update package list"
2016-06-16 12:03:29 +02:00
}
2019-12-09 13:07:57 +01:00
# Fetch required installer functions
2019-11-07 09:44:13 +01:00
if [ "${install_cert:-}" = 1 ]; then
source="mkcert"
2019-11-07 21:12:41 +01:00
wget -q ${UPDATE_URL}installers/${source}.sh -O /tmp/raspap_${source}.sh
2019-11-07 14:48:30 +01:00
source /tmp/raspap_${source}.sh && rm -f /tmp/raspap_${source}.sh
2020-04-19 13:35:29 +02:00
_install_certificate || _install_status 1 "Unable to install certificate"
2019-11-07 09:44:13 +01:00
else
source="common"
2019-11-07 21:12:41 +01:00
wget -q ${UPDATE_URL}installers/${source}.sh -O /tmp/raspap_${source}.sh
2019-11-07 14:48:30 +01:00
source /tmp/raspap_${source}.sh && rm -f /tmp/raspap_${source}.sh
2020-04-19 13:35:29 +02:00
_install_raspap || _install_status 1 "Unable to install RaspAP"
2019-11-07 09:44:13 +01:00
fi