Browse Source

local state

53-wifi
Steven Foerster 5 years ago
parent
commit
b7ee2e87bc
  1. 11
      extra/wifi.yml
  2. 7
      scripts/services/Mistborn-wifi.service
  3. 75
      scripts/services/wifi/init.sh
  4. 0
      scripts/services/wifi/start.sh
  5. 0
      scripts/services/wifi/stop.sh
  6. 10
      scripts/subinstallers/wifi.sh

11
extra/wifi.yml

@ -12,7 +12,12 @@ services: @@ -12,7 +12,12 @@ services:
# - ../.envs/.production/.pihole
#command: /start
volumes:
- ../../mistborn_volumes/extra/wifi/wificfg.json:/cfg/wificfg.json
network_mode: host
privileged: true
- ../../mistborn_volumes/extra/wifi/hostapd.conf:/etc/hostapd/hostapd.conf
- ../../mistborn_volumes/extra/wifi/dnsmasq.conf:/etc/dnsmasq.conf
# - ../../mistborn_volumes/extra/wifi/wificfg.json:/cfg/wificfg.json
network_mode: bridge #host
cap_add:
- NET_ADMIN
- NET_RAW
#privileged: true

7
scripts/services/Mistborn-wifi.service

@ -10,14 +10,19 @@ Group=docker @@ -10,14 +10,19 @@ Group=docker
PermissionsStartOnly=true
# Shutdown container (if running) when unit is stopped
EnvironmentFile=/opt/mistborn/.env
ExecStartPre=/usr/local/bin/docker-compose -f /opt/mistborn/extra/wifi.yml down
ExecStartPre=/usr/local/bin/docker-compose -f /opt/mistborn/extra/wifi.yml down
ExecStartPre=/opt/mistborn/scripts/services/wifi/init.sh
ExecStartPre=/usr/local/bin/docker-compose -f /opt/mistborn/extra/wifi.yml build
# Start container when unit is started
ExecStart=/usr/local/bin/docker-compose -f /opt/mistborn/extra/wifi.yml up
ExecStartPost=/opt/mistborn/scripts/services/wifi/start.sh
# Stop container when unit is stopped
ExecStop=/usr/local/bin/docker-compose -f /opt/mistborn/extra/wifi.yml down
# Post stop
ExecStopPost=/opt/mistborn/scripts/services/wifi/stop.sh
[Install]
WantedBy=multi-user.target

75
scripts/services/wifi/init.sh

@ -0,0 +1,75 @@ @@ -0,0 +1,75 @@
#!/bin/bash
# Colors
MAGENTA='\e[0;35m'
RED='\e[0;31m'
GREEN='\e[0;32m'
BLUE='\e[0;34m'
NC='\e[0m'
# Check that the interface exists and its not in use. Returns iface phy
iface_check (){
IFACE="$1"
# Check that the requested iface is available
if ! [ -e /sys/class/net/"$IFACE" ]
then
echo -e "${RED}[ERROR]${NC} The interface provided does not exist. Exiting..."
exit 1
fi
# Check that the given interface is not used by the host as the default route
if [[ $(ip r | grep default | cut -d " " -f5) == "$IFACE" ]]
then
echo -e "${BLUE}[INFO]${NC} The selected interface is configured as the default route, if you use it you will lose internet connectivity"
exit 1;
fi
# Find the physical interface for the given wireless interface
PHY=$(cat /sys/class/net/"$IFACE"/phy80211/name)
echo $PHY
}
hostapd_setup() {
### Check if hostapd is running in the host
hostapd_pid=$(pgrep hostapd)
if [ ! "$hostapd_pid" == "" ]
then
echo -e "${BLUE}[INFO]${NC} hostapd service is already running in the system, make sure you use a different wireless interface..."
#kill -9 "$hostapd_pid"
fi
# Unblock wifi and bring the wireless interface up
echo -e "${BLUE}[INFO]${NC} Unblocking wifi and setting ${IFACE} up"
rfkill unblock wifi
ip link set "$IFACE" up
# Check if a wlan config file exists, else take wlan parameters by default
if [ -e "$PATHSCRIPT"/"$CONF_FILE" ]
then
echo -e "${BLUE}[INFO]${NC} Found WLAN config file"
# Parse the wlan config file
IFS="="
while read -r name value
do
case $name in
''|\#* ) continue;; # Skip blank lines and lines starting with #
"SSID" )
SSID=${value//\"/}
echo -e "${BLUE}"[INFO]"${NC}" SSID: "${MAGENTA}""$SSID""${NC}";;
"PASSPHRASE" )
PASSPHRASE=${value//\"/};;
"HW_MODE" )
HW_MODE=${value//\"/};;
"CHANNEL" )
CHANNEL=${value//\"/};;
* )
echo Parameter "$name" in "$PATHSCRIPT"/"$CONF_FILE" not recognized
esac
done < "$PATHSCRIPT"/"$CONF_FILE"
else
echo -e "${BLUE}[INFO]${NC} WLAN config file not found. Setting default WLAN parameters"
echo -e "${BLUE}"[INFO]"${NC}" SSID: "${MAGENTA}""$SSID""${NC}"
fi
}

0
scripts/services/wifi/start.sh

0
scripts/services/wifi/stop.sh

10
scripts/subinstallers/wifi.sh

@ -1,11 +1,3 @@ @@ -1,11 +1,3 @@
#!/bin/bash
# wpa_supplicant
sudo systemctl stop wpa_supplicant.service
sudo systemctl disable wpa_supplicant.service
sudo systemctl mask wpa_supplicant.service
sudo pkill wpa_supplicant
# create wificfg.json
sudo mkdir -p /opt/mistborn_volumes/extra/wifi
sudo cp /opt/mistborn/scripts/conf/wificfg.json /opt/mistborn_volumes/extra/wifi/
sudo apt-get install -y bridge-utils iw rfkill
Loading…
Cancel
Save