Hi.
In B-1300 there isn’t toggle button like AR 750 o 750S then I’d modify one of the 2 buttons, preferably mesh button, to disable/enable Wireguard VPN client.
I’have read posts about but referring to other models.
How can I do this?
Thanks
Can you check if there is script in /etc/rc.button/ ?
If not pls check /etc/hotplug.d/
In /etc/rc.button I have:
BTN_0, BTN_1, failsafe, power, reset and rfkill.
In /etc/hotplug.d I have:
30-mesh-button, 40-wsplcd, 50-wps, 51-wps-reset, 52-wps-supplicant, 53-wps-repacd, 54-wps-extender.
This is the correct file you need to edit to customize the mesh button.
Can You e explain to me how I modify it for?
Do I have to delete all in the file?
Can I use the content of the file of toggle button of my AR-750? But it’s a switch not a button…
Thanks
Each router is different. AR750 will have script in /etc/rc.button for the switch button function.
For B1300, you need to check the content of /etc/hotplug.d/30-mesh-button to understand how it works first.
#!/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
Anyone can help me about?
Command to start or stop wireguard client is enough easy but how to check the previous state of wireguard to start or stop it?
If WG is active then stop it else start it…
Thanks
I have tried to modify the file with my personal script but releasing button there’s not action. So I have edited reset button file with the same script and it’s works perfectly.
Both button should work in the same way.