mirror of
https://github.com/RaspAP/raspap-webgui.git
synced 2024-11-22 15:40:22 +00:00
Tidy install loader, usage notes readability + examples
This commit is contained in:
parent
4e00b81940
commit
d7f5ee36e8
2 changed files with 124 additions and 106 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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 "$@"
|
||||
|
||||
|
|
Loading…
Reference in a new issue