Wireless: Difference between revisions

From Hurlster Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
Wireless WebGui
Wireless WebGui


  https://github.com/rjpcomputing/raspap-webgui
  https://github.com/billz/raspap-webgui
Prerequisites


Requirements
You need to install some extra software in order for the Raspberry Pi to act as a WiFi router and access point. If all you're interested in is configuring your RPi as a client on an existing WiFi network, you can skip this step.
A raspberry pi with raspbian running on it. You will need to ssh into it to set this up.


The Packages required for the WebGUI are:
There are many guides available to help you select a WiFi adapter, install a compatible driver, configure HostAPD and so on. The details are outside the scope of this project, although I've had consistently good results with the Edimax Wireless 802.11b/g/n nano USB adapter – it's small, cheap and easy to work with.


lighttpd
To configure your RPi as a WiFi router, either of these resources will start you on the right track:
php5-cgi
isc-dhcp-server
git
Steps
Install required packages


sudo apt-get install lighttpd php5-cgi git isc-dhcp-server
How To : Use The Raspberry Pi As A Wireless Access Point/Router Part 1
How-To: Turn a Raspberry Pi into a WiFi router (uses isc-dhcp-server instead of dnsmasq)
After you complete the intial setup, you'll be able to administer these services using the web UI.


Enable php in lighttpd
Installation
 
Start off by installing lighttpd and php5.
 
$ sudo apt-get install lighttpd php5-cgi
After that, enable PHP for lighttpd and restart it for the settings to take effect.


  sudo lighty-enable-mod fastcgi-php
  sudo lighty-enable-mod fastcgi-php
  sudo service lighttpd restart
  /etc/init.d/lighttpd restart
Edit /etc/sudoers to allow the www-data user to call the necessary commands. Add the following line to the end of the file.
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. Add the following to the end of /etc/sudoers:
 
www-data ALL=(ALL) NOPASSWD:/sbin/ifdown wlan0,/sbin/ifup wlan0,/bin/cat /etc/wpa_supplicant/wpa_supplicant.conf,/bin/cp /tmp/wifidata /etc/wpa_supplicant/wpa_supplicant.conf,/sbin/wpa_cli scan_results,/sbin/wpa_cli scan,/bin/cp /tmp/hostapddata /etc/hostapd/hostapd.conf,/etc/init.d/hostapd start,/etc/init.d/hostapd stop,/etc/init.d/dnsmasq start,/etc/init.d/dnsmasq stop,/bin/cp /tmp/dhcpddata /etc/dnsmasq.conf
Once those modifications are done, git clone the files to /var/www. Make sure that there are no files in the /var/www directory. There was a default lighttpd index file that I had to delete.


  sudo git clone https://github.com/rjpcomputing/raspap-webgui.git /var/www
  www-data ALL=(ALL) NOPASSWD:/sbin/ifdown wlan0,/sbin/ifup wlan0,/bin/cat
/etc/wpa_supplicant/wpa_supplicant.conf,/bin/cp /tmp/wifidata
/etc/wpa_supplicant/wpa_supplicant.conf,/sbin/wpa_cli scan_results,
/sbin/wpa_cli scan,/bin/cp /tmp/hostapddata /etc/hostapd/hostapd.conf,
/etc/init.d/hostapd start,/etc/init.d/hostapd stop,/etc/init.d/dnsmasq start,
/etc/init.d/dnsmasq stop,/bin/cp /tmp/dhcpddata /etc/dnsmasq.conf
Once those modifications are done, git clone the files to /var/www.


sudo git clone https://github.com/billz/raspap-webgui /var/www
Set the files ownership to www-data user.
Set the files ownership to www-data user.


  sudo chown -R www-data:www-data /var/www
  sudo chown -R www-data:www-data /var/www
Configure a static IP for the Pi
Edit /etc/network/interfaces
sudo nano /etc/network/interfaces
Find and remove dhcp entry iface eth0 inet dhcp
Append new network settings
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.255.255.0
dns-nameservers 8.8.8.8 8.8.4.4
Find and change iface wlan0 inet manual to iface wlan0 inet dhcp. This is under the wlan0 setup.
Comment out iface default inet dhcp and allow-hotplug wlan0 using the '#' character at the beginning of the line(s).
Example of /etc/network/interfaces after all changes are made:
auto lo
iface lo inet loopback
#iface eth0 inet dhcp
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.255.255.0
dns-nameservers 8.8.8.8 8.8.4.4
auto wlan0
#allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
Configure dhcpd by editing /etc/dhcp/dhcpd.conf
sudo nano /etc/dhcp/dhcpd.conf
Add the following to the end of the file
subnet 10.0.0.0 netmask 255.255.255.0
{
  range 10.0.0.50 10.0.0.99;
  option routers 10.0.0.254;
  option domain-name "local";
  option domain-name-servers 8.8.8.8, 8.8.4.4;
}
Open /etc/default/isc-dhcp-server and change the INTERFACES="" to INTERFACES="eth0"
sudo nano /etc/default/isc-dhcp-server
Install and configure the auto-reconnect WiFi script (wifi-check).
Copy 'wifi-check' to /usr/local/bin/wifi-check
sudo cp /var/www/wifi-check /usr/local/bin/wifi-check
sudo chmod +x /usr/local/bin/wifi-check
Add it to cron so it runs every 5 minutes
sudo crontab -e
Append the line */5 * * * * /usr/local/bin/wifi-check > /tmp/wificheck.log 2>&1 to the end of the file
Save the file
Reboot and it should be up and running!
Reboot and it should be up and running!


  sudo reboot
  sudo reboot
Please note that these are only UI's for now. If there's enough interest I'll complete the funtionality for these optional admin screens.


[[Category:Linux]]
[[Category:Linux]]

Revision as of 16:14, 30 March 2016

Wireless WebGui

https://github.com/billz/raspap-webgui

Prerequisites

You need to install some extra software in order for the Raspberry Pi to act as a WiFi router and access point. If all you're interested in is configuring your RPi as a client on an existing WiFi network, you can skip this step.

There are many guides available to help you select a WiFi adapter, install a compatible driver, configure HostAPD and so on. The details are outside the scope of this project, although I've had consistently good results with the Edimax Wireless 802.11b/g/n nano USB adapter – it's small, cheap and easy to work with.

To configure your RPi as a WiFi router, either of these resources will start you on the right track:

How To : Use The Raspberry Pi As A Wireless Access Point/Router Part 1 How-To: Turn a Raspberry Pi into a WiFi router (uses isc-dhcp-server instead of dnsmasq) After you complete the intial setup, you'll be able to administer these services using the web UI.

Installation

Start off by installing lighttpd and php5.

$ sudo apt-get install lighttpd php5-cgi

After that, enable PHP for lighttpd and restart it for the settings to take effect.

sudo lighty-enable-mod fastcgi-php
/etc/init.d/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. Add the following to the end of /etc/sudoers:

www-data ALL=(ALL) NOPASSWD:/sbin/ifdown wlan0,/sbin/ifup wlan0,/bin/cat
/etc/wpa_supplicant/wpa_supplicant.conf,/bin/cp /tmp/wifidata 
/etc/wpa_supplicant/wpa_supplicant.conf,/sbin/wpa_cli scan_results,
/sbin/wpa_cli scan,/bin/cp /tmp/hostapddata /etc/hostapd/hostapd.conf,
/etc/init.d/hostapd start,/etc/init.d/hostapd stop,/etc/init.d/dnsmasq start,
/etc/init.d/dnsmasq stop,/bin/cp /tmp/dhcpddata /etc/dnsmasq.conf

Once those modifications are done, git clone the files to /var/www.

sudo git clone https://github.com/billz/raspap-webgui /var/www

Set the files ownership to www-data user.

sudo chown -R www-data:www-data /var/www

Reboot and it should be up and running!

sudo reboot

Please note that these are only UI's for now. If there's enough interest I'll complete the funtionality for these optional admin screens.