-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathstart.sh
executable file
·101 lines (79 loc) · 3.26 KB
/
start.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/bash -e
source .env
log () {
echo "Step $1/5: ${2}This might take several minutes." > /tmp/wazigate-setup-step.txt
}
# Delete all connections associated with "WAZIGATE-AP"
delete_connections () {
#nmcli c down WAZIGATE-AP
nmcli connection delete uuid $(nmcli -f NAME,UUID -p c | grep WAZIGATE-AP | sed 's/WAZIGATE-AP//' | xargs)
rm -rf /etc/NetworkManager/system-connections/*
}
# Setup a new "WAZIGATE-AP" connection
setup_new_connection () {
nmcli dev wifi hotspot ifname wlan0 con-name WAZIGATE-AP ssid $SSID password "loragateway"
nmcli connection modify WAZIGATE-AP \
connection.autoconnect true connection.autoconnect-priority -100 \
802-11-wireless.mode ap 802-11-wireless.band bg ipv4.method shared ipv6.method auto \
wifi-sec.key-mgmt wpa-psk wifi-sec.proto wpa
# using down/up instead of reapply because '802-11-wireless.band' can not be changed on the fly
nmcli c down WAZIGATE-AP
nmcli c up WAZIGATE-AP
}
################################################################################
log 0 "Prepare: "
if [ -f /sys/class/net/eth0/address ] ; then
WAZIGATE_ID=$(cat /sys/class/net/eth0/address)
elif [ -f /sys/class/net/wlan0/address ] ; then
WAZIGATE_ID=$(cat /sys/class/net/wlan0/address)
fi;
export WAZIGATE_ID=${WAZIGATE_ID//:}
SSID="WAZIGATE_${WAZIGATE_ID^^}"
################################################################################
log 1 "Enabling interfaces: "
# Enable SPI
echo "Enabling SPI ..."
raspi-config nonint do_spi 0
# Enable I2C
echo "Enabling I2C ..."
raspi-config nonint do_i2c 0
################################################################################
log 2 "Configuring Access Point: "
echo "Current MAC: $WAZIGATE_ID"
if [ -f /etc/NetworkManager/system-connections/WAZIGATE-AP.nmconnection ]; then
declare -a IFS=$'' waziAPs=($(nmcli c show WAZIGATE-AP | grep "802-11-wireless.ssid" | sed 's/802-11-wireless.ssid://' | xargs ))
for OUTPUT in ${waziAPs[@]}
do
#echo "${OUTPUT#*_}"
if [ ${SSID#*_} != ${OUTPUT#*_} ]; then
echo "Found other MAC in NetworkManager: ${OUTPUT#*_}"
delete_connections #"$waziAPs"
fi
done
# After deleting old "WAZIGATE-AP" connections, create a new one
if [ ! -f /etc/NetworkManager/system-connections/WAZIGATE-AP.nmconnection ]; then
echo "Setup a new connection"
setup_new_connection
fi
else
# Create a new "WAZIGATE-AP" connection, if there are no connections
echo "Setup a new connection"
setup_new_connection
fi
################################################################################
log 3 "Loading docker images: "
# Read from docker compose: load images
if [ -f wazigate_images.tar ]; then
docker load -i wazigate_images.tar
rm -f wazigate_images.tar
fi
################################################################################
log 4 "Updating redis.sock file permissions"
sudo chmod 777 /var/run/redis/redis.sock
################################################################################
log 5 "Updating wait-for-wazigate-edge.sh file permissions"
sudo chmod u+x /var/lib/wazigate/apps/waziup.wazigate-lora/mosquitto/config/wait-for-wazigate-edge.sh
################################################################################
log 6 "Starting docker containers: "
# Start containers
docker-compose up -d