Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4bfd389731 | |||
| 5e2d4160a5 | |||
| 9fc5f8a981 | |||
| 7879d1dee0 | |||
| 926e7210bc | |||
| 6b8a4ae0c9 | |||
| ed62efbd2b | |||
| b8efb4b8af | |||
| bad2f5cd1c | |||
| 27e33de641 |
1
VERSION.txt
Normal file
1
VERSION.txt
Normal file
@@ -0,0 +1 @@
|
||||
2.0.0
|
||||
157
ap-setup.sh
157
ap-setup.sh
@@ -7,69 +7,49 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
# Wireless Access Point Raspberry Pi Setup
|
||||
|
||||
function get_ap_params() {
|
||||
echo ""
|
||||
wapssidok=0
|
||||
while [ "$wapssidok" -ne 1 ]
|
||||
wapssidok="no"
|
||||
while [[ "$wapssidok" == "no" ]]
|
||||
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" = "" ]
|
||||
if [[ "$wapssid" = "" ]]
|
||||
then
|
||||
echo "SSID cannot be blank. Try again."
|
||||
else
|
||||
wapssidok=1
|
||||
wapssidok="yes"
|
||||
fi
|
||||
done
|
||||
wappassok=0
|
||||
while [ "$wappassok" -ne 1 ]
|
||||
wappassok="no"
|
||||
while [[ "$wappassok" == "no" ]]
|
||||
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 ]
|
||||
wappasslen=$(echo -n $wappass | wc -m)
|
||||
if [[ "$wappass" == "" || $wappasslen -lt 8 ]]
|
||||
then
|
||||
echo "Passphrase doesn't satisfy requirements above. Try again."
|
||||
else
|
||||
wappassok=1
|
||||
wappassok="yes"
|
||||
fi
|
||||
done
|
||||
# Save parameters in config file
|
||||
sed -i 's,'wapssid=.*','wapssid="\"$wapssid\""',' /etc/piwifiap.conf
|
||||
sed -i 's,'wappass=.*','wappass="\"$wappass\""',' /etc/piwifiap.conf
|
||||
sed -i 's|'wapssid=.*'|'wapssid="\'$wapssid\'"'|' /etc/piwifiap/piwifiap.conf
|
||||
sed -i 's|'wappass=.*'|'wappass="\'$wappass\'"'|' /etc/piwifiap/piwifiap.conf
|
||||
sed -i 's|'802-11-wireless-security.psk:.*'|'802-11-wireless-security.psk:$wappass'|' /etc/piwifiap/piwifiap.secret
|
||||
}
|
||||
|
||||
current_user=`whoami`
|
||||
if [ "$current_user" != "root" ]
|
||||
then
|
||||
echo "You must have root privileges to run this setup."
|
||||
echo "Try 'sudo $0'"
|
||||
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
|
||||
# Determine if we are using NetworkManager or systemd-networkd
|
||||
echo ""
|
||||
echo "Copying files..."
|
||||
chmod +x apsetup/usr/local/bin/*
|
||||
cp -Rv apsetup/usr/local/bin/* /usr/local/bin
|
||||
cp -Rv apsetup/etc/* /etc
|
||||
if systemctl status dhcpcd.service|grep -q "Active: active (running)"
|
||||
then
|
||||
function config_systemd-networkd() {
|
||||
echo "Configuring as wireless access point using systemd-networkd."
|
||||
get_ap_params
|
||||
# Save network system in config file
|
||||
sed -i 's,'network_system=.*','network_system="\"systemd-networkd\""',' /etc/piwifiap.conf
|
||||
# Save network system type in config file
|
||||
sed -i 's,'network_system=.*','network_system="\"systemd-networkd\""',' /etc/piwifiap/piwifiap.conf
|
||||
|
||||
apt install hostapd
|
||||
systemctl unmask hostapd
|
||||
@@ -110,45 +90,75 @@ then
|
||||
fi
|
||||
echo ""
|
||||
echo ""
|
||||
elif systemctl status NetworkManager.service|grep -q "Active: active (running)"
|
||||
then
|
||||
}
|
||||
|
||||
function config_NetworkManager() {
|
||||
echo "Configuring as wireless access point using NetworkManager."
|
||||
rfkill unblock wlan
|
||||
get_ap_params
|
||||
|
||||
# Clean up a possible failed previous attempt
|
||||
nmcli con del piwifi-ap >/dev/null 2>&1
|
||||
nmcli con del piwifi-hotspot >/dev/null 2>&1
|
||||
nmcli con del piwifi-ethernet >/dev/null 2>&1
|
||||
nmcli con del piwifi-apbridge >/dev/null 2>&1
|
||||
nmcli con del piwifi-bridge >/dev/null 2>&1
|
||||
|
||||
# Save network system in config file
|
||||
sed -i 's,'network_system=.*','network_system="\"NetworkManager\""',' /etc/piwifiap.conf
|
||||
|
||||
nmcli con add type bridge \
|
||||
con-name piwifi-apbridge \
|
||||
ifname bridge0
|
||||
# Save network system type in config file
|
||||
sed -i 's|'network_system=.*'|'network_system="\"NetworkManager\""'|' /etc/piwifiap/piwifiap.conf
|
||||
|
||||
nmcli con add type ethernet \
|
||||
slave-type bridge \
|
||||
con-name piwifi-ethernet \
|
||||
ifname eth0 \
|
||||
master bridge0
|
||||
# create bridge interface
|
||||
nmcli con add type bridge con-name piwifi-bridge ifname bridge0
|
||||
|
||||
nmcli con add type wifi \
|
||||
ifname wlan0 \
|
||||
con-name piwifi-ap \
|
||||
autoconnect yes \
|
||||
ssid "$wapssid" \
|
||||
slave-type bridge \
|
||||
master bridge0 \
|
||||
wifi-sec.key-mgmt wpa-psk \
|
||||
wifi-sec.psk "$wappass" \
|
||||
802-11-wireless.mode ap \
|
||||
802-11-wireless.band bg
|
||||
# add ethernet to bridge
|
||||
nmcli con add type ethernet slave-type bridge con-name piwifi-ethernet ifname eth0 master bridge0
|
||||
|
||||
nmcli con up piwifi-apbridge
|
||||
nmcli con up piwifi-ethernet
|
||||
nmcli con up piwifi-ap
|
||||
# create access point
|
||||
nmcli con add type wifi ifname wlan0 mode ap con-name piwifi-hotspot ssid $wapssid
|
||||
nmcli con modify piwifi-hotspot wifi-sec.key-mgmt wpa-psk
|
||||
nmcli con modify piwifi-hotspot 802-11-wireless.band bg
|
||||
# disable protected management frames for wpa_supplicant bug in trixie
|
||||
nmcli con modify piwifi-hotspot 802-11-wireless-security.pmf 1
|
||||
|
||||
# add wifi to bridge
|
||||
nmcli con modify piwifi-hotspot master bridge0 slave-type bridge
|
||||
|
||||
# activate bridge
|
||||
nmcli con up piwifi-bridge
|
||||
|
||||
# activite wifi
|
||||
nmcli con up piwifi-hotspot passwd-file /etc/piwifiap/piwifiap.secret
|
||||
|
||||
}
|
||||
|
||||
current_user=$(whoami)
|
||||
if [[ "$current_user" != "root" ]]
|
||||
then
|
||||
echo "You must have root privileges to run this setup."
|
||||
echo "Try 'sudo $0'"
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
echo ""
|
||||
echo "If this system connects to a network using ethernet, it can be configured"
|
||||
echo "as a wireless access point for other systems. Would you like to configure"
|
||||
echo -n "this system as an access point? [y/N]: "
|
||||
read wapconf
|
||||
if [[ "$wapconf" == "Y" || "$wapconf" == "y" ]]
|
||||
then
|
||||
# Determine if we are using NetworkManager or systemd-networkd
|
||||
echo ""
|
||||
echo "Copying files..."
|
||||
chmod +x apsetup/usr/local/bin/wap-*
|
||||
cp -R apsetup/usr/local/bin/* /usr/local/bin/
|
||||
cp -R apsetup/etc/* /etc/
|
||||
chown -R root:root /etc/piwifiap
|
||||
chmod 600 /etc/piwifiap/*
|
||||
if systemctl status dhcpcd.service|grep -q "Active: active (running)"
|
||||
then
|
||||
config_systemd-networkd
|
||||
elif systemctl status NetworkManager.service|grep -q "Active: active (running)"
|
||||
then
|
||||
config_NetworkManager
|
||||
else
|
||||
echo "Unable to determine what type of network configuration (systemd-networkd"
|
||||
echo "or NetworkManager) your system uses. Automatic setup cannot continue."
|
||||
@@ -165,12 +175,23 @@ then
|
||||
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 "at a command prompt and reboot. To re-enable it, run:"
|
||||
echo " sudo wap-enable"
|
||||
echo "at a command prompt and reboot the terminal."
|
||||
echo "at a command prompt and reboot."
|
||||
echo ""
|
||||
echo -n "Press enter key to continue..."
|
||||
read cont
|
||||
echo "The system must be rebooted for the configuration to take effect."
|
||||
echo ""
|
||||
read -p "Would you like to reboot now? [Y/n]: " -r rebootok
|
||||
case "$rebootok" in
|
||||
"y" | "Y" | "")
|
||||
reboot
|
||||
;;
|
||||
*)
|
||||
echo "You may continue to use the system, but the access point will not be"
|
||||
echo "functional until you reboot."
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
else
|
||||
exit 2
|
||||
fi
|
||||
|
||||
1
apsetup/etc/piwifiap/piwifiap.secret
Normal file
1
apsetup/etc/piwifiap/piwifiap.secret
Normal file
@@ -0,0 +1 @@
|
||||
802-11-wireless-security.psk:none
|
||||
@@ -1,3 +0,0 @@
|
||||
sudo wap-enable
|
||||
Enable Wireless Access Point
|
||||
* 0 1 0 0 0 0 0 -
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
sudo wap-disable
|
||||
Disable Wireless Access Point
|
||||
* 0 1 0 0 0 0 0 -
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
/etc/hostapd/hostapd.conf
|
||||
Edit Wireless Access Point Parameters
|
||||
|
||||
|
||||
|
||||
|
||||
systemctl restart hostapd
|
||||
0
|
||||
0
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
display_mode=1
|
||||
params_file=0
|
||||
params_cmd=0
|
||||
columns=1
|
||||
height=
|
||||
wrap=
|
||||
width=
|
||||
sort=
|
||||
20
apsetup/usr/local/bin/wap-disable
Normal file → Executable file
20
apsetup/usr/local/bin/wap-disable
Normal file → Executable file
@@ -9,19 +9,21 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source /etc/piwifiap.conf
|
||||
source /etc/piwifiap/piwifiap.conf
|
||||
|
||||
if [ "$network_system" = "systemd-networkd" ]
|
||||
then
|
||||
case "$network_system" in
|
||||
"systemd-networkd")
|
||||
systemctl stop hostapd
|
||||
systemctl disable hostapd
|
||||
elif [ "$network_system" = "NetworkManager" ]
|
||||
then
|
||||
nmcli con down piwifi-ap
|
||||
nmcli con mod piwifi-ap autoconnect no
|
||||
else
|
||||
;;
|
||||
"NetworkManager")
|
||||
nmcli con down piwifi-hotspot
|
||||
nmcli con mod piwifi-hotspot autoconnect no
|
||||
;;
|
||||
*)
|
||||
echo "Unable to determine what type of network configuration (systemd-networkd"
|
||||
echo "or NetworkManager) your system uses."
|
||||
echo "Cannot disable wireless access point."
|
||||
exit 2
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
21
apsetup/usr/local/bin/wap-enable
Normal file → Executable file
21
apsetup/usr/local/bin/wap-enable
Normal file → Executable file
@@ -9,20 +9,21 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source /etc/piwifiap.conf
|
||||
source /etc/piwifiap/piwifiap.conf
|
||||
|
||||
if [ "$network_system" = "systemd-networkd" ]
|
||||
then
|
||||
case "$network_system" in
|
||||
"systemd-networkd")
|
||||
systemctl enable hostapd
|
||||
systemctl start hostapd
|
||||
elif [ "$network_system" = "NetworkManager" ]
|
||||
then
|
||||
nmcli con mod piwifi-ap autoconnect yes
|
||||
nmcli con up piwifi-ap
|
||||
else
|
||||
;;
|
||||
"NetworkManager")
|
||||
nmcli con mod piwifi-hotspot autoconnect yes
|
||||
nmcli con up piwifi-hotspot passwd-file /etc/piwifiap/piwifiap.secret
|
||||
;;
|
||||
*)
|
||||
echo "Unable to determine what type of network configuration (systemd-networkd"
|
||||
echo "or NetworkManager) your system uses."
|
||||
echo "Cannot enable wireless access point."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
50
apsetup/usr/local/bin/wap-setpassphrase
Normal file → Executable file
50
apsetup/usr/local/bin/wap-setpassphrase
Normal file → Executable file
@@ -9,39 +9,41 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source /etc/piwifiap.conf
|
||||
source /etc/piwifiap/piwifiap.conf
|
||||
|
||||
newppok=0
|
||||
while [ "$newppok" -ne 1 ]
|
||||
wappassok="no"
|
||||
while [[ "$wappassok" == "no" ]]
|
||||
do
|
||||
echo -n "New passphrase: "
|
||||
read newpp
|
||||
newpplen=`echo -n $newpp | wc -m`
|
||||
if [ "$newpp" = "" -o "$newpplen" -lt 8 ]
|
||||
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" == "" || $wappasslen -lt 8 ]]
|
||||
then
|
||||
echo "Passphrase didn't satisfy requirements. Try again or hit <ctrl>-c to abort."
|
||||
echo "Passphrase doesn't satisfy requirements above. Try again."
|
||||
else
|
||||
newppok=1
|
||||
wappassok="yes"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$network_system" = "systemd-networkd" ]
|
||||
then
|
||||
sed -i "/wpa_passphrase=.*/c wpa_passphrase=$newpp" /etc/hostapd/hostapd.conf
|
||||
case "$network_system" in
|
||||
"systemd-networkd")
|
||||
sed -i "/wpa_passphrase=.*/c wpa_passphrase=$wappass" /etc/hostapd/hostapd.conf
|
||||
systemctl restart hostapd
|
||||
elif [ "$network_system" = "NetworkManager" ]
|
||||
then
|
||||
nmcli con down piwifi-ap
|
||||
nmcli con mod piwifi-ap wifi-sec.psk "$newpp"
|
||||
nmcli con up piwifi-ap
|
||||
else
|
||||
sed -i 's|'wappass=.*'|'wappass="\'$wappass\'"'|' /etc/piwifiap/piwifiap.conf
|
||||
sed -i 's|'802-11-wireless-security.psk:.*'|'802-11-wireless-security.psk:$wappass'|' /etc/piwifiap/piwifiap.secret
|
||||
;;
|
||||
"NetworkManager")
|
||||
nmcli con down piwifi-hotspot
|
||||
sed -i 's|'wappass=.*'|'wappass="\'$wappass\'"'|' /etc/piwifiap/piwifiap.conf
|
||||
sed -i 's|'802-11-wireless-security.psk:.*'|'802-11-wireless-security.psk:$wappass'|' /etc/piwifiap/piwifiap.secret
|
||||
nmcli con up piwifi-hotspot passwd-file /etc/piwifiap/piwifiap.secret
|
||||
;;
|
||||
*)
|
||||
echo "Unable to determine what type of network configuration (systemd-networkd"
|
||||
echo "or NetworkManager) your system uses."
|
||||
echo "Cannot modify wireless access point parameters."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
sed -i 's,'wappass=.*','wappass="\"$newpp\""',' /etc/piwifiap.conf
|
||||
|
||||
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
50
apsetup/usr/local/bin/wap-setssid
Normal file → Executable file
50
apsetup/usr/local/bin/wap-setssid
Normal file → Executable file
@@ -9,37 +9,39 @@ then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source /etc/piwifiap.conf
|
||||
source /etc/piwifiap/piwifiap.conf
|
||||
|
||||
newssidok=0
|
||||
while [ "$newssidok" -ne 1 ]
|
||||
do
|
||||
echo -n "New SSID: "
|
||||
read newssid
|
||||
if [ "$newssid" = "" ]
|
||||
wapssidok="no"
|
||||
while [[ "$wapssidok" == "no" ]]
|
||||
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 or hit <ctrl>-c to abort."
|
||||
echo "SSID cannot be blank. Try again."
|
||||
else
|
||||
newssidok=1
|
||||
wapssidok="yes"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if [ "$network_system" = "systemd-networkd" ]
|
||||
then
|
||||
sed -i "/ssid=.*/c ssid=$newssid" /etc/hostapd/hostapd.conf
|
||||
case "$network_system" in
|
||||
"systemd-networkd")
|
||||
sed -i "/ssid=.*/c ssid=$wapssid" /etc/hostapd/hostapd.conf
|
||||
systemctl restart hostapd
|
||||
elif [ "$network_system" = "NetworkManager" ]
|
||||
then
|
||||
nmcli con down piwifi-ap
|
||||
nmcli con mod piwifi-ap ssid "$newssid"
|
||||
nmcli con up piwifi-ap
|
||||
else
|
||||
sed -i 's|'wapssid=.*'|'wapssid="\'$wapssid\'"'|' /etc/piwifiap/piwifiap.conf
|
||||
;;
|
||||
"NetworkManager")
|
||||
nmcli con down piwifi-hotspot
|
||||
nmcli con mod piwifi-hotspot ssid "$wapssid"
|
||||
nmcli con up piwifi-hotspot passwd-file /etc/piwifiap/piwifiap.secret
|
||||
sed -i 's|'wapssid=.*'|'wapssid="\'$wapssid\'"'|' /etc/piwifiap/piwifiap.conf
|
||||
;;
|
||||
*)
|
||||
echo "Unable to determine what type of network configuration (systemd-networkd"
|
||||
echo "or NetworkManager) your system uses."
|
||||
echo "Cannot modify wireless access point parameters."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
sed -i 's,'wapssid=.*','wapssid="\"$newssid\""',' /etc/piwifiap.conf
|
||||
|
||||
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user