From d178580a3fbb0177eac69262b0ec256ef20a4845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=C3=A1r=20Csaba?= <17802090+xcom169@users.noreply.github.com> Date: Mon, 30 Mar 2020 07:43:34 +0200 Subject: [PATCH] create ap-toggle.sh Wifi On/off script. --- ap-toggle.sh | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 ap-toggle.sh diff --git a/ap-toggle.sh b/ap-toggle.sh new file mode 100644 index 0000000..5e4dd35 --- /dev/null +++ b/ap-toggle.sh @@ -0,0 +1,59 @@ +#!/bin/sh +# +# ap-toggle script +# written by Dirk Brenken (dev@brenken.org) +# usage: +# ap-toggle.sh on => switch the AP on all radios "on", you can limit this with the optional -parm +# ap-toggle.sh off => switch the AP on all radios "off", you can limit this with the optional -parm +# reference this script in /etc/crontabs/root and restart cron service afterwards, e.g.: +# 0 00 * * * /usr/bin/ap-toggle.sh off +# 0 06 * * * /usr/bin/ap-toggle.sh on +# + +# This is free software, licensed under the GNU General Public License v3. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# set initial defaults +# +LC_ALL=C +PATH="/usr/sbin:/usr/bin:/sbin:/bin" +apt_ver="0.5" +apt_sysver="$(ubus -S call system board | jsonfilter -e '@.release.description')" +apt_action="${1}" +apt_radio="${2}" + +. "/lib/functions.sh" + +# f_prepare: gather wireless information & enable/disable AP interfaces +# +f_prepare() +{ + local config="${1}" + local mode="$(uci -q get wireless."${config}".mode)" + local radio="$(uci -q get wireless."${config}".device)" + local disabled="$(uci -q get wireless."${config}".disabled)" + + if [ "${mode}" = "ap" ] && ([ -z "${apt_radio}" ] || [ "${apt_radio}" = "${radio}" ]) + then + if [ "${apt_action}" = "on" ] && ([ -z "${disabled}" ] || [ "${disabled}" = "1" ]) + then + uci -q set wireless."${config}".disabled=0 + elif [ "${apt_action}" = "off" ] && ([ -z "${disabled}" ] || [ "${disabled}" = "0" ]) + then + uci -q set wireless."${config}".disabled=1 + fi + fi +} +config_load wireless +config_foreach f_prepare wifi-iface + +# commit & reload all changes, write final log message +# +if [ -n "$(uci -q changes wireless)" ] +then + uci -q commit wireless + ubus call network reload + apt_radio="${apt_radio:="all radios"}" + logger -t "ap-toggle-[${apt_ver}] info " "AP on ${apt_radio} has been switched '${apt_action}' (${apt_sysver})" +fi