Tidy install loader, usage notes readability + examples

This commit is contained in:
billz 2020-12-16 10:01:11 +00:00
parent 4e00b81940
commit d7f5ee36e8
2 changed files with 124 additions and 106 deletions

View file

@ -2,8 +2,10 @@
#
# RaspAP installation functions
# Author: @billz <billzimmerman@gmail.com>
# Author URI: https://github.com/billz/
# License: GNU General Public License v3.0
#
# License URI: https://github.com/billz/raspap-webgui/blob/master/LICENSE
# 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.
@ -27,6 +29,27 @@ webroot_dir="/var/www/html"
git_source_url="https://github.com/$repo" # $repo from install.raspap.com
# NOTE: all the below functions are overloadable for system-specific installs
function _install_raspap() {
_display_welcome
_config_installation
_update_system_packages
_install_dependencies
_enable_php_lighttpd
_create_raspap_directories
_optimize_php
_check_for_old_configs
_download_latest_files
_change_file_ownership
_create_hostapd_scripts
_create_lighttpd_scripts
_move_config_file
_default_configuration
_configure_networking
_prompt_install_adblock
_prompt_install_openvpn
_patch_system_files
_install_complete
}
# Prompts user to set installation options
function _config_installation() {
@ -550,24 +573,3 @@ function _install_complete() {
fi
}
function _install_raspap() {
_display_welcome
_config_installation
_update_system_packages
_install_dependencies
_enable_php_lighttpd
_create_raspap_directories
_optimize_php
_check_for_old_configs
_download_latest_files
_change_file_ownership
_create_hostapd_scripts
_create_lighttpd_scripts
_move_config_file
_default_configuration
_configure_networking
_prompt_install_adblock
_prompt_install_openvpn
_patch_system_files
_install_complete
}

View file

@ -2,29 +2,24 @@
#
# RaspAP Quick Installer
# Author: @billz <billzimmerman@gmail.com>
# Author URI: https://github.com/billz/
# License: GNU General Public License v3.0
# License URI: https://github.com/billz/raspap-webgui/blob/master/LICENSE
#
# Usage: raspbian.sh options
#
# Installs an instance of RaspAP.
#
# Available options:
# -y, --yes, --assume-yes
# Assume "yes" as answer to all prompts and run non-interactively
# -c, --cert, --certficate
# Installs mkcert and generates an SSL certificate for lighttpd
# -o, --openvpn <flag>
# Used with -y, --yes, sets OpenVPN install option (0=no install)
# -a, --adblock <flag>
# Used with -y, --yes, sets Adblock install option (0=no install)
# -r, --repo, --repository <name>
# Overrides the default GitHub repo (billz/raspap-webgui)
# -b, --branch <name>
# Overrides the default git branch (master)
# -h, --help
# Outputs usage notes and exits
# -u, --upgrade
# Upgrades an existing installation to the latest release version
# -v, --version
# Outputs release info and exits
# OPTIONS:
# -y, --yes, --assume-yes Assume "yes" as answer to all prompts and run non-interactively
# -c, --cert, --certficate Installs mkcert and generates an SSL certificate for lighttpd
# -o, --openvpn <flag> Used with -y, --yes, sets OpenVPN install option (0=no install)
# -a, --adblock <flag> Used with -y, --yes, sets Adblock install option (0=no install)
# -r, --repo, --repository <name> Overrides the default GitHub repo (billz/raspap-webgui)
# -b, --branch <name> Overrides the default git branch (master)
# -h, --help Outputs usage notes and exits
# -u, --upgrade Upgrades an existing installation to the latest release version
# -v, --version Outputs release info and exits
#
# Depending on options passed to the installer, ONE of the following
# additional shell scripts will be downloaded and sourced:
@ -36,54 +31,16 @@
# 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.
# Fetch latest release from GitHub API
repo="billz/raspap-webgui" #override with -r, --repo option
readonly RASPAP_LATEST=$(curl -s "https://api.github.com/repos/$repo/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")' )
branch="$RASPAP_LATEST" #override with -b, --branch option
set -eo pipefail
function _setup_colors() {
ANSI_RED="\033[0;31m"
ANSI_GREEN="\033[0;32m"
ANSI_YELLOW="\033[0;33m"
ANSI_RASPBERRY="\033[0;35m"
ANSI_ERROR="\033[1;37;41m"
ANSI_RESET="\033[m"
}
function _main() {
# set defaults
repo="billz/raspap-webgui" # override with -r, --repo option
function _log_output() {
readonly LOGFILE_PATH="/tmp"
exec > >(tee -i $LOGFILE_PATH/raspap_install.log)
exec 2>&1
}
function _usage() {
cat << EOF
Usage: $(basename "$0") [OPTION]
Installs an instance of RaspAP.
Available options:
-y, --yes, --assume-yes
Assumes "yes" as an answer to all prompts
-c, --cert, --certificate
Installs an SSL certificate for lighttpd
-o, --openvpn <flag>
Used with -y, --yes, sets OpenVPN install option (0=no install)
-a, --adblock <flag>
Used with -y, --yes, sets Adblock install option (0=no install)
-r, --repo, --repository <name>
Overrides the default GitHub repo (billz/raspap-webgui)
-b, --branch <name>
Overrides the default git branch (latest release)
-h, --help
Outputs usage notes and exits
-u, --upgrade
Upgrades an existing installation to the latest release version
-v, --version
Outputs release info and exits
EOF
exit
_parse_params "$@"
_setup_colors
_log_output
_load_installer
}
function _parse_params() {
@ -94,7 +51,7 @@ function _parse_params() {
adblock_option=1
while :; do
case ${1} in
case "${1-}" in
-y|--yes|--assume-yes)
assume_yes=1
apt_option="-y"
@ -140,16 +97,57 @@ function _parse_params() {
done
}
function _version() {
echo -e "RaspAP v${RASPAP_LATEST} - Simple AP setup & WiFi management for Debian-based devices"
function _setup_colors() {
ANSI_RED="\033[0;31m"
ANSI_GREEN="\033[0;32m"
ANSI_YELLOW="\033[0;33m"
ANSI_RASPBERRY="\033[0;35m"
ANSI_ERROR="\033[1;37;41m"
ANSI_RESET="\033[m"
}
function _log_output() {
readonly LOGFILE_PATH="/tmp"
exec > >(tee -i $LOGFILE_PATH/raspap_install.log)
exec 2>&1
}
function _usage() {
cat << EOF
Usage: raspbian.sh options
Installs an instance of RaspAP.
OPTIONS:
-y, --yes, --assume-yes Assumes "yes" as an answer to all prompts
-c, --cert, --certificate Installs an SSL certificate for lighttpd
-o, --openvpn <flag> Used with -y, --yes, sets OpenVPN install option (0=no install)
-a, --adblock <flag> Used with -y, --yes, sets Adblock install option (0=no install)
-r, --repo, --repository <name> Overrides the default GitHub repo (billz/raspap-webgui)
-b, --branch <name> Overrides the default git branch (latest release)
-u, --upgrade Upgrades an existing installation to the latest release version
-v, --version Outputs release info and exits
-h, --help Outputs usage notes and exits
Examples:
Run locally specifying GitHub repo and branch:
raspbian.sh --repo foo/bar --branch my/branch
Run locally requesting release info:
raspbian.sh --version
Invoke installer remotely, run non-interactively with option flags:
curl -sL https://install.raspap.com | bash -s -- --yes --openvpn 1 --adblock 0
EOF
exit
}
_parse_params "$@"
_setup_colors
_log_output
UPDATE_URL="https://raw.githubusercontent.com/$repo/$branch/"
function _version() {
_get_release
echo -e "RaspAP v${RASPAP_LATEST} - Simple AP setup & WiFi management for Debian-based devices"
exit
}
# Outputs a welcome message
function _display_welcome() {
@ -166,6 +164,11 @@ function _display_welcome() {
echo -e "The Quick Installer will guide you through a few easy steps${ANSI_RESET}\n\n"
}
# Fetch latest release from GitHub API
function _get_release() {
readonly RASPAP_LATEST=$(curl -s "https://api.github.com/repos/$repo/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")' )
}
# Outputs a RaspAP Install log line
function _install_log() {
echo -e "${ANSI_GREEN}RaspAP Install: $1${ANSI_RESET}"
@ -197,15 +200,28 @@ function _update_system_packages() {
}
# Fetch required installer functions
if [ "${install_cert:-}" = 1 ]; then
source="mkcert"
wget -q ${UPDATE_URL}installers/${source}.sh -O /tmp/raspap_${source}.sh
source /tmp/raspap_${source}.sh && rm -f /tmp/raspap_${source}.sh
_install_certificate || _install_status 1 "Unable to install certificate"
else
source="common"
wget -q ${UPDATE_URL}installers/${source}.sh -O /tmp/raspap_${source}.sh
source /tmp/raspap_${source}.sh && rm -f /tmp/raspap_${source}.sh
_install_raspap || _install_status 1 "Unable to install RaspAP"
fi
function _load_installer() {
# fetch latest release tag
_get_release
# assign default branch if not defined with -b, --branch option
if [ -z ${branch} ]; then
branch=$RASPAP_LATEST
fi
UPDATE_URL="https://raw.githubusercontent.com/$repo/$branch/"
if [ "${install_cert:-}" = 1 ]; then
source="mkcert"
wget -q ${UPDATE_URL}installers/${source}.sh -O /tmp/raspap_${source}.sh
source /tmp/raspap_${source}.sh && rm -f /tmp/raspap_${source}.sh
_install_certificate || _install_status 1 "Unable to install certificate"
else
source="common"
wget -q ${UPDATE_URL}installers/${source}.sh -O /tmp/raspap_${source}.sh
source /tmp/raspap_${source}.sh && rm -f /tmp/raspap_${source}.sh
_install_raspap || _install_status 1 "Unable to install RaspAP"
fi
}
_main "$@"