#!/bin/sh
[ “$BUTTON” != “wps” ] && exit 0
. /lib/functions/gl_util.sh
random_psk=
random_ssid=
func_wps_on(){
local device disabled mode backhaul_ap role
config_get device “$1” device
config_get disabled “$1” disabled
config_get mode “$1” mode
config_get backhaul_ap “$1” backhaul_ap
role=“uci get repacd.repacd.Role”
index=${device##wifi}
if [ “$mode” = “ap” -a “$disabled” != 1 -a “$backhaul_ap” = 1 -a “$role” = “CAP” ];then
wps_settings ${index}
iwpriv ath${index}1 hide_ssid 0
fi
}
wps_settings(){
local index
index=$1
if [ -z “grep push_button /var/run/hostapd-ath${index}1.conf” ]; then
local macaddr=$(cat /sys/class/net/br-lan/address)
uuid=$(echo “$macaddr” | sed ‘s/://g’)
echo “eap_server=1
wps_state=2
ap_setup_locked=0
device_type=6-0050F204-1
device_name=OpenWrt AP
manufacturer=openwrt.org
model_name=WAP
model_number=123
serial_number=12345
config_methods=push_button
wps_independent=1
uuid=87654321-9abc-def0-1234-$uuid”>>/var/run/hostapd-ath${index}1.conf
fi
wpa_cli -g /var/run/hostapd/global raw REMOVE ath${index}1
wpa_cli -g /var/run/hostapd/global raw ADD bss_config=ath${index}1:/var/run/hostapd-ath${index}1.conf
hostapd_cli -i ath${index}1 -P /var/run/hostapd_cli-ath${index}1.pid -a /lib/wifi/wps-hostapd-update-uci -p /var/run/hostapd-wifi${index} -B
echo “timer” >/sys/class/leds/mesh_led/trigger
echo “250” >/sys/class/leds/mesh_led/delay_on
echo “250” >/sys/class/leds/mesh_led/delay_off
}
update_mac(){
local macaddr macaddr_la
config_get macaddr “$1” macaddr
macaddr_la=$(macaddr_setbit_la $macaddr)
uci set wireless.$1.macaddr=$macaddr_la
uci set wireless.$1.repacd_auto_create_vaps=0
uci commit wireless
}
set_up_backhaul_vap(){
local device=$1
uci batch <<EOF
set wireless.bh_ap_$1=wifi-iface
set wireless.bh_ap_$1.device=$1
set wireless.bh_ap_$1.network=‘lan’
set wireless.bh_ap_$1.mode=‘ap’
set wireless.bh_ap_$1.disabled=‘0’
set wireless.bh_ap_$1.repacd_security_unmanaged=‘1’
set wireless.bh_ap_$1.wds=‘1’
set wireless.bh_ap_$1.backhaul_ap=‘1’
set wireless.bh_ap_$1.ssid=$random_ssid
set wireless.bh_ap_$1.encryption=‘psk-mixed’
set wireless.bh_ap_$1.blockdfschan=‘1’
set wireless.bh_ap_$1.key=$random_psk
set wireless.bh_ap_$1.athnewind=‘0’
set wireless.bh_ap_$1.hidden=‘1’
set wireless.bh_ap_$1.ifname=ath${device##wifi}1
EOF
uci batch <<EOF
set wireless.bh_sta_$1=‘wifi-iface’
set wireless.bh_sta_$1.device=$1
set wireless.bh_sta_$1.network=‘lan’
set wireless.bh_sta_$1.mode=‘sta’
set wireless.bh_sta_$1.disabled=‘0’
set wireless.bh_sta_$1.repacd_security_unmanaged=‘1’
set wireless.bh_sta_$1.wds=‘1’
set wireless.bh_sta_$1.ssid=$random_ssid
set wireless.bh_sta_$1.encryption=‘psk-mixed’
set wireless.bh_sta_$1.key=$random_psk
set wireless.bh_sta_$1.ifname=ath${device##wifi}2
EOF
uci commit wireless
}
update_vap_config(){
uci set wireless.$1.backhaul_ap=0
uci set wireless.$1.backhaul=0
uci commit wireless
}
get_mesh_role() {
local role
[ “swconfig dev switch0 show | grep port | grep "port:5 link:up" |wc -l” -gt 0 ] && role=CAP || role=NonCAP
echo “$role”
}
mesh_role(){
local role
if [ “uci get repacd.repacd.Enable” = 0 ]; then
role=$(get_mesh_role)
uci set repacd.repacd.Role_real=$role
random_psk=dd if=/dev/urandom bs=1 count=8 2> /dev/null | openssl base64 | tr -d '=' | tr -d '$'
random_ssid=dd if=/dev/urandom bs=1 count=9 2> /dev/null | openssl base64 | tr -d '=' | tr -d '$'
uci set repacd.repacd.Enable=1
uci commit repacd
config_load wireless
config_foreach update_mac wifi-device
config_foreach update_vap_config wifi-iface
[ "$role" != "CAP" ] && random_psk="goodlife"
config_foreach set_up_backhaul_vap wifi-device
uci set hyd.Topology.ENABLE_NOTIFICATION_UNICAST=1
uci set hyd.Topology.PERIODIC_QUERY_INTERVAL=15
uci commit hyd
if [ $role = "CAP" ]; then
touch /tmp/pairing_in_process
uci set wireless.wifi0.htmode=HT40
uci set wireless.@wifi-iface[0].disablecoext=1
uci commit wireless
/etc/init.d/repacd start
echo 1 >/sys/class/leds/mesh_led/brightness
else
/etc/init.d/lighttpd stop
/etc/init.d/lighttpd disable
/etc/init.d/gl_tertf stop
killall -9 gltertf
uci set dhcp.lan.ignore=1
uci commit dhcp
/etc/init.d/dnsmasq restart
uci set network.lan.ifname='eth0 eth1'
uci set network.lan.proto=dhcp
uci delete network.wan
uci delete network.tethering
uci delete network.modem_1_1
uci commit network
uci set glconfig.autoupdate.enable=0
uci commit glconfig
echo timer >/sys/class/leds/mesh_led/trigger
echo 250 >/sys/class/leds/mesh_led/delay_off
echo 250 >/sys/class/leds/mesh_led/delay_on
/etc/init.d/network restart
/etc/init.d/repacd start
ssdk_sh debug phy set 2 0 0x840; ssdk_sh debug phy set 3 0 0x840
sleep 0.5
ssdk_sh debug phy set 2 0 0x1240; ssdk_sh debug phy set 3 0 0x1240
echo 0 >/sys/class/leds/mesh_led/brightness
fi
fi
}
bridge_mode=$(uci -q get glconfig.bridge.mode)
[ “$bridge_mode” = “ap” -o “$bridge_mode” = “relay” -o “$bridge_mode” = “wds” ] && exit 0
if [ “$ACTION” = “released” ]; then
lock -n /var/run/mesh_button.lock
[ $? = 1 ] && exit 0
fi
if [ “${ACTION}” = “released” -a “$BUTTON” = “wps” ]; then
lock -u /var/run/mesh_led.lock
killall -9 button_pressed
role=“uci get repacd.repacd.Role”
if [ “$role” = “NonCAP” ]; then
echo 0 >/sys/class/leds/mesh_led/brightness
else
echo 1 >/sys/class/leds/mesh_led/brightness
fi
elif [ “${ACTION}” = “pressed” -a “$BUTTON” = “wps” ]; then
lock /var/run/mesh_led.lock
/usr/bin/button_pressed MESH &
fi
if [ “$ACTION” = “released” -a “$BUTTON” = “wps” -a “$SEEN” -gt 8 ]; then
/usr/sbin/de_mesh.sh
/etc/init.d/gl_health start
elif [ “$ACTION” = “released” -a “$BUTTON” = “wps” -a “$SEEN” -gt 3 ]; then
. /lib/functions.sh
. /lib/functions/system.sh
stop_nodogsplash
kill -9 $(pgrep -f 'gl_health') 2>/dev/null
[ "`uci get repacd.repacd.Enable`" = 0 ] && {
if [ -f /etc/config.tar ]; then
rm /etc/config.tar
fi
if [ "$(get_mesh_role)" = "CAP" ]; then
cd /etc
tar cf config.tar \
config/wireless \
config/network \
config/gl_son \
config/hyd \
config/lbd \
config/repacd \
config/wsplcd \
passwd passwd- shadow shadow- sysupgrade.conf
else
disable_all_vpn
stop_all_vpn
cd /etc
tar cf config.tar config passwd passwd- shadow shadow- openvpn sysupgrade.conf
fi
}
uci delete wireless.sta
uci delete wireless.guest5g
uci delete wireless.guest2g
uci delete network.wwan
uci commit wireless
uci commit network
# echo "mesh" >/etc/glproduct
uci set glconfig.bridge='service'
uci set glconfig.bridge.mode='mesh'
uci commit glconfig
/etc/init.d/gl_health stop
mesh_role
killall hostapd_cli
config_load wireless
config_foreach func_wps_on wifi-iface
fi
if [ “$ACTION” = “released” && “$SEEN” -gt 3 ]; then
cloud_en=$(uci -q get glconfig.cloud.enable)
[ “$cloud_en” = “1” ] && ubus call mqtt notify &
fi
[ “$ACTION” = “released” ] && lock -u /var/run/mesh_button.lock
Blockquote
This is the content of the file.
How can I modify to start/stop wireguard vpn client?
Thanks