From e8c9587f5a6f8e00334d1baa6546a9ca0f1bd94d Mon Sep 17 00:00:00 2001 From: billz Date: Mon, 18 Nov 2019 11:51:59 +0000 Subject: [PATCH] Added OpenVPN install option. addresses #147 --- installers/common.sh | 82 +++++++++++++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 24 deletions(-) diff --git a/installers/common.sh b/installers/common.sh index 2a300531..728ceefe 100755 --- a/installers/common.sh +++ b/installers/common.sh @@ -37,14 +37,15 @@ fi ### NOTE: all the below functions are overloadable for system-specific installs +# Prompts user to set options for installation function config_installation() { install_log "Configure installation" echo "Detected ${version_msg}" echo "Install directory: ${raspap_dir}" - echo -n "Install to Lighttpd root directory: ${webroot_dir}? [y/N]: " - if [ $assume_yes == 0 ]; then + echo -n "Install to Lighttpd root directory: ${webroot_dir}? [Y/n]: " + if [ "$assume_yes" == 0 ]; then read answer - if [[ $answer != "y" ]]; then + if [ "$answer" != "${answer#[Nn]}" ]; then read -e -p "Enter alternate Lighttpd directory: " -i "/var/www/html" webroot_dir fi else @@ -52,10 +53,10 @@ function config_installation() { fi echo "Install to Lighttpd directory: ${webroot_dir}" - echo -n "Complete installation with these values? [y/N]: " - if [ $assume_yes == 0 ]; then + echo -n "Complete installation with these values? [Y/n]: " + if [ "$assume_yes" == 0 ]; then read answer - if [[ $answer != "y" ]]; then + if [ "$answer" != "${answer#[Nn]}" ]; then echo "Installation aborted." exit 0 fi @@ -76,7 +77,7 @@ function enable_php_lighttpd() { sudo lighttpd-enable-mod fastcgi-php sudo service lighttpd force-reload - sudo /etc/init.d/lighttpd restart || install_error "Unable to restart lighttpd" + sudo systemctl restart lighttpd.service || install_error "Unable to restart lighttpd" } # Verifies existence and permissions of RaspAP directory @@ -115,18 +116,42 @@ function create_hostapd_scripts() { # Generate lighttpd service control scripts function create_lighttpd_scripts() { install_log "Creating lighttpd control scripts" - sudo mkdir $raspap_dir/lighttpd || install_error "Unable to create directory '$raspap_dir/lighttpd" + sudo mkdir $raspap_dir/lighttpd || install_error "Unable to create directory '$raspap_dir/lighttpd" # Move service control shell scripts sudo cp "$webroot_dir/installers/"configport.sh "$raspap_dir/lighttpd" || install_error "Unable to move service control scripts" - # Make configport.sh writable by www-data group. + # Make configport.sh writable by www-data group sudo chown -c root:"$raspap_user" "$raspap_dir/lighttpd/"*.sh || install_error "Unable change owner and/or group" sudo chmod 750 "$raspap_dir/lighttpd/"*.sh || install_error "Unable to change file permissions" } +# Prompt to install openvpn +function prompt_install_openvpn() { + install_log "Setting up OpenVPN support (beta)" + echo -n "Install OpenVPN and enable client configuration? [Y/n]: " + if [ "$assume_yes" == 0 ]; then + read answer + if [ "$answer" != "${answer#[Nn]}" ]; then + echo -e + else + install_openvpn + fi + else + install_openvpn + fi +} + +# Install openvpn and enable client configuration option +function install_openvpn() { + install_log "Installing OpenVPN and enabling client configuration" + sudo apt-get install -y openvpn || install_error "Unable to install openvpn" + sudo sed -i "s/\('RASPI_OPENVPN_ENABLED', \)false/\1true/g" "$webroot_dir/includes/config.php" || install_error "Unable to modify config.php" + create_openvpn_scripts || install_error "Unable to create openvpn control scripts" +} + # Generate openvpn logging and auth control scripts function create_openvpn_scripts() { - install_log "Creating openvpn logging & controlscripts" + install_log "Creating OpenVPN control scripts" sudo mkdir $raspap_dir/openvpn || install_error "Unable to create directory '$raspap_dir/openvpn'" # Move service auth control shell scripts @@ -238,9 +263,11 @@ function default_configuration() { # Prompt to install RaspAP daemon echo -n "Enable RaspAP control service (Recommended)? [Y/n]: " - if [ $assume_yes == 0 ]; then + if [ "$assume_yes" == 0 ]; then read answer - if [ "$answer" != 'n' ] && [ "$answer" != 'N' ]; then + if [ "$answer" != "${answer#[Nn]}" ]; then + echo -e + else enable_raspap_daemon fi else @@ -265,9 +292,7 @@ function sudo_add() { # Adds www-data user to the sudoers file with restrictions on what the user can execute function patch_system_files() { - # add symlink to prevent wpa_cli cmds from breaking with multiple wlan interfaces - install_log "symlinked wpa_supplicant hooks for multiple wlan interfaces" - sudo ln -s /usr/share/dhcpcd/hooks/10-wpa_supplicant /etc/dhcp/dhclient-enter-hooks.d/ + # Set commands array cmds=( "/sbin/ifdown" @@ -308,7 +333,7 @@ function patch_system_files() { if [ $(sudo grep -c $raspap_user /etc/sudoers) -ne 28 ] then # Sudoers file has incorrect number of commands. Wiping them out. - install_log "Cleaning sudoers file" + install_log "Cleaning system sudoers file" sudo sed -i "/$raspap_user/d" /etc/sudoers install_log "Patching system sudoers file" # patch /etc/sudoers file @@ -321,7 +346,12 @@ function patch_system_files() { install_log "Sudoers file already patched" fi + # add symlink to prevent wpa_cli cmds from breaking with multiple wlan interfaces + install_log "Symlinked wpa_supplicant hooks for multiple wlan interfaces" + sudo ln -s /usr/share/dhcpcd/hooks/10-wpa_supplicant /etc/dhcp/dhclient-enter-hooks.d/ + # Unmask and enable hostapd.service + install_log "Unmasking and enabling hostapd service" sudo systemctl unmask hostapd.service sudo systemctl enable hostapd.service } @@ -341,10 +371,12 @@ function optimize_php() { sudo ln -sf "$raspap_dir/backups/php.ini.$datetimephpconf" "$raspap_dir/backups/php.ini" echo -n "Enable HttpOnly for session cookies (Recommended)? [Y/n]: " - if [ $assume_yes == 0 ]; then + if [ "$assume_yes" == 0 ]; then read answer - if [ "$answer" != 'n' ] && [ "$answer" != 'N' ]; then - php_session_cookie=1; + if [ "$answer" != "${answer#[Nn]}" ]; then + echo -e + else + php_session_cookie=1; fi fi @@ -355,9 +387,11 @@ function optimize_php() { if [ "$php_package" = "php7.1-cgi" ]; then echo -n "Enable PHP OPCache (Recommended)? [Y/n]: " - if [ $assume_yes == 0 ]; then + if [ "$assume_yes" == 0 ]; then read answer - if [ "$answer" != 'n' ] && [ "$answer" != 'N' ]; then + if [ "$answer" != "${answer#[Nn]}" ]; then + echo -e + else php_opcache=1; fi fi @@ -378,13 +412,13 @@ function optimize_php() { function install_complete() { install_log "Installation completed!" - if [ $assume_yes == 0 ]; then + if [ "$assume_yes" == 0 ]; then # Prompt to reboot if wired ethernet (eth0) is connected. # With default_configuration this will create an active AP on restart. if ip a | grep -q ': eth0:.*state UP'; then echo -n "The system needs to be rebooted as a final step. Reboot now? [y/N]: " read answer - if [[ $answer != "y" ]]; then + if [ "$answer" != "${answer#[Nn]}" ]; then echo "Installation reboot aborted." exit 0 fi @@ -406,9 +440,9 @@ function install_raspap() { change_file_ownership create_hostapd_scripts create_lighttpd_scripts - create_openvpn_scripts move_config_file default_configuration + prompt_install_openvpn patch_system_files install_complete }