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
Plaintext

4 years ago
#!/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