wifitoggle.hotplug (5123B)
1 # /bin/sh 2 3 setled() { 4 if [ -z "${led_sysfs}" ]; then 5 return 6 elif [ -e /sys/class/leds/${led_sysfs}/brightness ] 7 then 8 [ $led_default -eq 1 ] && echo 1 >/sys/class/leds/${led_sysfs}/brightness 9 [ $led_default -eq 1 ] || echo 0 >/sys/class/leds/${led_sysfs}/brightness 10 11 echo $led_trigger > /sys/class/leds/${led_sysfs}/trigger 12 13 [ "$led_trigger" == "netdev" -a -n "$led_dev" ] && { 14 echo $led_dev > /sys/class/leds/${led_sysfs}/device_name 15 echo $led_mode > /sys/class/leds/${led_sysfs}/mode 16 } 17 18 [ "$led_trigger" == "timer" ] && { 19 [ -n "$led_delayon" ] && echo $led_delayon > /sys/class/leds/${led_sysfs}/delay_on 20 [ -n "$led_delayoff" ] && echo $led_delayoff > /sys/class/leds/${led_sysfs}/delay_off 21 } 22 else 23 logger -p user.err -t "wifitoggle" "led: ${led_sysfs} not found" 24 fi 25 } 26 27 load_wireless() { 28 disabled="$(uci get wireless.${1}.disabled)" 29 } 30 31 save_wireless() { 32 [ "$device" = "all" -o "$device" = "${1}" ] && { 33 uci set "wireless.${1}.disabled=$disabled" 34 } 35 } 36 37 setwifi() { 38 setled 39 40 config_load wireless 41 config_foreach save_wireless wifi-device 42 43 if ubus list network.wireless >/dev/null 2>/dev/null; then 44 ubus call network reload 45 else 46 wifi 47 fi 48 } 49 50 51 save_system() { 52 config_get sysfs $1 sysfs 53 [ "$sysfs" = "$led_sysfs" ] && { 54 uci set "system.${1}.trigger=$led_trigger" 55 uci set "system.${1}.dev=$led_dev" 56 uci set "system.${1}.mode=$led_mode" 57 uci set "system.${1}.default=$led_default" 58 uci set "system.${1}.delayon=$led_delayon" 59 uci set "system.${1}.delayoff=$led_delayoff" 60 61 ledset=1 62 } 63 } 64 65 commit_changes() { 66 ledset="" 67 68 config_load system 69 config_foreach save_system led 70 71 [ "$ledset" -eq 1 ] || { 72 section=$(uci add system led) 73 uci set "system.${section}.sysfs=$led_sysfs" 74 uci set "system.${section}.trigger=$led_trigger" 75 uci set "system.${section}.dev=$led_dev" 76 uci set "system.${section}.mode=$led_mode" 77 uci set "system.${section}.default=$led_default" 78 uci set "system.${section}.delayon=$led_delayon" 79 uci set "system.${section}.delayoff=$led_delayoff" 80 } 81 82 uci commit 83 } 84 85 enable() { 86 87 led_trigger="$led_enable_trigger" 88 led_trigger="$led_enable_trigger" 89 led_dev="$led_enable_dev" 90 led_mode="$led_enable_mode" 91 led_default="$led_enable_default" 92 led_delayon="$led_enable_delayon" 93 led_delayoff="$led_enable_delayoff" 94 disabled=0 95 96 setwifi 97 98 [ "$timer" -le 0 -a "$persistent" -eq 1 ] && commit_changes 99 100 logger -p user.info -t "wifitoggle" "device($device) enabled" 101 102 [ "$timer" -gt 0 ] && { 103 sleep "$timer" && disable && rm /tmp/run/wirelesstoggle_${1}.pid & 104 echo $! > /tmp/run/wirelesstoggle_${1}.pid 105 logger -p user.info -t "wifitoggle" "auto-disable timer started($timer seconds)" 106 } 107 } 108 109 disable() { 110 111 led_trigger="$led_disable_trigger" 112 led_trigger="$led_disable_trigger" 113 led_dev="$led_disable_dev" 114 led_mode="$led_disable_mode" 115 led_default="$led_disable_default" 116 led_delayon="$led_disable_delayon" 117 led_delayoff="$led_disable_delayoff" 118 disabled=1 119 120 setwifi 121 122 [ "$timer" -le 0 -a "$persistent" -eq 1 ] && commit_changes 123 124 logger -p user.info -t "wifitoggle" "device($device) disabled" 125 } 126 127 128 load_wifitoggle() { 129 config_get device $1 device "all" 130 config_get button $1 button "wps" 131 config_get action $1 action "pressed" 132 config_get_bool persistent $1 persistent "0" 133 config_get timer $1 timer "0" 134 135 config_get led_sysfs $1 led_sysfs 136 137 config_get led_enable_trigger $1 led_enable_trigger "none" 138 config_get led_enable_dev $1 led_enable_dev 139 config_get led_enable_mode $1 led_enable_mode "link" 140 config_get_bool led_enable_default $1 led_enable_default "1" 141 config_get led_enable_delayon $1 led_enable_delayon 142 config_get led_enable_delayoff $1 led_enable_delayoff 143 144 config_get led_disable_trigger $1 led_disable_trigger "none" 145 config_get led_disable_dev $1 led_disable_dev 146 config_get led_disable_mode $1 led_disable_mode "link" 147 config_get_bool led_disable_default $1 led_disable_default "0" 148 config_get led_disable_delayon $1 led_disable_delayon 149 config_get led_disable_delayoff $1 led_disable_delayoff 150 151 [ "$ACTION" = "$action" -a "$BUTTON" = "$button" ] && { 152 153 [ -f /tmp/run/wirelesstoggle_${1}.pid ] && read PID < /tmp/run/wirelesstoggle_${1}.pid && kill $PID && rm /tmp/run/wirelesstoggle_${1}.pid 154 155 if [ "$device" = "all" ] 156 then 157 config_load wireless 158 config_foreach load_wireless wifi-device 159 else 160 disabled="$(uci get wireless."$device".disabled)" 161 fi 162 163 164 if [ "$disabled" = "1" ] 165 then 166 enable $1 167 else 168 disable 169 fi 170 } 171 } 172 173 config_load wifitoggle 174 config_foreach load_wifitoggle wifitoggle