#!/bin/bash # ap-setup.sh # OpenDRS Online Discrepancy Reporting System # Copyright (C) 2022 Rod Wright # SPDX-License-Identifier: GPL-2.0 # Wireless Access Point Raspberry Pi Setup current_user=`whoami` if [ "$current_user" != "root" ] then echo "You must have root privileges to run this setup." echo "Try 'sudo ./ap-setup.sh'" exit 1 fi echo "" echo "" echo "If this terminal connects to a network using ethernet, it can be configured" echo "as a wireless access point for other terminals. Would you like to configure" echo -n "this terminal as an access point? [y/N]: " read wapconf if [ "$wapconf" = "Y" -o "$wapconf" = "y" ] then echo "Configuring as wireless access point." echo "" echo "Copying files..." chmod +x apsetup/usr/local/bin/* cp apsetup/usr/local/bin/* /usr/local/bin cp -R apsetup/etc/* /etc echo "" wapssidok=0 while [ "$wapssidok" -ne 1 ] do echo "This access point will need an SSID. This is what will appear" echo "as the name of this terminal when other devices connect." echo -n "Please enter the desired SSID for this access point: " read wapssid if [ "$wapssid" = "" ] then echo "SSID cannot be blank. Try again." else wapssidok=1 fi done wappassok=0 while [ "$wappassok" -ne 1 ] do echo "You will need to set a passphrase for this access point. It should" echo "be at least 8 characters in length and cannot be blank." echo -n "Please enter the desired passphrase for this access point: " read wappass wappasslen=`echo -n $wappass | wc -m` if [ "$wappass" = "" -o "$wappasslen" -lt 8 ] then echo "Passphrase doesn't satisfy requirements above. Try again." else wappassok=1 fi done apt install hostapd systemctl unmask hostapd systemctl enable hostapd echo "[NetDev]" >/etc/systemd/network/bridge-br0.netdev echo "Name=br0" >>/etc/systemd/network/bridge-br0.netdev echo "Kind=bridge" >>/etc/systemd/network/bridge-br0.netdev echo "[Match]" >/etc/systemd/network/br0-member-eth0.network echo "Name=eth0" >>/etc/systemd/network/br0-member-eth0.network echo "" >>/etc/systemd/network/br0-member-eth0.network echo "[Network]" >>/etc/systemd/network/br0-member-eth0.network echo "Bridge=br0" >>/etc/systemd/network/br0-member-eth0.network systemctl enable systemd-networkd mv /etc/dhcpcd.conf /etc/dhcpcd.conf.old echo "denyinterfaces wlan0 eth0" >/etc/dhcpcd.conf cat /etc/dhcpcd.conf.old >>/etc/dhcpcd.conf echo "interface br0" >>/etc/dhcpcd.conf rfkill unblock wlan echo "country_code=US" >/etc/hostapd/hostapd.conf echo "interface=wlan0" >>/etc/hostapd/hostapd.conf echo "bridge=br0" >>/etc/hostapd/hostapd.conf echo "ssid=$wapssid" >>/etc/hostapd/hostapd.conf echo "hw_mode=g" >>/etc/hostapd/hostapd.conf echo "channel=7" >>/etc/hostapd/hostapd.conf echo "macaddr_acl=0" >>/etc/hostapd/hostapd.conf echo "auth_algs=1" >>/etc/hostapd/hostapd.conf echo "ignore_broadcast_ssid=0" >>/etc/hostapd/hostapd.conf echo "wpa=2" >>/etc/hostapd/hostapd.conf echo "wpa_passphrase=$wappass" >>/etc/hostapd/hostapd.conf echo "wpa_key_mgmt=WPA-PSK" >>/etc/hostapd/hostapd.conf echo "wpa_pairwise=TKIP" >>/etc/hostapd/hostapd.conf echo "rsn_pairwise=CCMP" >>/etc/hostapd/hostapd.conf wget -c http://github.com/pjz/webmin-modules/releases/download/v1.0/hostap.wbm.gz gzip -d hostap.wbm.gz /usr/share/webmin/install-module.pl hostap.wbm echo "" echo "" echo "Wireless access point setup is complete. It will be" echo "automatically enabled after reboot. To change the SSID or" echo "passphrase in the future, edit the file /etc/hostapd/hostapd.conf" echo "or use the Host AP module in the Servers section of Webmin." echo "" echo "To disable the access point altogether in the future, run:" echo " sudo wap-disable" echo "at a command prompt and reboot the terminal. To re-enable it, run:" echo " sudo wap-enable" echo "at a command prompt and reboot the terminal." echo "It can also be enabled or disabled via Custom Commands in the Tools" echo "section of Webmin." echo "" echo -n "Press enter key to continue..." read cont else exit 2 fi