diff --git a/README.md b/README.md index bedb323f..5172431c 100644 --- a/README.md +++ b/README.md @@ -36,15 +36,22 @@ $ wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap ``` The installer will complete the steps in the manual installation (below) for you. +After the reboot at the end of the installation the wireless network will be +configured as an access point as follows: +* IP address: 10.3.141.1 +* DHCP range: 10.3.141.50 to 10.3.141.255 +* SSID: `raspi-webgui` +* Password: ChangeMe + ## Manual installation -Start off by installing lighttpd and php5. +Start off by installing lighttpd, php5, hostapd and dnsmasq. ```sh -$ sudo apt-get install lighttpd php5-cgi +$ sudo apt-get install lighttpd php5-cgi hostapd dnsmasq ``` After that, enable PHP for lighttpd and restart it for the settings to take effect. ```sh sudo lighty-enable-mod fastcgi-php -sudo /etc/init.d/lighttpd restart +sudo service lighttpd restart ``` Now comes the fun part. For security reasons, the `www-data` user which lighttpd runs under is not allowed to start or stop daemons, or run commands like ifdown and ifup, all of which we want our page to do. So what I have done is added the `www-data` user to the sudoers file, but with restrictions on what commands the user can run. diff --git a/config/default_hostapd b/config/default_hostapd new file mode 100644 index 00000000..f3549a63 --- /dev/null +++ b/config/default_hostapd @@ -0,0 +1,12 @@ +# Location of hostapd configuration file +DAEMON_CONF="/etc/hostapd/hostapd.conf" + +# Additional daemon options to be appended to hostapd command:- +# -d show more debug messages (-dd for even more) +# -K include key data in debug messages +# -t include timestamps in some debug messages +# +# Note that -B (daemon mode) and -P (pidfile) options are automatically +# configured by the init.d script and must not be added to DAEMON_OPTS. +# +#DAEMON_OPTS="" diff --git a/config/dhcpcd.conf b/config/dhcpcd.conf new file mode 100644 index 00000000..ccf0fee1 --- /dev/null +++ b/config/dhcpcd.conf @@ -0,0 +1,17 @@ +# Defaults from Raspberry Pi configuration +hostname +clientid +persistent +option rapid_commit +option domain_name_servers, domain_name, domain_search, host_name +option classless_static_routes +option ntp_servers +require dhcp_server_identifier +slaac private +nohook lookup-hostname + +# RaspAP-WebGui wireless configuration +interface wlan0 +static ip_address=10.3.141.1/24 +static routers=10.3.141.1 +static domain_name_server=8.8.8.8 8.8.4.4 diff --git a/config/dnsmasq.conf b/config/dnsmasq.conf new file mode 100644 index 00000000..6ae8e908 --- /dev/null +++ b/config/dnsmasq.conf @@ -0,0 +1,3 @@ +domain-needed +interface=wlan0 +dhcp-range=10.3.141.50,10.3.141.255,255.255.255.0,12h diff --git a/config/hostapd.conf b/config/hostapd.conf new file mode 100644 index 00000000..6af41aa0 --- /dev/null +++ b/config/hostapd.conf @@ -0,0 +1,14 @@ +driver=nl80211 +ctrl_interface=/var/run/hostapd +ctrl_interface_group=0 +beacon_int=100 +auth_algs=1 +wpa_key_mgmt=WPA-PSK +ssid=raspi-webgui +channel=1 +hw_mode=g +wpa_passphrase=ChangeMe +interface=wlan0 +wpa=WPA2 +wpa_pairwise=TKIP +country_code= diff --git a/installers/common.sh b/installers/common.sh index 1d00ab80..7080a20e 100644 --- a/installers/common.sh +++ b/installers/common.sh @@ -64,21 +64,23 @@ function enable_php_lighttpd() { # Verifies existence and permissions of RaspAP directory function create_raspap_directories() { install_log "Creating RaspAP directories" - if [ ! -d "$raspap_dir" ]; then - sudo mkdir -p "$raspap_dir" || install_error "Unable to create directory '$raspap_dir'" + if [ -d "$raspap_dir" ]; then + sudo mv $raspap_dir $raspap_dir.original || install_error "Unable to move old '$raspap_dir' out of the way" fi + sudo mkdir -p "$raspap_dir" || install_error "Unable to create directory '$raspap_dir'" sudo chown -R $raspap_user:$raspap_user "$raspap_dir" || install_error "Unable to change file ownership for '$raspap_dir'" } # Fetches latest files from github to webroot function download_latest_files() { - if [ ! -d "$webroot_dir" ]; then - install_error "Web root directory doesn't exist" + if [ -d "$webroot_dir" ]; then + sudo mv $webroot_dir /tmp/old_webroot || install_error "Unable to remove old webroot directory" fi install_log "Cloning latest files from github" - sudo git clone https://github.com/billz/raspap-webgui "$webroot_dir" || install_error "Unable to download files from github" + git clone https://github.com/billz/raspap-webgui /tmp/raspap-webgui || install_error "Unable to download files from github" + sudo mv /tmp/raspap-webgui $webroot_dir || install_error "Unable to move raspap-webgui to web root" } # Sets files ownership in web root directory @@ -102,6 +104,18 @@ function move_config_file() { sudo chown -R $raspap_user:$raspap_user "$raspap_dir" || install_error "Unable to change file ownership for '$raspap_dir'" } +# Set up default configuration +function default_configuration() { + install_log "Setting up hostapd" + if [ -f /etc/default/hostapd ]; then + sudo mv /etc/default/hostapd /tmp/default_hostapd.old || install_error "Unable to remove old /etc/default/hostapd file" + fi + sudo mv $webroot_dir/config/default_hostapd /etc/default/hostapd || install_error "Unable to move hostapd defaults file" + sudo mv $webroot_dir/config/hostapd.conf /etc/hostapd/hostapd.conf || install_error "Unable to move hostapd configuration file" + sudo mv $webroot_dir/config/dnsmasq.conf /etc/dnsmasq.conf || install_error "Unable to move dnsmasq configuration file" + sudo mv $webroot_dir/config/dhcpcd.conf /etc/dhcpcd.conf || install_error "Unable to move dhcpcd configuration file" +} + # Add a single entry to the sudoers file function sudo_add() { sudo bash -c "echo \"www-data ALL=(ALL) NOPASSWD:$1\" | (EDITOR=\"tee -a\" visudo)" \ @@ -138,7 +152,7 @@ function install_complete() { echo "Installation aborted." exit 0 fi - sudo shutdown -h now || install_error "Unable to execute shutdown" + sudo shutdown -r now || install_error "Unable to execute shutdown" } function install_raspap() { @@ -150,6 +164,7 @@ function install_raspap() { download_latest_files change_file_ownership move_config_file + default_configuration patch_system_files install_complete } diff --git a/installers/raspbian.sh b/installers/raspbian.sh index e42bf525..6ec76f75 100644 --- a/installers/raspbian.sh +++ b/installers/raspbian.sh @@ -9,7 +9,7 @@ function update_system_packages() { function install_dependencies() { install_log "Installing required packages" - sudo apt-get install lighttpd php5-cgi git || install_error "Unable to install dependencies" + sudo apt-get install lighttpd php5-cgi git hostapd dnsmasq || install_error "Unable to install dependencies" } install_raspap