You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.8 KiB
Bash
72 lines
1.8 KiB
Bash
#!/bin/sh
|
|
. /lib/functions.sh
|
|
. /lib/functions/timer.sh
|
|
. /usr/share/libubox/jshn.sh
|
|
. /lib/delos-functions.sh
|
|
|
|
handle_quota_entry() {
|
|
local name="$1"
|
|
local mac="$2"
|
|
local day="$3"
|
|
|
|
[ ! "$(config_get "$name" station)" = "$mac" ] && return
|
|
config_get ENTRY_DAY "$name" "daysofweek" "Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
|
|
case "$ENTRY_DAY" in
|
|
*$day*)
|
|
config_get "$name" quota
|
|
;;
|
|
esac
|
|
}
|
|
|
|
find_station_quota() {
|
|
local mac="$1"
|
|
local day="$(date +%A)"
|
|
|
|
echo "$(config_foreach handle_quota_entry entry "$mac" "$day")"
|
|
}
|
|
|
|
add_station_quota_info() {
|
|
local timer_id="$1"
|
|
# technically the timer_id without prefix; we always put the mac there
|
|
local mac="$2"
|
|
local status
|
|
|
|
# if we don't have a configured quota for this station, ignore it
|
|
local quota="$(find_station_quota "$mac")"
|
|
[ -z "$quota" ] && return
|
|
quota="$(dvl_time_to_mseconds "$quota")"
|
|
|
|
json_add_object "$mac"
|
|
state="$(timer_get_state $timer_id)"
|
|
json_add_string state "$state"
|
|
if [ ! "$state" = "EXPIRED" ]; then
|
|
json_add_string remaining "$(timer_get_remaining $timer_id)"
|
|
fi
|
|
json_add_string quota "$quota"
|
|
json_close_object
|
|
}
|
|
|
|
case "$1" in
|
|
list)
|
|
echo '{"status":{}}'
|
|
;;
|
|
|
|
call)
|
|
case "$2" in
|
|
status)
|
|
config_load "station_quota"
|
|
config_get_bool QUOTA_ENABLED global enabled 0
|
|
# if the station quota isn't enabled, ignore timers
|
|
if [ "$QUOTA_ENABLED" -eq 0 ]; then
|
|
echo "{}"
|
|
exit 0
|
|
fi
|
|
|
|
json_init
|
|
timer_prefix_foreach "quota-" add_station_quota_info
|
|
json_dump
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|