local state
This commit is contained in:
+8
-3
@@ -12,7 +12,12 @@ services:
|
|||||||
# - ../.envs/.production/.pihole
|
# - ../.envs/.production/.pihole
|
||||||
#command: /start
|
#command: /start
|
||||||
volumes:
|
volumes:
|
||||||
- ../../mistborn_volumes/extra/wifi/wificfg.json:/cfg/wificfg.json
|
- ../../mistborn_volumes/extra/wifi/hostapd.conf:/etc/hostapd/hostapd.conf
|
||||||
network_mode: host
|
- ../../mistborn_volumes/extra/wifi/dnsmasq.conf:/etc/dnsmasq.conf
|
||||||
privileged: true
|
# - ../../mistborn_volumes/extra/wifi/wificfg.json:/cfg/wificfg.json
|
||||||
|
network_mode: bridge #host
|
||||||
|
cap_add:
|
||||||
|
- NET_ADMIN
|
||||||
|
- NET_RAW
|
||||||
|
#privileged: true
|
||||||
|
|
||||||
|
|||||||
@@ -10,14 +10,19 @@ Group=docker
|
|||||||
PermissionsStartOnly=true
|
PermissionsStartOnly=true
|
||||||
# Shutdown container (if running) when unit is stopped
|
# Shutdown container (if running) when unit is stopped
|
||||||
EnvironmentFile=/opt/mistborn/.env
|
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
|
ExecStartPre=/usr/local/bin/docker-compose -f /opt/mistborn/extra/wifi.yml build
|
||||||
# Start container when unit is started
|
# Start container when unit is started
|
||||||
ExecStart=/usr/local/bin/docker-compose -f /opt/mistborn/extra/wifi.yml up
|
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
|
# Stop container when unit is stopped
|
||||||
ExecStop=/usr/local/bin/docker-compose -f /opt/mistborn/extra/wifi.yml down
|
ExecStop=/usr/local/bin/docker-compose -f /opt/mistborn/extra/wifi.yml down
|
||||||
# Post stop
|
# Post stop
|
||||||
|
ExecStopPost=/opt/mistborn/scripts/services/wifi/stop.sh
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
Executable
+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
|
||||||
|
|
||||||
|
}
|
||||||
Executable
Executable
@@ -1,11 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# wpa_supplicant
|
sudo apt-get install -y bridge-utils iw rfkill
|
||||||
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/
|
|
||||||
Reference in New Issue
Block a user