mirror of
				https://github.com/billz/raspap-webgui.git
				synced 2025-03-01 10:31:47 +00:00 
			
		
		
		
	Refactor configure_networking, create get_linux_distro
This commit is contained in:
		@@ -8,49 +8,16 @@ raspap_dir="/etc/raspap"
 | 
			
		||||
raspap_user="www-data"
 | 
			
		||||
raspap_sudoers="/etc/sudoers.d/090_raspap"
 | 
			
		||||
raspap_dnsmasq="/etc/dnsmasq.d/090_raspap.conf"
 | 
			
		||||
raspap_sysctl="/etc/sysctl.d/90_raspap.conf"
 | 
			
		||||
raspap_iptables="/etc/raspap.iptables.rules"
 | 
			
		||||
webroot_dir="/var/www/html"
 | 
			
		||||
git_source_url="https://github.com/$repo"  # $repo from install.raspap.com
 | 
			
		||||
 | 
			
		||||
# Fetch details for various Linux distros
 | 
			
		||||
if type lsb_release >/dev/null 2>&1; then # linuxbase.org
 | 
			
		||||
    OS=$(lsb_release -si)
 | 
			
		||||
    RELEASE=$(lsb_release -sr)
 | 
			
		||||
    CODENAME=$(lsb_release -sc)
 | 
			
		||||
    DESC=$(lsb_release -sd)
 | 
			
		||||
elif [ -f /etc/os-release ]; then # freedesktop.org
 | 
			
		||||
    . /etc/os-release
 | 
			
		||||
    OS=$ID
 | 
			
		||||
    RELEASE=$VERSION_ID
 | 
			
		||||
    CODENAME=$VERSION_CODENAME
 | 
			
		||||
    DESC=$PRETTY_NAME
 | 
			
		||||
else
 | 
			
		||||
    install_error "Unsupported Linux distribution"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Set php package option based on Linux release version,
 | 
			
		||||
# abort if unsupported distro
 | 
			
		||||
case $RELEASE in
 | 
			
		||||
    "18.04") # Ubuntu 18.04 LTS
 | 
			
		||||
        php_package="php7.4-cgi"
 | 
			
		||||
        phpcgiconf="/etc/php/7.4/cgi/php.ini" ;;
 | 
			
		||||
    "10")
 | 
			
		||||
        php_package="php7.3-cgi"
 | 
			
		||||
        phpcgiconf="/etc/php/7.3/cgi/php.ini" ;;
 | 
			
		||||
    "9")
 | 
			
		||||
        php_package="php7.0-cgi"
 | 
			
		||||
        phpcgiconf="/etc/php/7.0/cgi/php.ini" ;;
 | 
			
		||||
    "8")
 | 
			
		||||
        install_error "${DESC} and php5 are not supported. Please upgrade." ;;
 | 
			
		||||
    *)
 | 
			
		||||
        install_error "${DESC} is unsupported. Please install on a supported distro." ;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
### NOTE: all the below functions are overloadable for system-specific installs
 | 
			
		||||
# 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"
 | 
			
		||||
    get_linux_distro
 | 
			
		||||
    echo "Detected OS: ${DESC}"
 | 
			
		||||
    echo "Using GitHub repository: ${repo} ${branch} branch"
 | 
			
		||||
    echo "Install directory: ${raspap_dir}"
 | 
			
		||||
@@ -76,14 +43,56 @@ function config_installation() {
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Determines host Linux distrubtion details
 | 
			
		||||
function get_linux_distro() {
 | 
			
		||||
    if type lsb_release >/dev/null 2>&1; then # linuxbase.org
 | 
			
		||||
        OS=$(lsb_release -si)
 | 
			
		||||
        RELEASE=$(lsb_release -sr)
 | 
			
		||||
        CODENAME=$(lsb_release -sc)
 | 
			
		||||
        DESC=$(lsb_release -sd)
 | 
			
		||||
    elif [ -f /etc/os-release ]; then # freedesktop.org
 | 
			
		||||
        . /etc/os-release
 | 
			
		||||
        OS=$ID
 | 
			
		||||
        RELEASE=$VERSION_ID
 | 
			
		||||
        CODENAME=$VERSION_CODENAME
 | 
			
		||||
        DESC=$PRETTY_NAME
 | 
			
		||||
    else
 | 
			
		||||
        install_error "Unsupported Linux distribution"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Sets php package option based on Linux release version,
 | 
			
		||||
# abort if unsupported distro
 | 
			
		||||
function set_php_package() {
 | 
			
		||||
    case $RELEASE in
 | 
			
		||||
        "18.04") # Ubuntu 18.04 LTS
 | 
			
		||||
            php_package="php7.4-cgi"
 | 
			
		||||
            phpcgiconf="/etc/php/7.4/cgi/php.ini" ;;
 | 
			
		||||
        "10")
 | 
			
		||||
            php_package="php7.3-cgi"
 | 
			
		||||
            phpcgiconf="/etc/php/7.3/cgi/php.ini" ;;
 | 
			
		||||
        "9")
 | 
			
		||||
            php_package="php7.0-cgi"
 | 
			
		||||
            phpcgiconf="/etc/php/7.0/cgi/php.ini" ;;
 | 
			
		||||
        "8")
 | 
			
		||||
            install_error "${DESC} and php5 are not supported. Please upgrade." ;;
 | 
			
		||||
        *)
 | 
			
		||||
            install_error "${DESC} is unsupported. Please install on a supported distro." ;;
 | 
			
		||||
    esac
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Runs a system software update to make sure we're using all fresh packages
 | 
			
		||||
function install_dependencies() {
 | 
			
		||||
    install_log "Installing required packages"
 | 
			
		||||
    set_php_package
 | 
			
		||||
    if [ "$php_package" = "php7.4-cgi" ]; then
 | 
			
		||||
        echo "Adding apt-repository ppa:ondrej/php"
 | 
			
		||||
        sudo add-apt-repository ppa:ondrej/php || install_error "Unable to add-apt-repository ppa:ondrej/php"
 | 
			
		||||
    fi
 | 
			
		||||
    sudo apt-get install $apt_option lighttpd git hostapd dnsmasq $php_package $dhcpcd_package vnstat qrencode || install_error "Unable to install dependencies"
 | 
			
		||||
    # Set dconf-set-selections
 | 
			
		||||
    echo iptables-persistent iptables-persistent/autosave_v4 boolean true | sudo debconf-set-selections
 | 
			
		||||
    echo iptables-persistent iptables-persistent/autosave_v6 boolean true | sudo debconf-set-selections
 | 
			
		||||
    sudo apt-get install $apt_option lighttpd git hostapd dnsmasq iptables-persistent $php_package $dhcpcd_package vnstat qrencode || install_error "Unable to install dependencies"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Enables PHP for lighttpd and restarts service for settings to take effect
 | 
			
		||||
@@ -226,11 +235,6 @@ function check_for_old_configs() {
 | 
			
		||||
        sudo ln -sf "$raspap_dir/backups/dhcpcd.conf.`date +%F-%R`" "$raspap_dir/backups/dhcpcd.conf"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [ -f $raspap_sysctl ]; then
 | 
			
		||||
        sudo cp $raspap_sysctl "$raspap_dir/backups/sysctl.d.`date +%F-%R`"
 | 
			
		||||
        sudo ln -sf "$raspap_dir/backups/sysctl.d.`date +%F-%R`" "$raspap_dir/backups/sysctl.d"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    for file in /etc/systemd/network/raspap-*.net*; do
 | 
			
		||||
        if [ -f "${file}" ]; then
 | 
			
		||||
            filename=$(basename $file)
 | 
			
		||||
@@ -283,30 +287,18 @@ function enable_raspap_daemon() {
 | 
			
		||||
    sudo systemctl enable raspap.service || install_error "Failed to enable raspap.service"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Configure IP forwarding, IP tables rules and RaspAP daemon
 | 
			
		||||
# Configure IP forwarding, set IP tables rules, prompt to install RaspAP daemon
 | 
			
		||||
function configure_networking() {
 | 
			
		||||
    install_log "Configuring networking"
 | 
			
		||||
    # Enable IP forwarding in /etc/sysctl.d/90_raspap.conf
 | 
			
		||||
    if [ ! -f $raspap_sysctl ]; then
 | 
			
		||||
        echo "Enabling IP forwarding"
 | 
			
		||||
        sudo touch $raspap_sysctl || install_error "Unable to create ${raspap_sysctl}"
 | 
			
		||||
        echo "net.ipv4.ip_forward = 1" | sudo tee -a $raspap_sysctl || install_error "Unable to append to ${raspap_sysctl}"
 | 
			
		||||
        sudo sysctl -p $raspap_sysctl || install_error "Unable to load sysctl settings from file"
 | 
			
		||||
    fi
 | 
			
		||||
    echo "Enabling IP forwarding"
 | 
			
		||||
    sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf || install_error "Unable to set IP forwarding"
 | 
			
		||||
    sudo sysctl -p /etc/sysctl.conf || install_error "Unable to execute sysctl"
 | 
			
		||||
 | 
			
		||||
    echo "Enabling persistent IP tables rules"
 | 
			
		||||
    if [ ! -f "/etc/iptables.raspap.rules" ]; then
 | 
			
		||||
        sudo cp "$webroot_dir/installers/iptables.rules" /etc/iptables.raspap.rules || install_error "Unable to move iptables.rules"
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    if [ ! -f "/etc/systemd/system/iptables.service" ]; then
 | 
			
		||||
        echo "Enabling iptables.service"
 | 
			
		||||
        sudo cp "$webroot_dir/installers/iptables.service" /etc/systemd/system/ || install_error "Unable to move iptables.service file"
 | 
			
		||||
        sudo update-alternatives --set iptables /usr/sbin/iptables-legacy || install_error "Unable to execute update-alternatives"
 | 
			
		||||
        sudo systemctl daemon-reload
 | 
			
		||||
        sudo systemctl enable iptables.service || install_error "Failed to enable iptables.service"
 | 
			
		||||
        sudo systemctl start iptables.service || install_error "Unable to start iptables.service"
 | 
			
		||||
    fi
 | 
			
		||||
    echo "Creating IP tables rules"
 | 
			
		||||
    sudo iptables -t nat -A POSTROUTING -j MASQUERADE || install_error "Unable to execute iptables"
 | 
			
		||||
    sudo iptables -t nat -A POSTROUTING -s 192.168.50.0/24 ! -d 192.168.50.0/24 -j MASQUERADE || install_error "Unable to execute iptables"
 | 
			
		||||
    echo "Persisting IP tables rules"
 | 
			
		||||
    sudo iptables-save | sudo tee $raspap_iptables
 | 
			
		||||
 | 
			
		||||
    # Prompt to install RaspAP daemon
 | 
			
		||||
    echo -n "Enable RaspAP control service (Recommended)? [Y/n]: "
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user