+ [mmsms:791] parse_common_option(): PARSE_SHIFT=1 + [mmsms:792] parse_common_option(): return 0 + [mmsms:1881] parse_stats_args(): local status=0 + [mmsms:1882] parse_stats_args(): (( status == 0 )) + [mmsms:1884] parse_stats_args(): (( PARSE_SHIFT > 0 )) + [mmsms:1884] parse_stats_args(): shift 1 + [mmsms:1885] parse_stats_args(): continue + [mmsms:1800] parse_stats_args(): (( 0 > 0 )) + [mmsms:1896] parse_stats_args(): [[ -n '' ]] + [mmsms:1902] parse_stats_args(): [[ -n '' ]] + [mmsms:1908] parse_stats_args(): (( 0 > 0 )) + [mmsms:1914] parse_stats_args(): PARSED_ARGS=() + [mmsms:1915] parse_stats_args(): return 0 + [mmsms:2085] parse_command_args(): return 0 + [mmsms:10482] main(): local parse_rc=0 + [mmsms:10483] main(): (( parse_rc == 64 )) + [mmsms:10486] main(): (( parse_rc != 0 )) + [mmsms:10491] main(): CMD_ARGS=() + [mmsms:10491] main(): local -a CMD_ARGS + [mmsms:10493] main(): load_config post-args + [mmsms:226] load_config(): echo_debug 'loading config: /etc/mmsms.conf' + [echo.sh:73] echo_debug(): [[ -z 1 ]] + [echo.sh:74] echo_debug(): local prefix=DBG + [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' + [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' 'loading config: /etc/mmsms.conf' + [echo.sh:13] echo_fancy(): local prefix=DBG + [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' + [echo.sh:15] echo_fancy(): shift 2 + [echo.sh:17] echo_fancy(): local line + [echo.sh:18] echo_fancy(): line='DBG loading config: /etc/mmsms.conf' + [echo.sh:20] echo_fancy(): local 'line_fmt=DBG loading config: /etc/mmsms.conf' + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m loading config: /etc/mmsms.conf' + [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m loading config: /etc/mmsms.conf' DBG loading config: /etc/mmsms.conf + [echo.sh:30] echo_fancy(): [[ -z '' ]] + [echo.sh:30] echo_fancy(): return 0 + [mmsms:229] load_config(): source /etc/mmsms.conf ++ [mmsms.conf:2] source(): DEFAULT_MODEM=fr ++ [mmsms.conf:5] source(): SKIP_MODEM_INIT_PATTERNS=("huawei") ++ [mmsms.conf:7] source(): DEFAULT_RECIPIENT_FR=+33671326033 ++ [mmsms.conf:8] source(): DEFAULT_RECIPIENT_DE=+4915773656565 ++ [mmsms.conf:11] source(): WEBHOOK_URL=http://10.5.1.1:8123/api/webhook/sms-incoming ++ [mmsms.conf:18] source(): SMS_WHITELIST=('+33671326033' '+4915773656565' '+4915777788654') + [mmsms:235] load_config(): apply_skip_modem_init_from_config + [mmsms:173] apply_skip_modem_init_from_config(): local decl ++ [mmsms:175] apply_skip_modem_init_from_config(): declare -p SKIP_MODEM_INIT + [mmsms:175] apply_skip_modem_init_from_config(): decl= + [mmsms:186] apply_skip_modem_init_from_config(): [[ -z '' ]] + [mmsms:188] apply_skip_modem_init_from_config(): return 0 + [mmsms:10498] main(): [[ stats == \w\a\t\c\h ]] + [mmsms:10503] main(): [[ -n '' ]] + [mmsms:10507] main(): [[ -n '' ]] + [mmsms:10512] main(): command_requires_modem_resolution stats + [mmsms:10149] command_requires_modem_resolution(): local cmd=stats + [mmsms:10151] command_requires_modem_resolution(): case "$cmd" in + [mmsms:10157] command_requires_modem_resolution(): return 0 + [mmsms:10514] main(): local resolve_rc + [mmsms:10515] main(): resolve_modem_selection stats + [mmsms:10162] resolve_modem_selection(): local cmd=stats + [mmsms:10163] resolve_modem_selection(): local defer_resolution + [mmsms:10165] resolve_modem_selection(): [[ stats == \e\n\a\b\l\e ]] + [mmsms:10170] resolve_modem_selection(): [[ -n fr ]] + [mmsms:10172] resolve_modem_selection(): echo_debug 'default modem configured: fr' + [echo.sh:73] echo_debug(): [[ -z 1 ]] + [echo.sh:74] echo_debug(): local prefix=DBG + [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' + [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' 'default modem configured: fr' + [echo.sh:13] echo_fancy(): local prefix=DBG + [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' + [echo.sh:15] echo_fancy(): shift 2 + [echo.sh:17] echo_fancy(): local line + [echo.sh:18] echo_fancy(): line='DBG default modem configured: fr' + [echo.sh:20] echo_fancy(): local 'line_fmt=DBG default modem configured: fr' + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m default modem configured: fr' + [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m default modem configured: fr' DBG default modem configured: fr + [echo.sh:30] echo_fancy(): [[ -z '' ]] + [echo.sh:30] echo_fancy(): return 0 + [mmsms:10175] resolve_modem_selection(): [[ -z 1 ]] + [mmsms:10181] resolve_modem_selection(): [[ -n '' ]] + [mmsms:10187] resolve_modem_selection(): local resolved ++ [mmsms:10188] resolve_modem_selection(): get_modem_id any ++ [mmsms:2406] get_modem_id(): local sel_raw=any ++ [mmsms:2408] get_modem_id(): [[ -z any ]] ++ [mmsms:2408] get_modem_id(): [[ any == any ]] ++ [mmsms:2410] get_modem_id(): printf %s any ++ [mmsms:2411] get_modem_id(): return 0 + [mmsms:10188] resolve_modem_selection(): resolved=any + [mmsms:10194] resolve_modem_selection(): MODEM=any + [mmsms:10196] resolve_modem_selection(): [[ any == \a\n\y ]] + [mmsms:10198] resolve_modem_selection(): local _j _id ++ [mmsms:10199] resolve_modem_selection(): mmcli_cmd -J ++ [mmsms:298] mmcli_cmd(): command mmcli --modem any -J + [mmsms:10199] resolve_modem_selection(): _j='{"modem":{"3gpp":{"5gnr":{"registration-settings":{"drx-cycle":"--","mico-mode":"--"}},"enabled-locks":[],"eps":{"initial-bearer":{"dbus-path":"--","settings":{"apn":"--","ip-type":"--","password":"--","user":"--"}},"ue-mode-operation":"--"},"imei":"860015017321024","operator-code":"26201","operator-name":"Telekom.de","packet-service-state":"attached","pco":"--","registration-state":"roaming"},"cdma":{"activation-state":"--","cdma1x-registration-state":"--","esn":"--","evdo-registration-state":"--","meid":"--","nid":"--","sid":"--"},"dbus-path":"/org/freedesktop/ModemManager1/Modem/11","generic":{"access-technologies":["edge"],"bearers":[],"carrier-configuration":"--","carrier-configuration-revision":"--","current-bands":[],"current-capabilities":["gsm-umts"],"current-modes":"allowed: 2g, 3g; preferred: 2g","device":"/sys/devices/platform/soc/soc:internal-regs/f10f8000.usb3/usb4/4-1","device-identifier":"f3bd5f14b4685da9a2a5e15d58376fc95f3914e2","drivers":["option1","cdc_ether"],"equipment-identifier":"860015017321024","hardware-revision":"--","manufacturer":"huawei","model":"E173","own-numbers":["+33695386096"],"physdev":"/sys/devices/platform/soc/soc:internal-regs/f10f8000.usb3/usb4/4-1","plugin":"huawei","ports":["ttyUSB4 (at)","ttyUSB5 (qcdm)","ttyUSB6 (at)","wwan1 (net)"],"power-state":"on","primary-port":"ttyUSB6","primary-sim-slot":"--","revision":"11.126.16.00.00","signal-quality":{"recent":"yes","value":"100"},"sim":"/org/freedesktop/ModemManager1/SIM/11","sim-slots":[],"state":"registered","state-failed-reason":"--","supported-bands":[],"supported-capabilities":["gsm-umts"],"supported-ip-families":["ipv4","ipv6"],"supported-modes":["allowed: 2g, 3g; preferred: none","allowed: 2g, 3g; preferred: 2g","allowed: 2g, 3g; preferred: 3g","allowed: 2g; preferred: none","allowed: 3g; preferred: none"],"unlock-required":"--","unlock-retries":["sim-pin (3)","sim-puk (10)","sim-pin2 (3)","sim-puk2 (10)"]}}}' ++ [mmsms:10201] resolve_modem_selection(): jq -r '.modem["dbus-path"] | split("/")[-1] // empty' ++ [mmsms:282] jq(): [[ -x /srv/bin/jq ]] ++ [mmsms:284] jq(): /srv/bin/jq -r '.modem["dbus-path"] | split("/")[-1] // empty' ++ [mmsms:285] jq(): return 0 + [mmsms:10201] resolve_modem_selection(): _id=11 + [mmsms:10202] resolve_modem_selection(): [[ -n 11 ]] + [mmsms:10204] resolve_modem_selection(): MODEM=11 + [mmsms:10209] resolve_modem_selection(): [[ -n '' ]] + [mmsms:10215] resolve_modem_selection(): [[ stats == \w\a\t\c\h ]] + [mmsms:10234] resolve_modem_selection(): [[ -n 1 ]] + [mmsms:10236] resolve_modem_selection(): _ids=() + [mmsms:10236] resolve_modem_selection(): local _ids + [mmsms:10237] resolve_modem_selection(): mapfile -t _ids ++ [mmsms:10237] resolve_modem_selection(): list_modem_ids_sorted ++ [mmsms:2277] list_modem_ids_sorted(): local list_json +++ [mmsms:2278] list_modem_ids_sorted(): mmcli -L -J +++ [mmsms:293] mmcli(): echo_debug '$ mmcli -L -J' +++ [echo.sh:73] echo_debug(): [[ -z 1 ]] +++ [echo.sh:74] echo_debug(): local prefix=DBG +++ [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' +++ [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' '$ mmcli -L -J' +++ [echo.sh:13] echo_fancy(): local prefix=DBG +++ [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' +++ [echo.sh:15] echo_fancy(): shift 2 +++ [echo.sh:17] echo_fancy(): local line +++ [echo.sh:18] echo_fancy(): line='DBG $ mmcli -L -J' +++ [echo.sh:20] echo_fancy(): local 'line_fmt=DBG $ mmcli -L -J' +++ [echo.sh:22] echo_fancy(): [[ -z '' ]] +++ [echo.sh:22] echo_fancy(): [[ -z '' ]] +++ [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m $ mmcli -L -J' +++ [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m $ mmcli -L -J' DBG $ mmcli -L -J +++ [echo.sh:30] echo_fancy(): [[ -z '' ]] +++ [echo.sh:30] echo_fancy(): return 0 +++ [mmsms:294] mmcli(): command mmcli -L -J ++ [mmsms:2278] list_modem_ids_sorted(): list_json='{"modem-list":["/org/freedesktop/ModemManager1/Modem/0","/org/freedesktop/ModemManager1/Modem/11"]}' ++ [mmsms:2283] list_modem_ids_sorted(): jq -r '."modem-list"[]? | split("/")[-1]' ++ [mmsms:282] jq(): [[ -x /srv/bin/jq ]] ++ [mmsms:2283] list_modem_ids_sorted(): sort -n ++ [mmsms:284] jq(): /srv/bin/jq -r '."modem-list"[]? | split("/")[-1]' ++ [mmsms:285] jq(): return 0 + [mmsms:10239] resolve_modem_selection(): (( 2 > 0 )) + [mmsms:10241] resolve_modem_selection(): echo_debug 'operating on all modems: 2 detected' + [echo.sh:73] echo_debug(): [[ -z 1 ]] + [echo.sh:74] echo_debug(): local prefix=DBG + [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' + [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' 'operating on all modems: 2 detected' + [echo.sh:13] echo_fancy(): local prefix=DBG + [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' + [echo.sh:15] echo_fancy(): shift 2 + [echo.sh:17] echo_fancy(): local line + [echo.sh:18] echo_fancy(): line='DBG operating on all modems: 2 detected' + [echo.sh:20] echo_fancy(): local 'line_fmt=DBG operating on all modems: 2 detected' + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m operating on all modems: 2 detected' + [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m operating on all modems: 2 detected' DBG operating on all modems: 2 detected + [echo.sh:30] echo_fancy(): [[ -z '' ]] + [echo.sh:30] echo_fancy(): return 0 + [mmsms:10243] resolve_modem_selection(): local _id + [mmsms:10244] resolve_modem_selection(): for _id in "${_ids[@]}" + [mmsms:10246] resolve_modem_selection(): [[ -z 0 ]] + [mmsms:10247] resolve_modem_selection(): log_modem_details 0 + [mmsms:2648] log_modem_details(): local mid=0 prefix= + [mmsms:2649] log_modem_details(): local info ++ [mmsms:2651] log_modem_details(): get_modem_info 0 '' ++ [mmsms:2605] get_modem_info(): local selector=0 ++ [mmsms:2606] get_modem_info(): local prefix= ++ [mmsms:2607] get_modem_info(): local fallback_id=0 ++ [mmsms:2609] get_modem_info(): [[ -n 0 ]] +++ [mmsms:2611] get_modem_info(): trim 0 +++ [mmsms:147] trim(): local s=0 +++ [mmsms:148] trim(): s=0 +++ [mmsms:149] trim(): s=0 +++ [mmsms:150] trim(): printf %s 0 ++ [mmsms:2611] get_modem_info(): fallback_id=0 ++ [mmsms:2614] get_modem_info(): local info_json +++ [mmsms:2615] get_modem_info(): get_modem 0 +++ [mmsms:2515] get_modem(): local selector=0 +++ [mmsms:2517] get_modem(): [[ -z 0 ]] ++++ [mmsms:2527] get_modem(): trim 0 ++++ [mmsms:147] trim(): local s=0 ++++ [mmsms:148] trim(): s=0 ++++ [mmsms:149] trim(): s=0 ++++ [mmsms:150] trim(): printf %s 0 +++ [mmsms:2527] get_modem(): selector=0 +++ [mmsms:2528] get_modem(): [[ -z 0 ]] +++ [mmsms:2533] get_modem(): local mmcli_target=0 +++ [mmsms:2534] get_modem(): [[ 0 != \a\n\y ]] +++ [mmsms:2534] get_modem(): [[ 0 != */Modem/* ]] +++ [mmsms:2534] get_modem(): [[ ! 0 =~ ^[0-9]+$ ]] +++ [mmsms:2542] get_modem(): mmcli -m 0 -J +++ [mmsms:293] mmcli(): echo_debug '$ mmcli -m 0 -J' +++ [echo.sh:73] echo_debug(): [[ -z 1 ]] +++ [echo.sh:74] echo_debug(): local prefix=DBG +++ [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' +++ [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' '$ mmcli -m 0 -J' +++ [echo.sh:13] echo_fancy(): local prefix=DBG +++ [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' +++ [echo.sh:15] echo_fancy(): shift 2 +++ [echo.sh:17] echo_fancy(): local line +++ [echo.sh:18] echo_fancy(): line='DBG $ mmcli -m 0 -J' +++ [echo.sh:20] echo_fancy(): local 'line_fmt=DBG $ mmcli -m 0 -J' +++ [echo.sh:22] echo_fancy(): [[ -z '' ]] +++ [echo.sh:22] echo_fancy(): [[ -z '' ]] +++ [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m $ mmcli -m 0 -J' +++ [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m $ mmcli -m 0 -J' DBG $ mmcli -m 0 -J +++ [echo.sh:30] echo_fancy(): [[ -z '' ]] +++ [echo.sh:30] echo_fancy(): return 0 +++ [mmsms:294] mmcli(): command mmcli -m 0 -J ++ [mmsms:2615] get_modem_info(): info_json='{"modem":{"3gpp":{"5gnr":{"registration-settings":{"drx-cycle":"--","mico-mode":"--"}},"enabled-locks":["fixed-dialing"],"eps":{"initial-bearer":{"dbus-path":"/org/freedesktop/ModemManager1/Bearer/0","settings":{"apn":"","ip-type":"ipv4v6","password":"--","user":"--"}},"ue-mode-operation":"csps-2"},"imei":"868186041236298","operator-code":"26223","operator-name":"Willkommen","packet-service-state":"attached","pco":"--","registration-state":"home"},"cdma":{"activation-state":"--","cdma1x-registration-state":"--","esn":"--","evdo-registration-state":"--","meid":"--","nid":"--","sid":"--"},"dbus-path":"/org/freedesktop/ModemManager1/Modem/0","generic":{"access-technologies":["lte"],"bearers":[],"carrier-configuration":"ROW_Generic_3GPP","carrier-configuration-revision":"06010821","current-bands":["eutran-1","eutran-3","eutran-7","eutran-8","eutran-20","eutran-28"],"current-capabilities":["gsm-umts, lte"],"current-modes":"allowed: 3g, 4g; preferred: 4g","device":"/sys/devices/platform/soc/soc:internal-regs/f1058000.usb/usb1/1-1","device-identifier":"064f509bf367e9f90e92e62c9bacef3e5af9a769","drivers":["qmi_wwan","option1"],"equipment-identifier":"868186041236298","hardware-revision":"20000","manufacturer":"Quectel","model":"EP06-E","own-numbers":["4915565447259"],"physdev":"/sys/devices/platform/soc/soc:internal-regs/f1058000.usb/usb1/1-1","plugin":"quectel","ports":["cdc-wdm0 (qmi)","ttyUSB0 (ignored)","ttyUSB1 (gps)","ttyUSB2 (at)","ttyUSB3 (at)","wwan0 (net)"],"power-state":"on","primary-port":"cdc-wdm0","primary-sim-slot":"--","revision":"EP06ELAR03A08M4G","signal-quality":{"recent":"yes","value":"75"},"sim":"/org/freedesktop/ModemManager1/SIM/0","sim-slots":[],"state":"registered","state-failed-reason":"--","supported-bands":["utran-1","utran-3","utran-5","utran-8","eutran-1","eutran-3","eutran-5","eutran-7","eutran-8","eutran-20","eutran-28","eutran-32","eutran-38","eutran-40","eutran-41"],"supported-capabilities":["gsm-umts, lte"],"supported-ip-families":["ipv4","ipv6","ipv4v6"],"supported-modes":["allowed: 3g; preferred: none","allowed: 4g; preferred: none","allowed: 3g, 4g; preferred: 4g","allowed: 3g, 4g; preferred: 3g"],"unlock-required":"sim-pin2","unlock-retries":["sim-pin (3)","sim-puk (10)","sim-pin2 (3)","sim-puk2 (10)"]}}}' ++ [mmsms:2620] get_modem_info(): local info_string +++ [mmsms:2621] get_modem_info(): modem_info_string_from_json '{"modem":{"3gpp":{"5gnr":{"registration-settings":{"drx-cycle":"--","mico-mode":"--"}},"enabled-locks":["fixed-dialing"],"eps":{"initial-bearer":{"dbus-path":"/org/freedesktop/ModemManager1/Bearer/0","settings":{"apn":"","ip-type":"ipv4v6","password":"--","user":"--"}},"ue-mode-operation":"csps-2"},"imei":"868186041236298","operator-code":"26223","operator-name":"Willkommen","packet-service-state":"attached","pco":"--","registration-state":"home"},"cdma":{"activation-state":"--","cdma1x-registration-state":"--","esn":"--","evdo-registration-state":"--","meid":"--","nid":"--","sid":"--"},"dbus-path":"/org/freedesktop/ModemManager1/Modem/0","generic":{"access-technologies":["lte"],"bearers":[],"carrier-configuration":"ROW_Generic_3GPP","carrier-configuration-revision":"06010821","current-bands":["eutran-1","eutran-3","eutran-7","eutran-8","eutran-20","eutran-28"],"current-capabilities":["gsm-umts, lte"],"current-modes":"allowed: 3g, 4g; preferred: 4g","device":"/sys/devices/platform/soc/soc:internal-regs/f1058000.usb/usb1/1-1","device-identifier":"064f509bf367e9f90e92e62c9bacef3e5af9a769","drivers":["qmi_wwan","option1"],"equipment-identifier":"868186041236298","hardware-revision":"20000","manufacturer":"Quectel","model":"EP06-E","own-numbers":["4915565447259"],"physdev":"/sys/devices/platform/soc/soc:internal-regs/f1058000.usb/usb1/1-1","plugin":"quectel","ports":["cdc-wdm0 (qmi)","ttyUSB0 (ignored)","ttyUSB1 (gps)","ttyUSB2 (at)","ttyUSB3 (at)","wwan0 (net)"],"power-state":"on","primary-port":"cdc-wdm0","primary-sim-slot":"--","revision":"EP06ELAR03A08M4G","signal-quality":{"recent":"yes","value":"75"},"sim":"/org/freedesktop/ModemManager1/SIM/0","sim-slots":[],"state":"registered","state-failed-reason":"--","supported-bands":["utran-1","utran-3","utran-5","utran-8","eutran-1","eutran-3","eutran-5","eutran-7","eutran-8","eutran-20","eutran-28","eutran-32","eutran-38","eutran-40","eutran-41"],"supported-capabilities":["gsm-umts, lte"],"supported-ip-families":["ipv4","ipv6","ipv4v6"],"supported-modes":["allowed: 3g; preferred: none","allowed: 4g; preferred: none","allowed: 3g, 4g; preferred: 4g","allowed: 3g, 4g; preferred: 3g"],"unlock-required":"sim-pin2","unlock-retries":["sim-pin (3)","sim-puk (10)","sim-pin2 (3)","sim-puk2 (10)"]}}}' 0 +++ [mmsms:2547] modem_info_string_from_json(): local 'info_json={"modem":{"3gpp":{"5gnr":{"registration-settings":{"drx-cycle":"--","mico-mode":"--"}},"enabled-locks":["fixed-dialing"],"eps":{"initial-bearer":{"dbus-path":"/org/freedesktop/ModemManager1/Bearer/0","settings":{"apn":"","ip-type":"ipv4v6","password":"--","user":"--"}},"ue-mode-operation":"csps-2"},"imei":"868186041236298","operator-code":"26223","operator-name":"Willkommen","packet-service-state":"attached","pco":"--","registration-state":"home"},"cdma":{"activation-state":"--","cdma1x-registration-state":"--","esn":"--","evdo-registration-state":"--","meid":"--","nid":"--","sid":"--"},"dbus-path":"/org/freedesktop/ModemManager1/Modem/0","generic":{"access-technologies":["lte"],"bearers":[],"carrier-configuration":"ROW_Generic_3GPP","carrier-configuration-revision":"06010821","current-bands":["eutran-1","eutran-3","eutran-7","eutran-8","eutran-20","eutran-28"],"current-capabilities":["gsm-umts, lte"],"current-modes":"allowed: 3g, 4g; preferred: 4g","device":"/sys/devices/platform/soc/soc:internal-regs/f1058000.usb/usb1/1-1","device-identifier":"064f509bf367e9f90e92e62c9bacef3e5af9a769","drivers":["qmi_wwan","option1"],"equipment-identifier":"868186041236298","hardware-revision":"20000","manufacturer":"Quectel","model":"EP06-E","own-numbers":["4915565447259"],"physdev":"/sys/devices/platform/soc/soc:internal-regs/f1058000.usb/usb1/1-1","plugin":"quectel","ports":["cdc-wdm0 (qmi)","ttyUSB0 (ignored)","ttyUSB1 (gps)","ttyUSB2 (at)","ttyUSB3 (at)","wwan0 (net)"],"power-state":"on","primary-port":"cdc-wdm0","primary-sim-slot":"--","revision":"EP06ELAR03A08M4G","signal-quality":{"recent":"yes","value":"75"},"sim":"/org/freedesktop/ModemManager1/SIM/0","sim-slots":[],"state":"registered","state-failed-reason":"--","supported-bands":["utran-1","utran-3","utran-5","utran-8","eutran-1","eutran-3","eutran-5","eutran-7","eutran-8","eutran-20","eutran-28","eutran-32","eutran-38","eutran-40","eutran-41"],"supported-capabilities":["gsm-umts, lte"],"supported-ip-families":["ipv4","ipv6","ipv4v6"],"supported-modes":["allowed: 3g; preferred: none","allowed: 4g; preferred: none","allowed: 3g, 4g; preferred: 4g","allowed: 3g, 4g; preferred: 3g"],"unlock-required":"sim-pin2","unlock-retries":["sim-pin (3)","sim-puk (10)","sim-pin2 (3)","sim-puk2 (10)"]}}}' +++ [mmsms:2548] modem_info_string_from_json(): local fallback_id=0 +++ [mmsms:2550] modem_info_string_from_json(): [[ -z {"modem":{"3gpp":{"5gnr":{"registration-settings":{"drx-cycle":"--","mico-mode":"--"}},"enabled-locks":["fixed-dialing"],"eps":{"initial-bearer":{"dbus-path":"/org/freedesktop/ModemManager1/Bearer/0","settings":{"apn":"","ip-type":"ipv4v6","password":"--","user":"--"}},"ue-mode-operation":"csps-2"},"imei":"868186041236298","operator-code":"26223","operator-name":"Willkommen","packet-service-state":"attached","pco":"--","registration-state":"home"},"cdma":{"activation-state":"--","cdma1x-registration-state":"--","esn":"--","evdo-registration-state":"--","meid":"--","nid":"--","sid":"--"},"dbus-path":"/org/freedesktop/ModemManager1/Modem/0","generic":{"access-technologies":["lte"],"bearers":[],"carrier-configuration":"ROW_Generic_3GPP","carrier-configuration-revision":"06010821","current-bands":["eutran-1","eutran-3","eutran-7","eutran-8","eutran-20","eutran-28"],"current-capabilities":["gsm-umts, lte"],"current-modes":"allowed: 3g, 4g; preferred: 4g","device":"/sys/devices/platform/soc/soc:internal-regs/f1058000.usb/usb1/1-1","device-identifier":"064f509bf367e9f90e92e62c9bacef3e5af9a769","drivers":["qmi_wwan","option1"],"equipment-identifier":"868186041236298","hardware-revision":"20000","manufacturer":"Quectel","model":"EP06-E","own-numbers":["4915565447259"],"physdev":"/sys/devices/platform/soc/soc:internal-regs/f1058000.usb/usb1/1-1","plugin":"quectel","ports":["cdc-wdm0 (qmi)","ttyUSB0 (ignored)","ttyUSB1 (gps)","ttyUSB2 (at)","ttyUSB3 (at)","wwan0 (net)"],"power-state":"on","primary-port":"cdc-wdm0","primary-sim-slot":"--","revision":"EP06ELAR03A08M4G","signal-quality":{"recent":"yes","value":"75"},"sim":"/org/freedesktop/ModemManager1/SIM/0","sim-slots":[],"state":"registered","state-failed-reason":"--","supported-bands":["utran-1","utran-3","utran-5","utran-8","eutran-1","eutran-3","eutran-5","eutran-7","eutran-8","eutran-20","eutran-28","eutran-32","eutran-38","eutran-40","eutran-41"],"supported-capabilities":["gsm-umts, lte"],"supported-ip-families":["ipv4","ipv6","ipv4v6"],"supported-modes":["allowed: 3g; preferred: none","allowed: 4g; preferred: none","allowed: 3g, 4g; preferred: 4g","allowed: 3g, 4g; preferred: 3g"],"unlock-required":"sim-pin2","unlock-retries":["sim-pin (3)","sim-puk (10)","sim-pin2 (3)","sim-puk2 (10)"]}}} ]] +++ [mmsms:2555] modem_info_string_from_json(): [[ -n 0 ]] ++++ [mmsms:2557] modem_info_string_from_json(): trim 0 ++++ [mmsms:147] trim(): local s=0 ++++ [mmsms:148] trim(): s=0 ++++ [mmsms:149] trim(): s=0 ++++ [mmsms:150] trim(): printf %s 0 +++ [mmsms:2557] modem_info_string_from_json(): fallback_id=0 +++ [mmsms:2560] modem_info_string_from_json(): local fields ++++ [mmsms:2573] modem_info_string_from_json(): jq -r ' .modem as $m | [ ($m["dbus-path"] | split("/")[-1] // ""), ($m.generic.manufacturer // "--"), ($m.generic.model // "--"), ($m.generic.plugin // "--"), ($m.generic["primary-port"] // "--"), (($m.generic.ports // []) | map(split(" ")[0]) | join(",")), ($m.generic["own-numbers"][0] // "") ] | @tsv ' ++++ [mmsms:282] jq(): [[ -x /srv/bin/jq ]] ++++ [mmsms:284] jq(): /srv/bin/jq -r ' .modem as $m | [ ($m["dbus-path"] | split("/")[-1] // ""), ($m.generic.manufacturer // "--"), ($m.generic.model // "--"), ($m.generic.plugin // "--"), ($m.generic["primary-port"] // "--"), (($m.generic.ports // []) | map(split(" ")[0]) | join(",")), ($m.generic["own-numbers"][0] // "") ] | @tsv ' ++++ [mmsms:285] jq(): return 0 +++ [mmsms:2573] modem_info_string_from_json(): fields='0 Quectel EP06-E quectel cdc-wdm0 cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0 4915565447259' +++ [mmsms:2578] modem_info_string_from_json(): [[ -z 0 Quectel EP06-E quectel cdc-wdm0 cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0 4915565447259 ]] +++ [mmsms:2583] modem_info_string_from_json(): local id manufacturer model plugin primary ports phone cc_label +++ [mmsms:2584] modem_info_string_from_json(): IFS=' ' +++ [mmsms:2584] modem_info_string_from_json(): read -r id manufacturer model plugin primary ports phone ++++ [mmsms:2586] modem_info_string_from_json(): ensure_plus 4915565447259 ++++ [mmsms:2226] ensure_plus(): local n=4915565447259 ++++ [mmsms:2228] ensure_plus(): [[ -z 4915565447259 ]] ++++ [mmsms:2234] ensure_plus(): [[ 4915565447259 != +* ]] ++++ [mmsms:2234] ensure_plus(): [[ 4915565447259 =~ ^[0-9]+$ ]] ++++ [mmsms:2236] ensure_plus(): printf +%s 4915565447259 +++ [mmsms:2586] modem_info_string_from_json(): phone=+4915565447259 +++ [mmsms:2588] modem_info_string_from_json(): [[ -n cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0 ]] +++ [mmsms:2589] modem_info_string_from_json(): [[ -z 0 ]] +++ [mmsms:2593] modem_info_string_from_json(): [[ -n 0 ]] +++ [mmsms:2594] modem_info_string_from_json(): [[ -n +4915565447259 ]] ++++ [mmsms:2596] modem_info_string_from_json(): phone_cc_label +4915565447259 ++++ [mmsms:2219] phone_cc_label(): local cc +++++ [mmsms:2220] phone_cc_label(): phone_cc +4915565447259 +++++ [mmsms:2189] phone_cc(): local n=+4915565447259 +++++ [mmsms:2190] phone_cc(): [[ +4915565447259 == +* ]] +++++ [mmsms:2192] phone_cc(): local d=4915565447259 +++++ [mmsms:2194] phone_cc(): [[ 4915565447259 == 1* ]] +++++ [mmsms:2200] phone_cc(): printf %s 49 +++++ [mmsms:2201] phone_cc(): return 0 ++++ [mmsms:2220] phone_cc_label(): cc=49 ++++ [mmsms:2221] phone_cc_label(): cc_to_label 49 ++++ [mmsms:2209] cc_to_label(): case "$1" in ++++ [mmsms:2212] cc_to_label(): printf DE +++ [mmsms:2596] modem_info_string_from_json(): cc_label=DE +++ [mmsms:2597] modem_info_string_from_json(): [[ -n DE ]] +++ [mmsms:2599] modem_info_string_from_json(): printf 'id='\''%s'\'' manufacturer='\''%s'\'' model='\''%s'\'' plugin='\''%s'\'' primary='\''%s'\'' ports='\''%s'\'' phone='\''%s'\'' cc='\''%s'\''' 0 Quectel EP06-E quectel cdc-wdm0 cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0 +4915565447259 DE ++ [mmsms:2621] get_modem_info(): info_string='id='\''0'\'' manufacturer='\''Quectel'\'' model='\''EP06-E'\'' plugin='\''quectel'\'' primary='\''cdc-wdm0'\'' ports='\''cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0'\'' phone='\''+4915565447259'\'' cc='\''DE'\''' ++ [mmsms:2626] get_modem_info(): printf '%smodem={%s}' '' 'id='\''0'\'' manufacturer='\''Quectel'\'' model='\''EP06-E'\'' plugin='\''quectel'\'' primary='\''cdc-wdm0'\'' ports='\''cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0'\'' phone='\''+4915565447259'\'' cc='\''DE'\''' + [mmsms:2651] log_modem_details(): info='modem={id='\''0'\'' manufacturer='\''Quectel'\'' model='\''EP06-E'\'' plugin='\''quectel'\'' primary='\''cdc-wdm0'\'' ports='\''cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0'\'' phone='\''+4915565447259'\'' cc='\''DE'\''}' + [mmsms:2653] log_modem_details(): echo_debug 'modem={id='\''0'\'' manufacturer='\''Quectel'\'' model='\''EP06-E'\'' plugin='\''quectel'\'' primary='\''cdc-wdm0'\'' ports='\''cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0'\'' phone='\''+4915565447259'\'' cc='\''DE'\''}' + [echo.sh:73] echo_debug(): [[ -z 1 ]] + [echo.sh:74] echo_debug(): local prefix=DBG + [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' + [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' 'modem={id='\''0'\'' manufacturer='\''Quectel'\'' model='\''EP06-E'\'' plugin='\''quectel'\'' primary='\''cdc-wdm0'\'' ports='\''cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0'\'' phone='\''+4915565447259'\'' cc='\''DE'\''}' + [echo.sh:13] echo_fancy(): local prefix=DBG + [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' + [echo.sh:15] echo_fancy(): shift 2 + [echo.sh:17] echo_fancy(): local line + [echo.sh:18] echo_fancy(): line='DBG modem={id='\''0'\'' manufacturer='\''Quectel'\'' model='\''EP06-E'\'' plugin='\''quectel'\'' primary='\''cdc-wdm0'\'' ports='\''cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0'\'' phone='\''+4915565447259'\'' cc='\''DE'\''}' + [echo.sh:20] echo_fancy(): local 'line_fmt=DBG modem={id='\''0'\'' manufacturer='\''Quectel'\'' model='\''EP06-E'\'' plugin='\''quectel'\'' primary='\''cdc-wdm0'\'' ports='\''cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0'\'' phone='\''+4915565447259'\'' cc='\''DE'\''}' + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m modem={id='\''0'\'' manufacturer='\''Quectel'\'' model='\''EP06-E'\'' plugin='\''quectel'\'' primary='\''cdc-wdm0'\'' ports='\''cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0'\'' phone='\''+4915565447259'\'' cc='\''DE'\''}' + [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m modem={id='\''0'\'' manufacturer='\''Quectel'\'' model='\''EP06-E'\'' plugin='\''quectel'\'' primary='\''cdc-wdm0'\'' ports='\''cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0'\'' phone='\''+4915565447259'\'' cc='\''DE'\''}' DBG modem={id='0' manufacturer='Quectel' model='EP06-E' plugin='quectel' primary='cdc-wdm0' ports='cdc-wdm0,ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,wwan0' phone='+4915565447259' cc='DE'} + [echo.sh:30] echo_fancy(): [[ -z '' ]] + [echo.sh:30] echo_fancy(): return 0 + [mmsms:2654] log_modem_details(): return 0 + [mmsms:10244] resolve_modem_selection(): for _id in "${_ids[@]}" + [mmsms:10246] resolve_modem_selection(): [[ -z 11 ]] + [mmsms:10247] resolve_modem_selection(): log_modem_details 11 + [mmsms:2648] log_modem_details(): local mid=11 prefix= + [mmsms:2649] log_modem_details(): local info ++ [mmsms:2651] log_modem_details(): get_modem_info 11 '' ++ [mmsms:2605] get_modem_info(): local selector=11 ++ [mmsms:2606] get_modem_info(): local prefix= ++ [mmsms:2607] get_modem_info(): local fallback_id=11 ++ [mmsms:2609] get_modem_info(): [[ -n 11 ]] +++ [mmsms:2611] get_modem_info(): trim 11 +++ [mmsms:147] trim(): local s=11 +++ [mmsms:148] trim(): s=11 +++ [mmsms:149] trim(): s=11 +++ [mmsms:150] trim(): printf %s 11 ++ [mmsms:2611] get_modem_info(): fallback_id=11 ++ [mmsms:2614] get_modem_info(): local info_json +++ [mmsms:2615] get_modem_info(): get_modem 11 +++ [mmsms:2515] get_modem(): local selector=11 +++ [mmsms:2517] get_modem(): [[ -z 11 ]] ++++ [mmsms:2527] get_modem(): trim 11 ++++ [mmsms:147] trim(): local s=11 ++++ [mmsms:148] trim(): s=11 ++++ [mmsms:149] trim(): s=11 ++++ [mmsms:150] trim(): printf %s 11 +++ [mmsms:2527] get_modem(): selector=11 +++ [mmsms:2528] get_modem(): [[ -z 11 ]] +++ [mmsms:2533] get_modem(): local mmcli_target=11 +++ [mmsms:2534] get_modem(): [[ 11 != \a\n\y ]] +++ [mmsms:2534] get_modem(): [[ 11 != */Modem/* ]] +++ [mmsms:2534] get_modem(): [[ ! 11 =~ ^[0-9]+$ ]] +++ [mmsms:2542] get_modem(): mmcli -m 11 -J +++ [mmsms:293] mmcli(): echo_debug '$ mmcli -m 11 -J' +++ [echo.sh:73] echo_debug(): [[ -z 1 ]] +++ [echo.sh:74] echo_debug(): local prefix=DBG +++ [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' +++ [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' '$ mmcli -m 11 -J' +++ [echo.sh:13] echo_fancy(): local prefix=DBG +++ [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' +++ [echo.sh:15] echo_fancy(): shift 2 +++ [echo.sh:17] echo_fancy(): local line +++ [echo.sh:18] echo_fancy(): line='DBG $ mmcli -m 11 -J' +++ [echo.sh:20] echo_fancy(): local 'line_fmt=DBG $ mmcli -m 11 -J' +++ [echo.sh:22] echo_fancy(): [[ -z '' ]] +++ [echo.sh:22] echo_fancy(): [[ -z '' ]] +++ [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m $ mmcli -m 11 -J' +++ [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m $ mmcli -m 11 -J' DBG $ mmcli -m 11 -J +++ [echo.sh:30] echo_fancy(): [[ -z '' ]] +++ [echo.sh:30] echo_fancy(): return 0 +++ [mmsms:294] mmcli(): command mmcli -m 11 -J ++ [mmsms:2615] get_modem_info(): info_json='{"modem":{"3gpp":{"5gnr":{"registration-settings":{"drx-cycle":"--","mico-mode":"--"}},"enabled-locks":[],"eps":{"initial-bearer":{"dbus-path":"--","settings":{"apn":"--","ip-type":"--","password":"--","user":"--"}},"ue-mode-operation":"--"},"imei":"860015017321024","operator-code":"26201","operator-name":"Telekom.de","packet-service-state":"attached","pco":"--","registration-state":"roaming"},"cdma":{"activation-state":"--","cdma1x-registration-state":"--","esn":"--","evdo-registration-state":"--","meid":"--","nid":"--","sid":"--"},"dbus-path":"/org/freedesktop/ModemManager1/Modem/11","generic":{"access-technologies":["edge"],"bearers":[],"carrier-configuration":"--","carrier-configuration-revision":"--","current-bands":[],"current-capabilities":["gsm-umts"],"current-modes":"allowed: 2g, 3g; preferred: 2g","device":"/sys/devices/platform/soc/soc:internal-regs/f10f8000.usb3/usb4/4-1","device-identifier":"f3bd5f14b4685da9a2a5e15d58376fc95f3914e2","drivers":["option1","cdc_ether"],"equipment-identifier":"860015017321024","hardware-revision":"--","manufacturer":"huawei","model":"E173","own-numbers":["+33695386096"],"physdev":"/sys/devices/platform/soc/soc:internal-regs/f10f8000.usb3/usb4/4-1","plugin":"huawei","ports":["ttyUSB4 (at)","ttyUSB5 (qcdm)","ttyUSB6 (at)","wwan1 (net)"],"power-state":"on","primary-port":"ttyUSB6","primary-sim-slot":"--","revision":"11.126.16.00.00","signal-quality":{"recent":"yes","value":"100"},"sim":"/org/freedesktop/ModemManager1/SIM/11","sim-slots":[],"state":"registered","state-failed-reason":"--","supported-bands":[],"supported-capabilities":["gsm-umts"],"supported-ip-families":["ipv4","ipv6"],"supported-modes":["allowed: 2g, 3g; preferred: none","allowed: 2g, 3g; preferred: 2g","allowed: 2g, 3g; preferred: 3g","allowed: 2g; preferred: none","allowed: 3g; preferred: none"],"unlock-required":"--","unlock-retries":["sim-pin (3)","sim-puk (10)","sim-pin2 (3)","sim-puk2 (10)"]}}}' ++ [mmsms:2620] get_modem_info(): local info_string +++ [mmsms:2621] get_modem_info(): modem_info_string_from_json '{"modem":{"3gpp":{"5gnr":{"registration-settings":{"drx-cycle":"--","mico-mode":"--"}},"enabled-locks":[],"eps":{"initial-bearer":{"dbus-path":"--","settings":{"apn":"--","ip-type":"--","password":"--","user":"--"}},"ue-mode-operation":"--"},"imei":"860015017321024","operator-code":"26201","operator-name":"Telekom.de","packet-service-state":"attached","pco":"--","registration-state":"roaming"},"cdma":{"activation-state":"--","cdma1x-registration-state":"--","esn":"--","evdo-registration-state":"--","meid":"--","nid":"--","sid":"--"},"dbus-path":"/org/freedesktop/ModemManager1/Modem/11","generic":{"access-technologies":["edge"],"bearers":[],"carrier-configuration":"--","carrier-configuration-revision":"--","current-bands":[],"current-capabilities":["gsm-umts"],"current-modes":"allowed: 2g, 3g; preferred: 2g","device":"/sys/devices/platform/soc/soc:internal-regs/f10f8000.usb3/usb4/4-1","device-identifier":"f3bd5f14b4685da9a2a5e15d58376fc95f3914e2","drivers":["option1","cdc_ether"],"equipment-identifier":"860015017321024","hardware-revision":"--","manufacturer":"huawei","model":"E173","own-numbers":["+33695386096"],"physdev":"/sys/devices/platform/soc/soc:internal-regs/f10f8000.usb3/usb4/4-1","plugin":"huawei","ports":["ttyUSB4 (at)","ttyUSB5 (qcdm)","ttyUSB6 (at)","wwan1 (net)"],"power-state":"on","primary-port":"ttyUSB6","primary-sim-slot":"--","revision":"11.126.16.00.00","signal-quality":{"recent":"yes","value":"100"},"sim":"/org/freedesktop/ModemManager1/SIM/11","sim-slots":[],"state":"registered","state-failed-reason":"--","supported-bands":[],"supported-capabilities":["gsm-umts"],"supported-ip-families":["ipv4","ipv6"],"supported-modes":["allowed: 2g, 3g; preferred: none","allowed: 2g, 3g; preferred: 2g","allowed: 2g, 3g; preferred: 3g","allowed: 2g; preferred: none","allowed: 3g; preferred: none"],"unlock-required":"--","unlock-retries":["sim-pin (3)","sim-puk (10)","sim-pin2 (3)","sim-puk2 (10)"]}}}' 11 +++ [mmsms:2547] modem_info_string_from_json(): local 'info_json={"modem":{"3gpp":{"5gnr":{"registration-settings":{"drx-cycle":"--","mico-mode":"--"}},"enabled-locks":[],"eps":{"initial-bearer":{"dbus-path":"--","settings":{"apn":"--","ip-type":"--","password":"--","user":"--"}},"ue-mode-operation":"--"},"imei":"860015017321024","operator-code":"26201","operator-name":"Telekom.de","packet-service-state":"attached","pco":"--","registration-state":"roaming"},"cdma":{"activation-state":"--","cdma1x-registration-state":"--","esn":"--","evdo-registration-state":"--","meid":"--","nid":"--","sid":"--"},"dbus-path":"/org/freedesktop/ModemManager1/Modem/11","generic":{"access-technologies":["edge"],"bearers":[],"carrier-configuration":"--","carrier-configuration-revision":"--","current-bands":[],"current-capabilities":["gsm-umts"],"current-modes":"allowed: 2g, 3g; preferred: 2g","device":"/sys/devices/platform/soc/soc:internal-regs/f10f8000.usb3/usb4/4-1","device-identifier":"f3bd5f14b4685da9a2a5e15d58376fc95f3914e2","drivers":["option1","cdc_ether"],"equipment-identifier":"860015017321024","hardware-revision":"--","manufacturer":"huawei","model":"E173","own-numbers":["+33695386096"],"physdev":"/sys/devices/platform/soc/soc:internal-regs/f10f8000.usb3/usb4/4-1","plugin":"huawei","ports":["ttyUSB4 (at)","ttyUSB5 (qcdm)","ttyUSB6 (at)","wwan1 (net)"],"power-state":"on","primary-port":"ttyUSB6","primary-sim-slot":"--","revision":"11.126.16.00.00","signal-quality":{"recent":"yes","value":"100"},"sim":"/org/freedesktop/ModemManager1/SIM/11","sim-slots":[],"state":"registered","state-failed-reason":"--","supported-bands":[],"supported-capabilities":["gsm-umts"],"supported-ip-families":["ipv4","ipv6"],"supported-modes":["allowed: 2g, 3g; preferred: none","allowed: 2g, 3g; preferred: 2g","allowed: 2g, 3g; preferred: 3g","allowed: 2g; preferred: none","allowed: 3g; preferred: none"],"unlock-required":"--","unlock-retries":["sim-pin (3)","sim-puk (10)","sim-pin2 (3)","sim-puk2 (10)"]}}}' +++ [mmsms:2548] modem_info_string_from_json(): local fallback_id=11 +++ [mmsms:2550] modem_info_string_from_json(): [[ -z {"modem":{"3gpp":{"5gnr":{"registration-settings":{"drx-cycle":"--","mico-mode":"--"}},"enabled-locks":[],"eps":{"initial-bearer":{"dbus-path":"--","settings":{"apn":"--","ip-type":"--","password":"--","user":"--"}},"ue-mode-operation":"--"},"imei":"860015017321024","operator-code":"26201","operator-name":"Telekom.de","packet-service-state":"attached","pco":"--","registration-state":"roaming"},"cdma":{"activation-state":"--","cdma1x-registration-state":"--","esn":"--","evdo-registration-state":"--","meid":"--","nid":"--","sid":"--"},"dbus-path":"/org/freedesktop/ModemManager1/Modem/11","generic":{"access-technologies":["edge"],"bearers":[],"carrier-configuration":"--","carrier-configuration-revision":"--","current-bands":[],"current-capabilities":["gsm-umts"],"current-modes":"allowed: 2g, 3g; preferred: 2g","device":"/sys/devices/platform/soc/soc:internal-regs/f10f8000.usb3/usb4/4-1","device-identifier":"f3bd5f14b4685da9a2a5e15d58376fc95f3914e2","drivers":["option1","cdc_ether"],"equipment-identifier":"860015017321024","hardware-revision":"--","manufacturer":"huawei","model":"E173","own-numbers":["+33695386096"],"physdev":"/sys/devices/platform/soc/soc:internal-regs/f10f8000.usb3/usb4/4-1","plugin":"huawei","ports":["ttyUSB4 (at)","ttyUSB5 (qcdm)","ttyUSB6 (at)","wwan1 (net)"],"power-state":"on","primary-port":"ttyUSB6","primary-sim-slot":"--","revision":"11.126.16.00.00","signal-quality":{"recent":"yes","value":"100"},"sim":"/org/freedesktop/ModemManager1/SIM/11","sim-slots":[],"state":"registered","state-failed-reason":"--","supported-bands":[],"supported-capabilities":["gsm-umts"],"supported-ip-families":["ipv4","ipv6"],"supported-modes":["allowed: 2g, 3g; preferred: none","allowed: 2g, 3g; preferred: 2g","allowed: 2g, 3g; preferred: 3g","allowed: 2g; preferred: none","allowed: 3g; preferred: none"],"unlock-required":"--","unlock-retries":["sim-pin (3)","sim-puk (10)","sim-pin2 (3)","sim-puk2 (10)"]}}} ]] +++ [mmsms:2555] modem_info_string_from_json(): [[ -n 11 ]] ++++ [mmsms:2557] modem_info_string_from_json(): trim 11 ++++ [mmsms:147] trim(): local s=11 ++++ [mmsms:148] trim(): s=11 ++++ [mmsms:149] trim(): s=11 ++++ [mmsms:150] trim(): printf %s 11 +++ [mmsms:2557] modem_info_string_from_json(): fallback_id=11 +++ [mmsms:2560] modem_info_string_from_json(): local fields ++++ [mmsms:2573] modem_info_string_from_json(): jq -r ' .modem as $m | [ ($m["dbus-path"] | split("/")[-1] // ""), ($m.generic.manufacturer // "--"), ($m.generic.model // "--"), ($m.generic.plugin // "--"), ($m.generic["primary-port"] // "--"), (($m.generic.ports // []) | map(split(" ")[0]) | join(",")), ($m.generic["own-numbers"][0] // "") ] | @tsv ' ++++ [mmsms:282] jq(): [[ -x /srv/bin/jq ]] ++++ [mmsms:284] jq(): /srv/bin/jq -r ' .modem as $m | [ ($m["dbus-path"] | split("/")[-1] // ""), ($m.generic.manufacturer // "--"), ($m.generic.model // "--"), ($m.generic.plugin // "--"), ($m.generic["primary-port"] // "--"), (($m.generic.ports // []) | map(split(" ")[0]) | join(",")), ($m.generic["own-numbers"][0] // "") ] | @tsv ' ++++ [mmsms:285] jq(): return 0 +++ [mmsms:2573] modem_info_string_from_json(): fields='11 huawei E173 huawei ttyUSB6 ttyUSB4,ttyUSB5,ttyUSB6,wwan1 +33695386096' +++ [mmsms:2578] modem_info_string_from_json(): [[ -z 11 huawei E173 huawei ttyUSB6 ttyUSB4,ttyUSB5,ttyUSB6,wwan1 +33695386096 ]] +++ [mmsms:2583] modem_info_string_from_json(): local id manufacturer model plugin primary ports phone cc_label +++ [mmsms:2584] modem_info_string_from_json(): IFS=' ' +++ [mmsms:2584] modem_info_string_from_json(): read -r id manufacturer model plugin primary ports phone ++++ [mmsms:2586] modem_info_string_from_json(): ensure_plus +33695386096 ++++ [mmsms:2226] ensure_plus(): local n=+33695386096 ++++ [mmsms:2228] ensure_plus(): [[ -z +33695386096 ]] ++++ [mmsms:2234] ensure_plus(): [[ +33695386096 != +* ]] ++++ [mmsms:2238] ensure_plus(): printf %s +33695386096 +++ [mmsms:2586] modem_info_string_from_json(): phone=+33695386096 +++ [mmsms:2588] modem_info_string_from_json(): [[ -n ttyUSB4,ttyUSB5,ttyUSB6,wwan1 ]] +++ [mmsms:2589] modem_info_string_from_json(): [[ -z 11 ]] +++ [mmsms:2593] modem_info_string_from_json(): [[ -n 11 ]] +++ [mmsms:2594] modem_info_string_from_json(): [[ -n +33695386096 ]] ++++ [mmsms:2596] modem_info_string_from_json(): phone_cc_label +33695386096 ++++ [mmsms:2219] phone_cc_label(): local cc +++++ [mmsms:2220] phone_cc_label(): phone_cc +33695386096 +++++ [mmsms:2189] phone_cc(): local n=+33695386096 +++++ [mmsms:2190] phone_cc(): [[ +33695386096 == +* ]] +++++ [mmsms:2192] phone_cc(): local d=33695386096 +++++ [mmsms:2194] phone_cc(): [[ 33695386096 == 1* ]] +++++ [mmsms:2200] phone_cc(): printf %s 33 +++++ [mmsms:2201] phone_cc(): return 0 ++++ [mmsms:2220] phone_cc_label(): cc=33 ++++ [mmsms:2221] phone_cc_label(): cc_to_label 33 ++++ [mmsms:2209] cc_to_label(): case "$1" in ++++ [mmsms:2211] cc_to_label(): printf FR +++ [mmsms:2596] modem_info_string_from_json(): cc_label=FR +++ [mmsms:2597] modem_info_string_from_json(): [[ -n FR ]] +++ [mmsms:2599] modem_info_string_from_json(): printf 'id='\''%s'\'' manufacturer='\''%s'\'' model='\''%s'\'' plugin='\''%s'\'' primary='\''%s'\'' ports='\''%s'\'' phone='\''%s'\'' cc='\''%s'\''' 11 huawei E173 huawei ttyUSB6 ttyUSB4,ttyUSB5,ttyUSB6,wwan1 +33695386096 FR ++ [mmsms:2621] get_modem_info(): info_string='id='\''11'\'' manufacturer='\''huawei'\'' model='\''E173'\'' plugin='\''huawei'\'' primary='\''ttyUSB6'\'' ports='\''ttyUSB4,ttyUSB5,ttyUSB6,wwan1'\'' phone='\''+33695386096'\'' cc='\''FR'\''' ++ [mmsms:2626] get_modem_info(): printf '%smodem={%s}' '' 'id='\''11'\'' manufacturer='\''huawei'\'' model='\''E173'\'' plugin='\''huawei'\'' primary='\''ttyUSB6'\'' ports='\''ttyUSB4,ttyUSB5,ttyUSB6,wwan1'\'' phone='\''+33695386096'\'' cc='\''FR'\''' + [mmsms:2651] log_modem_details(): info='modem={id='\''11'\'' manufacturer='\''huawei'\'' model='\''E173'\'' plugin='\''huawei'\'' primary='\''ttyUSB6'\'' ports='\''ttyUSB4,ttyUSB5,ttyUSB6,wwan1'\'' phone='\''+33695386096'\'' cc='\''FR'\''}' + [mmsms:2653] log_modem_details(): echo_debug 'modem={id='\''11'\'' manufacturer='\''huawei'\'' model='\''E173'\'' plugin='\''huawei'\'' primary='\''ttyUSB6'\'' ports='\''ttyUSB4,ttyUSB5,ttyUSB6,wwan1'\'' phone='\''+33695386096'\'' cc='\''FR'\''}' + [echo.sh:73] echo_debug(): [[ -z 1 ]] + [echo.sh:74] echo_debug(): local prefix=DBG + [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' + [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' 'modem={id='\''11'\'' manufacturer='\''huawei'\'' model='\''E173'\'' plugin='\''huawei'\'' primary='\''ttyUSB6'\'' ports='\''ttyUSB4,ttyUSB5,ttyUSB6,wwan1'\'' phone='\''+33695386096'\'' cc='\''FR'\''}' + [echo.sh:13] echo_fancy(): local prefix=DBG + [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' + [echo.sh:15] echo_fancy(): shift 2 + [echo.sh:17] echo_fancy(): local line + [echo.sh:18] echo_fancy(): line='DBG modem={id='\''11'\'' manufacturer='\''huawei'\'' model='\''E173'\'' plugin='\''huawei'\'' primary='\''ttyUSB6'\'' ports='\''ttyUSB4,ttyUSB5,ttyUSB6,wwan1'\'' phone='\''+33695386096'\'' cc='\''FR'\''}' + [echo.sh:20] echo_fancy(): local 'line_fmt=DBG modem={id='\''11'\'' manufacturer='\''huawei'\'' model='\''E173'\'' plugin='\''huawei'\'' primary='\''ttyUSB6'\'' ports='\''ttyUSB4,ttyUSB5,ttyUSB6,wwan1'\'' phone='\''+33695386096'\'' cc='\''FR'\''}' + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m modem={id='\''11'\'' manufacturer='\''huawei'\'' model='\''E173'\'' plugin='\''huawei'\'' primary='\''ttyUSB6'\'' ports='\''ttyUSB4,ttyUSB5,ttyUSB6,wwan1'\'' phone='\''+33695386096'\'' cc='\''FR'\''}' + [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m modem={id='\''11'\'' manufacturer='\''huawei'\'' model='\''E173'\'' plugin='\''huawei'\'' primary='\''ttyUSB6'\'' ports='\''ttyUSB4,ttyUSB5,ttyUSB6,wwan1'\'' phone='\''+33695386096'\'' cc='\''FR'\''}' DBG modem={id='11' manufacturer='huawei' model='E173' plugin='huawei' primary='ttyUSB6' ports='ttyUSB4,ttyUSB5,ttyUSB6,wwan1' phone='+33695386096' cc='FR'} + [echo.sh:30] echo_fancy(): [[ -z '' ]] + [echo.sh:30] echo_fancy(): return 0 + [mmsms:2654] log_modem_details(): return 0 + [mmsms:10249] resolve_modem_selection(): MODEM_DETAILS_LOGGED=1 + [mmsms:10278] resolve_modem_selection(): return 0 + [mmsms:10516] main(): resolve_rc=0 + [mmsms:10517] main(): (( resolve_rc != 0 )) + [mmsms:10523] main(): local dbg_args dbg_flags + [mmsms:10524] main(): (( 3 > 0 )) + [mmsms:10526] main(): local dbg_flags_str + [mmsms:10527] main(): printf -v dbg_flags_str '%q ' -a --debug --trace + [mmsms:10528] main(): dbg_flags=' flags=-a --debug --trace' + [mmsms:10530] main(): (( 0 > 0 )) + [mmsms:10536] main(): echo_debug 'command=stats flags=-a --debug --trace' + [echo.sh:73] echo_debug(): [[ -z 1 ]] + [echo.sh:74] echo_debug(): local prefix=DBG + [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' + [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' 'command=stats flags=-a --debug --trace' + [echo.sh:13] echo_fancy(): local prefix=DBG + [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' + [echo.sh:15] echo_fancy(): shift 2 + [echo.sh:17] echo_fancy(): local line + [echo.sh:18] echo_fancy(): line='DBG command=stats flags=-a --debug --trace' + [echo.sh:20] echo_fancy(): local 'line_fmt=DBG command=stats flags=-a --debug --trace' + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m command=stats flags=-a --debug --trace' + [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m command=stats flags=-a --debug --trace' DBG command=stats flags=-a --debug --trace + [echo.sh:30] echo_fancy(): [[ -z '' ]] + [echo.sh:30] echo_fancy(): return 0 + [mmsms:10538] main(): case "$command" in + [mmsms:10646] main(): sms_usage_stats + [mmsms:9390] sms_usage_stats(): local dir ++ [mmsms:9391] sms_usage_stats(): sms_daily_limit_state_dir ++ [mmsms:4054] sms_daily_limit_state_dir(): local dir=/var/lib/mmsms +++ [mmsms:4055] sms_daily_limit_state_dir(): trim /var/lib/mmsms +++ [mmsms:147] trim(): local s=/var/lib/mmsms +++ [mmsms:148] trim(): s=/var/lib/mmsms +++ [mmsms:149] trim(): s=/var/lib/mmsms +++ [mmsms:150] trim(): printf %s /var/lib/mmsms ++ [mmsms:4055] sms_daily_limit_state_dir(): dir=/var/lib/mmsms ++ [mmsms:4057] sms_daily_limit_state_dir(): [[ -z /var/lib/mmsms ]] ++ [mmsms:4062] sms_daily_limit_state_dir(): [[ ! -d /var/lib/mmsms ]] ++ [mmsms:4071] sms_daily_limit_state_dir(): printf %s /var/lib/mmsms ++ [mmsms:4072] sms_daily_limit_state_dir(): return 0 + [mmsms:9391] sms_usage_stats(): dir=/var/lib/mmsms + [mmsms:9397] sms_usage_stats(): files=() + [mmsms:9397] sms_usage_stats(): local -a files + [mmsms:9398] sms_usage_stats(): tokens=() + [mmsms:9398] sms_usage_stats(): local -a tokens + [mmsms:9400] sms_usage_stats(): [[ -n 1 ]] + [mmsms:9402] sms_usage_stats(): local path + [mmsms:9403] sms_usage_stats(): shopt -s nullglob + [mmsms:9404] sms_usage_stats(): for path in "$dir"/sms-count-*.state + [mmsms:9406] sms_usage_stats(): [[ -e /var/lib/mmsms/sms-count-33695386096.state ]] + [mmsms:9407] sms_usage_stats(): local base + [mmsms:9408] sms_usage_stats(): base=sms-count-33695386096.state + [mmsms:9409] sms_usage_stats(): local token + [mmsms:9410] sms_usage_stats(): token=33695386096.state + [mmsms:9411] sms_usage_stats(): token=33695386096 + [mmsms:9412] sms_usage_stats(): tokens+=("$token") + [mmsms:9413] sms_usage_stats(): files+=("$path") + [mmsms:9404] sms_usage_stats(): for path in "$dir"/sms-count-*.state + [mmsms:9406] sms_usage_stats(): [[ -e /var/lib/mmsms/sms-count-4915565447259.state ]] + [mmsms:9407] sms_usage_stats(): local base + [mmsms:9408] sms_usage_stats(): base=sms-count-4915565447259.state + [mmsms:9409] sms_usage_stats(): local token + [mmsms:9410] sms_usage_stats(): token=4915565447259.state + [mmsms:9411] sms_usage_stats(): token=4915565447259 + [mmsms:9412] sms_usage_stats(): tokens+=("$token") + [mmsms:9413] sms_usage_stats(): files+=("$path") + [mmsms:9404] sms_usage_stats(): for path in "$dir"/sms-count-*.state + [mmsms:9406] sms_usage_stats(): [[ -e /var/lib/mmsms/sms-count-global.state ]] + [mmsms:9407] sms_usage_stats(): local base + [mmsms:9408] sms_usage_stats(): base=sms-count-global.state + [mmsms:9409] sms_usage_stats(): local token + [mmsms:9410] sms_usage_stats(): token=global.state + [mmsms:9411] sms_usage_stats(): token=global + [mmsms:9412] sms_usage_stats(): tokens+=("$token") + [mmsms:9413] sms_usage_stats(): files+=("$path") + [mmsms:9415] sms_usage_stats(): shopt -u nullglob + [mmsms:9436] sms_usage_stats(): local stats_day= + [mmsms:9437] sms_usage_stats(): local stats_dump= + [mmsms:9438] sms_usage_stats(): local stats_reset= + [mmsms:9439] sms_usage_stats(): local include_history=0 + [mmsms:9440] sms_usage_stats(): [[ -n '' ]] + [mmsms:9440] sms_usage_stats(): [[ -n '' ]] + [mmsms:9445] sms_usage_stats(): [[ -n '' ]] + [mmsms:9520] sms_usage_stats(): sms_daily_usage_refresh_global + [mmsms:5802] sms_daily_usage_refresh_global(): local sent_var + [mmsms:5803] sms_daily_usage_refresh_global(): local failed_var + [mmsms:5804] sms_daily_usage_refresh_global(): local incoming_var + [mmsms:5805] sms_daily_usage_refresh_global(): local dir + [mmsms:5806] sms_daily_usage_refresh_global(): local global_file + [mmsms:5807] sms_daily_usage_refresh_global(): local today + [mmsms:5808] sms_daily_usage_refresh_global(): local total_sent + [mmsms:5809] sms_daily_usage_refresh_global(): local total_failed + [mmsms:5810] sms_daily_usage_refresh_global(): local total_incoming + [mmsms:5811] sms_daily_usage_refresh_global(): local path + [mmsms:5812] sms_daily_usage_refresh_global(): local entry_sent + [mmsms:5813] sms_daily_usage_refresh_global(): local entry_failed + [mmsms:5814] sms_daily_usage_refresh_global(): local entry_incoming + [mmsms:5815] sms_daily_usage_refresh_global(): local lock_handle + [mmsms:5816] sms_daily_usage_refresh_global(): local base_label + [mmsms:5817] sms_daily_usage_refresh_global(): local base_msisdn + [mmsms:5818] sms_daily_usage_refresh_global(): local opt + [mmsms:5820] sms_daily_usage_refresh_global(): total_sent=0 + [mmsms:5821] sms_daily_usage_refresh_global(): total_failed=0 + [mmsms:5822] sms_daily_usage_refresh_global(): total_incoming=0 + [mmsms:5824] sms_daily_usage_refresh_global(): (( 0 > 0 )) ++ [mmsms:5872] sms_daily_usage_refresh_global(): sms_daily_limit_state_dir ++ [mmsms:4054] sms_daily_limit_state_dir(): local dir=/var/lib/mmsms +++ [mmsms:4055] sms_daily_limit_state_dir(): trim /var/lib/mmsms +++ [mmsms:147] trim(): local s=/var/lib/mmsms +++ [mmsms:148] trim(): s=/var/lib/mmsms +++ [mmsms:149] trim(): s=/var/lib/mmsms +++ [mmsms:150] trim(): printf %s /var/lib/mmsms ++ [mmsms:4055] sms_daily_limit_state_dir(): dir=/var/lib/mmsms ++ [mmsms:4057] sms_daily_limit_state_dir(): [[ -z /var/lib/mmsms ]] ++ [mmsms:4062] sms_daily_limit_state_dir(): [[ ! -d /var/lib/mmsms ]] ++ [mmsms:4071] sms_daily_limit_state_dir(): printf %s /var/lib/mmsms ++ [mmsms:4072] sms_daily_limit_state_dir(): return 0 + [mmsms:5872] sms_daily_usage_refresh_global(): dir=/var/lib/mmsms ++ [mmsms:5878] sms_daily_usage_refresh_global(): sms_daily_limit_state_file global ++ [mmsms:4210] sms_daily_limit_state_file(): local token=global ++ [mmsms:4212] sms_daily_limit_state_file(): [[ -z global ]] ++ [mmsms:4221] sms_daily_limit_state_file(): local dir +++ [mmsms:4222] sms_daily_limit_state_file(): sms_daily_limit_state_dir +++ [mmsms:4054] sms_daily_limit_state_dir(): local dir=/var/lib/mmsms ++++ [mmsms:4055] sms_daily_limit_state_dir(): trim /var/lib/mmsms ++++ [mmsms:147] trim(): local s=/var/lib/mmsms ++++ [mmsms:148] trim(): s=/var/lib/mmsms ++++ [mmsms:149] trim(): s=/var/lib/mmsms ++++ [mmsms:150] trim(): printf %s /var/lib/mmsms +++ [mmsms:4055] sms_daily_limit_state_dir(): dir=/var/lib/mmsms +++ [mmsms:4057] sms_daily_limit_state_dir(): [[ -z /var/lib/mmsms ]] +++ [mmsms:4062] sms_daily_limit_state_dir(): [[ ! -d /var/lib/mmsms ]] +++ [mmsms:4071] sms_daily_limit_state_dir(): printf %s /var/lib/mmsms +++ [mmsms:4072] sms_daily_limit_state_dir(): return 0 ++ [mmsms:4222] sms_daily_limit_state_file(): dir=/var/lib/mmsms ++ [mmsms:4227] sms_daily_limit_state_file(): printf %s/sms-count-%s.state /var/lib/mmsms global ++ [mmsms:4228] sms_daily_limit_state_file(): return 0 + [mmsms:5878] sms_daily_usage_refresh_global(): global_file=/var/lib/mmsms/sms-count-global.state ++ [mmsms:5884] sms_daily_usage_refresh_global(): date +%Y-%m-%d + [mmsms:5884] sms_daily_usage_refresh_global(): today=2025-09-24 + [mmsms:5886] sms_daily_usage_refresh_global(): shopt -s nullglob + [mmsms:5887] sms_daily_usage_refresh_global(): for path in "$dir"/sms-count-*.state + [mmsms:5889] sms_daily_usage_refresh_global(): [[ -e /var/lib/mmsms/sms-count-33695386096.state ]] + [mmsms:5890] sms_daily_usage_refresh_global(): [[ /var/lib/mmsms/sms-count-33695386096.state == \/\v\a\r\/\l\i\b\/\m\m\s\m\s\/\s\m\s\-\c\o\u\n\t\-\g\l\o\b\a\l\.\s\t\a\t\e ]] + [mmsms:5895] sms_daily_usage_refresh_global(): entry_sent=0 + [mmsms:5896] sms_daily_usage_refresh_global(): entry_failed=0 + [mmsms:5897] sms_daily_usage_refresh_global(): entry_incoming=0 + [mmsms:5899] sms_daily_usage_refresh_global(): sms_daily_state_read_today --file /var/lib/mmsms/sms-count-33695386096.state --today 2025-09-24 --out-sent-var entry_sent --out-failed-var entry_failed --out-incoming-var entry_incoming + [mmsms:4448] sms_daily_state_read_today(): local file + [mmsms:4449] sms_daily_state_read_today(): local today + [mmsms:4450] sms_daily_state_read_today(): local sent_var + [mmsms:4451] sms_daily_state_read_today(): local failed_var + [mmsms:4452] sms_daily_state_read_today(): local incoming_var + [mmsms:4453] sms_daily_state_read_today(): local label_var + [mmsms:4454] sms_daily_state_read_today(): local msisdn_var + [mmsms:4455] sms_daily_state_read_today(): local day_date + [mmsms:4456] sms_daily_state_read_today(): local day_sent + [mmsms:4457] sms_daily_state_read_today(): local day_failed + [mmsms:4458] sms_daily_state_read_today(): local day_incoming + [mmsms:4459] sms_daily_state_read_today(): local day_label + [mmsms:4460] sms_daily_state_read_today(): local day_msisdn + [mmsms:4461] sms_daily_state_read_today(): local opt + [mmsms:4463] sms_daily_state_read_today(): (( 10 > 0 )) + [mmsms:4465] sms_daily_state_read_today(): opt=--file + [mmsms:4466] sms_daily_state_read_today(): case "$opt" in + [mmsms:4468] sms_daily_state_read_today(): shift + [mmsms:4469] sms_daily_state_read_today(): (( 9 == 0 )) + [mmsms:4474] sms_daily_state_read_today(): file=/var/lib/mmsms/sms-count-33695386096.state + [mmsms:4475] sms_daily_state_read_today(): shift + [mmsms:4476] sms_daily_state_read_today(): continue + [mmsms:4463] sms_daily_state_read_today(): (( 8 > 0 )) + [mmsms:4465] sms_daily_state_read_today(): opt=--today + [mmsms:4466] sms_daily_state_read_today(): case "$opt" in + [mmsms:4479] sms_daily_state_read_today(): shift + [mmsms:4480] sms_daily_state_read_today(): (( 7 == 0 )) + [mmsms:4485] sms_daily_state_read_today(): today=2025-09-24 + [mmsms:4486] sms_daily_state_read_today(): shift + [mmsms:4487] sms_daily_state_read_today(): continue + [mmsms:4463] sms_daily_state_read_today(): (( 6 > 0 )) + [mmsms:4465] sms_daily_state_read_today(): opt=--out-sent-var + [mmsms:4466] sms_daily_state_read_today(): case "$opt" in + [mmsms:4490] sms_daily_state_read_today(): shift + [mmsms:4491] sms_daily_state_read_today(): (( 5 == 0 )) + [mmsms:4496] sms_daily_state_read_today(): sent_var=entry_sent + [mmsms:4497] sms_daily_state_read_today(): shift + [mmsms:4498] sms_daily_state_read_today(): continue + [mmsms:4463] sms_daily_state_read_today(): (( 4 > 0 )) + [mmsms:4465] sms_daily_state_read_today(): opt=--out-failed-var + [mmsms:4466] sms_daily_state_read_today(): case "$opt" in + [mmsms:4501] sms_daily_state_read_today(): shift + [mmsms:4502] sms_daily_state_read_today(): (( 3 == 0 )) + [mmsms:4507] sms_daily_state_read_today(): failed_var=entry_failed + [mmsms:4508] sms_daily_state_read_today(): shift + [mmsms:4509] sms_daily_state_read_today(): continue + [mmsms:4463] sms_daily_state_read_today(): (( 2 > 0 )) + [mmsms:4465] sms_daily_state_read_today(): opt=--out-incoming-var + [mmsms:4466] sms_daily_state_read_today(): case "$opt" in + [mmsms:4512] sms_daily_state_read_today(): shift + [mmsms:4513] sms_daily_state_read_today(): (( 1 == 0 )) + [mmsms:4518] sms_daily_state_read_today(): incoming_var=entry_incoming + [mmsms:4519] sms_daily_state_read_today(): shift + [mmsms:4520] sms_daily_state_read_today(): continue + [mmsms:4463] sms_daily_state_read_today(): (( 0 > 0 )) + [mmsms:4555] sms_daily_state_read_today(): [[ -z /var/lib/mmsms/sms-count-33695386096.state ]] + [mmsms:4561] sms_daily_state_read_today(): [[ -z 2025-09-24 ]] + [mmsms:4567] sms_daily_state_read_today(): day_sent=0 + [mmsms:4568] sms_daily_state_read_today(): day_failed=0 + [mmsms:4569] sms_daily_state_read_today(): day_incoming=0 + [mmsms:4572] sms_daily_state_read_today(): sms_daily_state_read --file /var/lib/mmsms/sms-count-33695386096.state --out-date-var day_date --out-sent-var day_sent --out-failed-var day_failed --out-incoming-var day_incoming --out-label-var day_label --out-msisdn-var day_msisdn + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 14 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 13 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-33695386096.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=day_date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=day_sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=day_failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=day_incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-label-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4314] sms_daily_state_read(): shift + [mmsms:4315] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4320] sms_daily_state_read(): label_var=day_label + [mmsms:4321] sms_daily_state_read(): shift + [mmsms:4322] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-msisdn-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4325] sms_daily_state_read(): shift + [mmsms:4326] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4331] sms_daily_state_read(): msisdn_var=day_msisdn + [mmsms:4332] sms_daily_state_read(): shift + [mmsms:4333] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-33695386096.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-33695386096.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-33695386096.state + [mmsms:4373] sms_daily_state_read(): content='{ "date": "2025-09-24", "label": "+33695386096", "msisdn": "+33695386096", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } }' + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n { "date": "2025-09-24", "label": "+33695386096", "msisdn": "+33695386096", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } } ]] ++ [mmsms:4382] sms_daily_state_read(): jq -r '[.date // "", .label // "", .msisdn // "", (.outgoing.sent // 0), (.outgoing.failed // 0), (.incoming.received // 0)] | @tsv' + [mmsms:4382] sms_daily_state_read(): parsed='2025-09-24 +33695386096 +33695386096 1 0 1' + [mmsms:4384] sms_daily_state_read(): IFS=' ' + [mmsms:4384] sms_daily_state_read(): read -r state_date state_label state_msisdn state_sent state_failed state_incoming + [mmsms:4385] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4414] sms_daily_state_read(): [[ -n day_date ]] + [mmsms:4416] sms_daily_state_read(): printf -v day_date %s 2025-09-24 + [mmsms:4418] sms_daily_state_read(): [[ -n day_sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v day_sent %s 1 + [mmsms:4422] sms_daily_state_read(): [[ -n day_failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v day_failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n day_incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v day_incoming %s 1 + [mmsms:4430] sms_daily_state_read(): [[ -n day_label ]] + [mmsms:4432] sms_daily_state_read(): printf -v day_label %s +33695386096 + [mmsms:4434] sms_daily_state_read(): [[ -n day_msisdn ]] + [mmsms:4436] sms_daily_state_read(): printf -v day_msisdn %s +33695386096 + [mmsms:4438] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:4583] sms_daily_state_read_today(): [[ 2025-09-24 != \2\0\2\5\-\0\9\-\2\4 ]] + [mmsms:4590] sms_daily_state_read_today(): [[ -n entry_sent ]] + [mmsms:4592] sms_daily_state_read_today(): printf -v entry_sent %s 1 + [mmsms:4594] sms_daily_state_read_today(): [[ -n entry_failed ]] + [mmsms:4596] sms_daily_state_read_today(): printf -v entry_failed %s 0 + [mmsms:4598] sms_daily_state_read_today(): [[ -n entry_incoming ]] + [mmsms:4600] sms_daily_state_read_today(): printf -v entry_incoming %s 1 + [mmsms:4602] sms_daily_state_read_today(): [[ -n '' ]] + [mmsms:4606] sms_daily_state_read_today(): [[ -n '' ]] + [mmsms:4611] sms_daily_state_read_today(): return 0 + [mmsms:5908] sms_daily_usage_refresh_global(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:5913] sms_daily_usage_refresh_global(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:5918] sms_daily_usage_refresh_global(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:5923] sms_daily_usage_refresh_global(): total_sent=1 + [mmsms:5924] sms_daily_usage_refresh_global(): total_failed=0 + [mmsms:5925] sms_daily_usage_refresh_global(): total_incoming=1 + [mmsms:5887] sms_daily_usage_refresh_global(): for path in "$dir"/sms-count-*.state + [mmsms:5889] sms_daily_usage_refresh_global(): [[ -e /var/lib/mmsms/sms-count-4915565447259.state ]] + [mmsms:5890] sms_daily_usage_refresh_global(): [[ /var/lib/mmsms/sms-count-4915565447259.state == \/\v\a\r\/\l\i\b\/\m\m\s\m\s\/\s\m\s\-\c\o\u\n\t\-\g\l\o\b\a\l\.\s\t\a\t\e ]] + [mmsms:5895] sms_daily_usage_refresh_global(): entry_sent=0 + [mmsms:5896] sms_daily_usage_refresh_global(): entry_failed=0 + [mmsms:5897] sms_daily_usage_refresh_global(): entry_incoming=0 + [mmsms:5899] sms_daily_usage_refresh_global(): sms_daily_state_read_today --file /var/lib/mmsms/sms-count-4915565447259.state --today 2025-09-24 --out-sent-var entry_sent --out-failed-var entry_failed --out-incoming-var entry_incoming + [mmsms:4448] sms_daily_state_read_today(): local file + [mmsms:4449] sms_daily_state_read_today(): local today + [mmsms:4450] sms_daily_state_read_today(): local sent_var + [mmsms:4451] sms_daily_state_read_today(): local failed_var + [mmsms:4452] sms_daily_state_read_today(): local incoming_var + [mmsms:4453] sms_daily_state_read_today(): local label_var + [mmsms:4454] sms_daily_state_read_today(): local msisdn_var + [mmsms:4455] sms_daily_state_read_today(): local day_date + [mmsms:4456] sms_daily_state_read_today(): local day_sent + [mmsms:4457] sms_daily_state_read_today(): local day_failed + [mmsms:4458] sms_daily_state_read_today(): local day_incoming + [mmsms:4459] sms_daily_state_read_today(): local day_label + [mmsms:4460] sms_daily_state_read_today(): local day_msisdn + [mmsms:4461] sms_daily_state_read_today(): local opt + [mmsms:4463] sms_daily_state_read_today(): (( 10 > 0 )) + [mmsms:4465] sms_daily_state_read_today(): opt=--file + [mmsms:4466] sms_daily_state_read_today(): case "$opt" in + [mmsms:4468] sms_daily_state_read_today(): shift + [mmsms:4469] sms_daily_state_read_today(): (( 9 == 0 )) + [mmsms:4474] sms_daily_state_read_today(): file=/var/lib/mmsms/sms-count-4915565447259.state + [mmsms:4475] sms_daily_state_read_today(): shift + [mmsms:4476] sms_daily_state_read_today(): continue + [mmsms:4463] sms_daily_state_read_today(): (( 8 > 0 )) + [mmsms:4465] sms_daily_state_read_today(): opt=--today + [mmsms:4466] sms_daily_state_read_today(): case "$opt" in + [mmsms:4479] sms_daily_state_read_today(): shift + [mmsms:4480] sms_daily_state_read_today(): (( 7 == 0 )) + [mmsms:4485] sms_daily_state_read_today(): today=2025-09-24 + [mmsms:4486] sms_daily_state_read_today(): shift + [mmsms:4487] sms_daily_state_read_today(): continue + [mmsms:4463] sms_daily_state_read_today(): (( 6 > 0 )) + [mmsms:4465] sms_daily_state_read_today(): opt=--out-sent-var + [mmsms:4466] sms_daily_state_read_today(): case "$opt" in + [mmsms:4490] sms_daily_state_read_today(): shift + [mmsms:4491] sms_daily_state_read_today(): (( 5 == 0 )) + [mmsms:4496] sms_daily_state_read_today(): sent_var=entry_sent + [mmsms:4497] sms_daily_state_read_today(): shift + [mmsms:4498] sms_daily_state_read_today(): continue + [mmsms:4463] sms_daily_state_read_today(): (( 4 > 0 )) + [mmsms:4465] sms_daily_state_read_today(): opt=--out-failed-var + [mmsms:4466] sms_daily_state_read_today(): case "$opt" in + [mmsms:4501] sms_daily_state_read_today(): shift + [mmsms:4502] sms_daily_state_read_today(): (( 3 == 0 )) + [mmsms:4507] sms_daily_state_read_today(): failed_var=entry_failed + [mmsms:4508] sms_daily_state_read_today(): shift + [mmsms:4509] sms_daily_state_read_today(): continue + [mmsms:4463] sms_daily_state_read_today(): (( 2 > 0 )) + [mmsms:4465] sms_daily_state_read_today(): opt=--out-incoming-var + [mmsms:4466] sms_daily_state_read_today(): case "$opt" in + [mmsms:4512] sms_daily_state_read_today(): shift + [mmsms:4513] sms_daily_state_read_today(): (( 1 == 0 )) + [mmsms:4518] sms_daily_state_read_today(): incoming_var=entry_incoming + [mmsms:4519] sms_daily_state_read_today(): shift + [mmsms:4520] sms_daily_state_read_today(): continue + [mmsms:4463] sms_daily_state_read_today(): (( 0 > 0 )) + [mmsms:4555] sms_daily_state_read_today(): [[ -z /var/lib/mmsms/sms-count-4915565447259.state ]] + [mmsms:4561] sms_daily_state_read_today(): [[ -z 2025-09-24 ]] + [mmsms:4567] sms_daily_state_read_today(): day_sent=0 + [mmsms:4568] sms_daily_state_read_today(): day_failed=0 + [mmsms:4569] sms_daily_state_read_today(): day_incoming=0 + [mmsms:4572] sms_daily_state_read_today(): sms_daily_state_read --file /var/lib/mmsms/sms-count-4915565447259.state --out-date-var day_date --out-sent-var day_sent --out-failed-var day_failed --out-incoming-var day_incoming --out-label-var day_label --out-msisdn-var day_msisdn + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 14 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 13 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-4915565447259.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=day_date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=day_sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=day_failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=day_incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-label-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4314] sms_daily_state_read(): shift + [mmsms:4315] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4320] sms_daily_state_read(): label_var=day_label + [mmsms:4321] sms_daily_state_read(): shift + [mmsms:4322] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-msisdn-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4325] sms_daily_state_read(): shift + [mmsms:4326] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4331] sms_daily_state_read(): msisdn_var=day_msisdn + [mmsms:4332] sms_daily_state_read(): shift + [mmsms:4333] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-4915565447259.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-4915565447259.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-4915565447259.state + [mmsms:4373] sms_daily_state_read(): content='{ "date": "2025-09-24", "label": "+4915565447259", "msisdn": "+4915565447259", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } }' + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n { "date": "2025-09-24", "label": "+4915565447259", "msisdn": "+4915565447259", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } } ]] ++ [mmsms:4382] sms_daily_state_read(): jq -r '[.date // "", .label // "", .msisdn // "", (.outgoing.sent // 0), (.outgoing.failed // 0), (.incoming.received // 0)] | @tsv' + [mmsms:4382] sms_daily_state_read(): parsed='2025-09-24 +4915565447259 +4915565447259 1 0 1' + [mmsms:4384] sms_daily_state_read(): IFS=' ' + [mmsms:4384] sms_daily_state_read(): read -r state_date state_label state_msisdn state_sent state_failed state_incoming + [mmsms:4385] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4414] sms_daily_state_read(): [[ -n day_date ]] + [mmsms:4416] sms_daily_state_read(): printf -v day_date %s 2025-09-24 + [mmsms:4418] sms_daily_state_read(): [[ -n day_sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v day_sent %s 1 + [mmsms:4422] sms_daily_state_read(): [[ -n day_failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v day_failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n day_incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v day_incoming %s 1 + [mmsms:4430] sms_daily_state_read(): [[ -n day_label ]] + [mmsms:4432] sms_daily_state_read(): printf -v day_label %s +4915565447259 + [mmsms:4434] sms_daily_state_read(): [[ -n day_msisdn ]] + [mmsms:4436] sms_daily_state_read(): printf -v day_msisdn %s +4915565447259 + [mmsms:4438] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:4583] sms_daily_state_read_today(): [[ 2025-09-24 != \2\0\2\5\-\0\9\-\2\4 ]] + [mmsms:4590] sms_daily_state_read_today(): [[ -n entry_sent ]] + [mmsms:4592] sms_daily_state_read_today(): printf -v entry_sent %s 1 + [mmsms:4594] sms_daily_state_read_today(): [[ -n entry_failed ]] + [mmsms:4596] sms_daily_state_read_today(): printf -v entry_failed %s 0 + [mmsms:4598] sms_daily_state_read_today(): [[ -n entry_incoming ]] + [mmsms:4600] sms_daily_state_read_today(): printf -v entry_incoming %s 1 + [mmsms:4602] sms_daily_state_read_today(): [[ -n '' ]] + [mmsms:4606] sms_daily_state_read_today(): [[ -n '' ]] + [mmsms:4611] sms_daily_state_read_today(): return 0 + [mmsms:5908] sms_daily_usage_refresh_global(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:5913] sms_daily_usage_refresh_global(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:5918] sms_daily_usage_refresh_global(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:5923] sms_daily_usage_refresh_global(): total_sent=2 + [mmsms:5924] sms_daily_usage_refresh_global(): total_failed=0 + [mmsms:5925] sms_daily_usage_refresh_global(): total_incoming=2 + [mmsms:5887] sms_daily_usage_refresh_global(): for path in "$dir"/sms-count-*.state + [mmsms:5889] sms_daily_usage_refresh_global(): [[ -e /var/lib/mmsms/sms-count-global.state ]] + [mmsms:5890] sms_daily_usage_refresh_global(): [[ /var/lib/mmsms/sms-count-global.state == \/\v\a\r\/\l\i\b\/\m\m\s\m\s\/\s\m\s\-\c\o\u\n\t\-\g\l\o\b\a\l\.\s\t\a\t\e ]] + [mmsms:5892] sms_daily_usage_refresh_global(): continue + [mmsms:5927] sms_daily_usage_refresh_global(): shopt -u nullglob + [mmsms:5929] sms_daily_usage_refresh_global(): sms_daily_limit_lock_acquire /var/lib/mmsms/sms-count-global.state lock_handle + [mmsms:5111] sms_daily_limit_lock_acquire(): local file=/var/lib/mmsms/sms-count-global.state + [mmsms:5112] sms_daily_limit_lock_acquire(): local __out_var=lock_handle + [mmsms:5113] sms_daily_limit_lock_acquire(): local lock_path=/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5115] sms_daily_limit_lock_acquire(): command -v flock + [mmsms:5117] sms_daily_limit_lock_acquire(): exec + [mmsms:5118] sms_daily_limit_lock_acquire(): flock 10 + [mmsms:5120] sms_daily_limit_lock_acquire(): printf -v lock_handle flock:%s:%s 10 /var/lib/mmsms/sms-count-global.state.lock + [mmsms:5121] sms_daily_limit_lock_acquire(): return 0 + [mmsms:5935] sms_daily_usage_refresh_global(): base_label= + [mmsms:5936] sms_daily_usage_refresh_global(): base_msisdn= + [mmsms:5938] sms_daily_usage_refresh_global(): sms_daily_state_read --file /var/lib/mmsms/sms-count-global.state --out-label-var base_label --out-msisdn-var base_msisdn + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-global.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-label-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4314] sms_daily_state_read(): shift + [mmsms:4315] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4320] sms_daily_state_read(): label_var=base_label + [mmsms:4321] sms_daily_state_read(): shift + [mmsms:4322] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-msisdn-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4325] sms_daily_state_read(): shift + [mmsms:4326] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4331] sms_daily_state_read(): msisdn_var=base_msisdn + [mmsms:4332] sms_daily_state_read(): shift + [mmsms:4333] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-global.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-global.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-global.state + [mmsms:4373] sms_daily_state_read(): content= + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4414] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4418] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4422] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4426] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4430] sms_daily_state_read(): [[ -n base_label ]] + [mmsms:4432] sms_daily_state_read(): printf -v base_label %s '' + [mmsms:4434] sms_daily_state_read(): [[ -n base_msisdn ]] + [mmsms:4436] sms_daily_state_read(): printf -v base_msisdn %s '' + [mmsms:4438] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:5946] sms_daily_usage_refresh_global(): [[ -z '' ]] + [mmsms:5948] sms_daily_usage_refresh_global(): base_label=global + [mmsms:5952] sms_daily_usage_refresh_global(): sms_daily_state_write_locked --file /var/lib/mmsms/sms-count-global.state --date 2025-09-24 --label global --msisdn '' --sent 2 --failed 0 --incoming 2 + [mmsms:4616] sms_daily_state_write_locked(): local file + [mmsms:4617] sms_daily_state_write_locked(): local date + [mmsms:4618] sms_daily_state_write_locked(): local label + [mmsms:4619] sms_daily_state_write_locked(): local msisdn + [mmsms:4620] sms_daily_state_write_locked(): local sent + [mmsms:4621] sms_daily_state_write_locked(): local failed + [mmsms:4622] sms_daily_state_write_locked(): local incoming + [mmsms:4623] sms_daily_state_write_locked(): local dir + [mmsms:4624] sms_daily_state_write_locked(): local tmp + [mmsms:4625] sms_daily_state_write_locked(): local base + [mmsms:4626] sms_daily_state_write_locked(): local new_json + [mmsms:4627] sms_daily_state_write_locked(): local history_days + [mmsms:4628] sms_daily_state_write_locked(): local history_limit + [mmsms:4629] sms_daily_state_write_locked(): local opt + [mmsms:4631] sms_daily_state_write_locked(): sent=0 + [mmsms:4632] sms_daily_state_write_locked(): failed=0 + [mmsms:4633] sms_daily_state_write_locked(): incoming=0 + [mmsms:4635] sms_daily_state_write_locked(): (( 14 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--file + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4640] sms_daily_state_write_locked(): shift + [mmsms:4641] sms_daily_state_write_locked(): (( 13 == 0 )) + [mmsms:4646] sms_daily_state_write_locked(): file=/var/lib/mmsms/sms-count-global.state + [mmsms:4647] sms_daily_state_write_locked(): shift + [mmsms:4648] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 12 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--date + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4651] sms_daily_state_write_locked(): shift + [mmsms:4652] sms_daily_state_write_locked(): (( 11 == 0 )) + [mmsms:4657] sms_daily_state_write_locked(): date=2025-09-24 + [mmsms:4658] sms_daily_state_write_locked(): shift + [mmsms:4659] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 10 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--label + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4662] sms_daily_state_write_locked(): shift + [mmsms:4663] sms_daily_state_write_locked(): (( 9 == 0 )) + [mmsms:4668] sms_daily_state_write_locked(): label=global + [mmsms:4669] sms_daily_state_write_locked(): shift + [mmsms:4670] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 8 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--msisdn + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4673] sms_daily_state_write_locked(): shift + [mmsms:4674] sms_daily_state_write_locked(): (( 7 == 0 )) + [mmsms:4679] sms_daily_state_write_locked(): msisdn= + [mmsms:4680] sms_daily_state_write_locked(): shift + [mmsms:4681] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 6 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--sent + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4684] sms_daily_state_write_locked(): shift + [mmsms:4685] sms_daily_state_write_locked(): (( 5 == 0 )) + [mmsms:4690] sms_daily_state_write_locked(): sent=2 + [mmsms:4691] sms_daily_state_write_locked(): shift + [mmsms:4692] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 4 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--failed + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4695] sms_daily_state_write_locked(): shift + [mmsms:4696] sms_daily_state_write_locked(): (( 3 == 0 )) + [mmsms:4701] sms_daily_state_write_locked(): failed=0 + [mmsms:4702] sms_daily_state_write_locked(): shift + [mmsms:4703] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 2 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--incoming + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4706] sms_daily_state_write_locked(): shift + [mmsms:4707] sms_daily_state_write_locked(): (( 1 == 0 )) + [mmsms:4712] sms_daily_state_write_locked(): incoming=2 + [mmsms:4713] sms_daily_state_write_locked(): shift + [mmsms:4714] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 0 > 0 )) + [mmsms:4727] sms_daily_state_write_locked(): [[ -z /var/lib/mmsms/sms-count-global.state ]] + [mmsms:4733] sms_daily_state_write_locked(): [[ -z 2025-09-24 ]] + [mmsms:4739] sms_daily_state_write_locked(): [[ -z 2 ]] + [mmsms:4739] sms_daily_state_write_locked(): [[ ! 2 =~ ^-?[0-9]+$ ]] + [mmsms:4744] sms_daily_state_write_locked(): [[ -z 0 ]] + [mmsms:4744] sms_daily_state_write_locked(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:4749] sms_daily_state_write_locked(): [[ -z 2 ]] + [mmsms:4749] sms_daily_state_write_locked(): [[ ! 2 =~ ^-?[0-9]+$ ]] + [mmsms:4754] sms_daily_state_write_locked(): history_days=7 + [mmsms:4755] sms_daily_state_write_locked(): [[ ! 7 =~ ^[0-9]+$ ]] + [mmsms:4758] sms_daily_state_write_locked(): (( history_days < 1 )) + [mmsms:4762] sms_daily_state_write_locked(): history_limit=6 + [mmsms:4763] sms_daily_state_write_locked(): (( history_limit < 0 )) ++ [mmsms:4768] sms_daily_state_write_locked(): dirname /var/lib/mmsms/sms-count-global.state + [mmsms:4768] sms_daily_state_write_locked(): dir=/var/lib/mmsms ++ [mmsms:4770] sms_daily_state_write_locked(): mktemp /var/lib/mmsms/.sms-count.XXXXXX + [mmsms:4770] sms_daily_state_write_locked(): tmp=/var/lib/mmsms/.sms-count.fChJFo + [mmsms:4776] sms_daily_state_write_locked(): base='{}' + [mmsms:4777] sms_daily_state_write_locked(): [[ -r /var/lib/mmsms/sms-count-global.state ]] ++ [mmsms:4779] sms_daily_state_write_locked(): cat /var/lib/mmsms/sms-count-global.state + [mmsms:4779] sms_daily_state_write_locked(): base= + [mmsms:4781] sms_daily_state_write_locked(): : ++ [mmsms:4818] sms_daily_state_write_locked(): jq --arg date 2025-09-24 --arg label global --arg msisdn '' --argjson sent 2 --argjson failed 0 --argjson incoming 2 --argjson history_limit 6 'def mkentry($d; $label; $msisdn; $sent; $failed; $incoming): (if $d == "" then {} else {date:$d} end) + (if $label == "" then {} else {label:$label} end) + (if $msisdn == "" then {} else {msisdn:$msisdn} end) + {outgoing:{sent:$sent, failed:$failed}, incoming:{received:$incoming}}; def ensure_history($hist): if ($hist // empty) | type == "array" then $hist else [] end; def trim_history($hist; $limit): if $limit <= 0 then [] else $hist[:$limit] end; . as $existing | ($existing.date // "") as $orig_date | ($existing.label // "") as $orig_label | ($existing.msisdn // "") as $orig_msisdn | ($existing.outgoing.sent // 0) as $orig_sent | ($existing.outgoing.failed // 0) as $orig_failed | ($existing.incoming.received // 0) as $orig_incoming | ensure_history($existing.history) as $existing_hist | (if $orig_date != "" and $orig_date != $date then trim_history([mkentry($orig_date; $orig_label; $orig_msisdn; $orig_sent; $orig_failed; $orig_incoming)] + $existing_hist; $history_limit) else trim_history($existing_hist; $history_limit) end) as $hist | mkentry($date; $label; $msisdn; $sent; $failed; $incoming) + (if ($hist | length) > 0 then {history:$hist} else {} end)' + [mmsms:4818] sms_daily_state_write_locked(): new_json= + [mmsms:4837] sms_daily_state_write_locked(): printf '%s\n' '' + [mmsms:4844] sms_daily_state_write_locked(): mv /var/lib/mmsms/.sms-count.fChJFo /var/lib/mmsms/sms-count-global.state + [mmsms:4851] sms_daily_state_write_locked(): return 0 + [mmsms:5965] sms_daily_usage_refresh_global(): sms_daily_limit_lock_release flock:10:/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5144] sms_daily_limit_lock_release(): local handle=flock:10:/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5145] sms_daily_limit_lock_release(): [[ -z flock:10:/var/lib/mmsms/sms-count-global.state.lock ]] + [mmsms:5147] sms_daily_limit_lock_release(): local type=flock + [mmsms:5148] sms_daily_limit_lock_release(): local rest=10:/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5150] sms_daily_limit_lock_release(): case "$type" in + [mmsms:5152] sms_daily_limit_lock_release(): local fd=10 + [mmsms:5153] sms_daily_limit_lock_release(): local path=/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5154] sms_daily_limit_lock_release(): [[ 10 =~ ^[0-9]+$ ]] + [mmsms:5156] sms_daily_limit_lock_release(): eval 'exec 10>&-' ++ [mmsms:5156] sms_daily_limit_lock_release(): exec + [mmsms:5158] sms_daily_limit_lock_release(): [[ -n /var/lib/mmsms/sms-count-global.state.lock ]] + [mmsms:5158] sms_daily_limit_lock_release(): rm -f /var/lib/mmsms/sms-count-global.state.lock + [mmsms:5967] sms_daily_usage_refresh_global(): sms_daily_usage_fix_global_state + [mmsms:5989] sms_daily_usage_fix_global_state(): local global_file ++ [mmsms:5990] sms_daily_usage_fix_global_state(): sms_daily_limit_state_file global ++ [mmsms:4210] sms_daily_limit_state_file(): local token=global ++ [mmsms:4212] sms_daily_limit_state_file(): [[ -z global ]] ++ [mmsms:4221] sms_daily_limit_state_file(): local dir +++ [mmsms:4222] sms_daily_limit_state_file(): sms_daily_limit_state_dir +++ [mmsms:4054] sms_daily_limit_state_dir(): local dir=/var/lib/mmsms ++++ [mmsms:4055] sms_daily_limit_state_dir(): trim /var/lib/mmsms ++++ [mmsms:147] trim(): local s=/var/lib/mmsms ++++ [mmsms:148] trim(): s=/var/lib/mmsms ++++ [mmsms:149] trim(): s=/var/lib/mmsms ++++ [mmsms:150] trim(): printf %s /var/lib/mmsms +++ [mmsms:4055] sms_daily_limit_state_dir(): dir=/var/lib/mmsms +++ [mmsms:4057] sms_daily_limit_state_dir(): [[ -z /var/lib/mmsms ]] +++ [mmsms:4062] sms_daily_limit_state_dir(): [[ ! -d /var/lib/mmsms ]] +++ [mmsms:4071] sms_daily_limit_state_dir(): printf %s /var/lib/mmsms +++ [mmsms:4072] sms_daily_limit_state_dir(): return 0 ++ [mmsms:4222] sms_daily_limit_state_file(): dir=/var/lib/mmsms ++ [mmsms:4227] sms_daily_limit_state_file(): printf %s/sms-count-%s.state /var/lib/mmsms global ++ [mmsms:4228] sms_daily_limit_state_file(): return 0 + [mmsms:5990] sms_daily_usage_fix_global_state(): global_file=/var/lib/mmsms/sms-count-global.state + [mmsms:5995] sms_daily_usage_fix_global_state(): local file_exists + [mmsms:5996] sms_daily_usage_fix_global_state(): file_exists=0 + [mmsms:5997] sms_daily_usage_fix_global_state(): [[ -e /var/lib/mmsms/sms-count-global.state ]] + [mmsms:5999] sms_daily_usage_fix_global_state(): file_exists=1 + [mmsms:6002] sms_daily_usage_fix_global_state(): local file_empty + [mmsms:6003] sms_daily_usage_fix_global_state(): file_empty=1 + [mmsms:6004] sms_daily_usage_fix_global_state(): [[ -s /var/lib/mmsms/sms-count-global.state ]] + [mmsms:6006] sms_daily_usage_fix_global_state(): file_empty=0 + [mmsms:6009] sms_daily_usage_fix_global_state(): local lock_handle + [mmsms:6010] sms_daily_usage_fix_global_state(): sms_daily_limit_lock_acquire /var/lib/mmsms/sms-count-global.state lock_handle + [mmsms:5111] sms_daily_limit_lock_acquire(): local file=/var/lib/mmsms/sms-count-global.state + [mmsms:5112] sms_daily_limit_lock_acquire(): local __out_var=lock_handle + [mmsms:5113] sms_daily_limit_lock_acquire(): local lock_path=/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5115] sms_daily_limit_lock_acquire(): command -v flock + [mmsms:5117] sms_daily_limit_lock_acquire(): exec + [mmsms:5118] sms_daily_limit_lock_acquire(): flock 10 + [mmsms:5120] sms_daily_limit_lock_acquire(): printf -v lock_handle flock:%s:%s 10 /var/lib/mmsms/sms-count-global.state.lock + [mmsms:5121] sms_daily_limit_lock_acquire(): return 0 + [mmsms:6016] sms_daily_usage_fix_global_state(): local state_date + [mmsms:6017] sms_daily_usage_fix_global_state(): local state_label + [mmsms:6018] sms_daily_usage_fix_global_state(): local state_msisdn + [mmsms:6019] sms_daily_usage_fix_global_state(): local state_sent + [mmsms:6020] sms_daily_usage_fix_global_state(): local state_failed + [mmsms:6021] sms_daily_usage_fix_global_state(): local state_incoming + [mmsms:6022] sms_daily_usage_fix_global_state(): local state_history_json + [mmsms:6023] sms_daily_usage_fix_global_state(): state_sent=0 + [mmsms:6024] sms_daily_usage_fix_global_state(): state_failed=0 + [mmsms:6025] sms_daily_usage_fix_global_state(): state_incoming=0 + [mmsms:6026] sms_daily_usage_fix_global_state(): state_history_json='[]' + [mmsms:6028] sms_daily_usage_fix_global_state(): (( file_exists )) + [mmsms:6031] sms_daily_usage_fix_global_state(): sms_daily_state_read --file /var/lib/mmsms/sms-count-global.state --out-date-var state_date --out-label-var state_label --out-msisdn-var state_msisdn --out-sent-var state_sent --out-failed-var state_failed --out-incoming-var state_incoming --out-history-json-var state_history_json + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 16 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 15 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-global.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 14 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 13 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=state_date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-label-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4314] sms_daily_state_read(): shift + [mmsms:4315] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4320] sms_daily_state_read(): label_var=state_label + [mmsms:4321] sms_daily_state_read(): shift + [mmsms:4322] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-msisdn-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4325] sms_daily_state_read(): shift + [mmsms:4326] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4331] sms_daily_state_read(): msisdn_var=state_msisdn + [mmsms:4332] sms_daily_state_read(): shift + [mmsms:4333] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=state_sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=state_failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=state_incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-history-json-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4336] sms_daily_state_read(): shift + [mmsms:4337] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4342] sms_daily_state_read(): history_var=state_history_json + [mmsms:4343] sms_daily_state_read(): shift + [mmsms:4344] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-global.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n state_history_json ]] + [mmsms:4368] sms_daily_state_read(): state_history_json='[]' + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-global.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-global.state + [mmsms:4373] sms_daily_state_read(): content= + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4414] sms_daily_state_read(): [[ -n state_date ]] + [mmsms:4416] sms_daily_state_read(): printf -v state_date %s '' + [mmsms:4418] sms_daily_state_read(): [[ -n state_sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v state_sent %s 0 + [mmsms:4422] sms_daily_state_read(): [[ -n state_failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v state_failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n state_incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v state_incoming %s 0 + [mmsms:4430] sms_daily_state_read(): [[ -n state_label ]] + [mmsms:4432] sms_daily_state_read(): printf -v state_label %s '' + [mmsms:4434] sms_daily_state_read(): [[ -n state_msisdn ]] + [mmsms:4436] sms_daily_state_read(): printf -v state_msisdn %s '' + [mmsms:4438] sms_daily_state_read(): [[ -n state_history_json ]] + [mmsms:4440] sms_daily_state_read(): printf -v state_history_json %s '[]' + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:6046] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6051] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6056] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6061] sms_daily_usage_fix_global_state(): local state_dir ++ [mmsms:6062] sms_daily_usage_fix_global_state(): dirname /var/lib/mmsms/sms-count-global.state + [mmsms:6062] sms_daily_usage_fix_global_state(): state_dir=/var/lib/mmsms + [mmsms:6064] sms_daily_usage_fix_global_state(): aggregated_sent=() + [mmsms:6064] sms_daily_usage_fix_global_state(): declare -A aggregated_sent + [mmsms:6065] sms_daily_usage_fix_global_state(): aggregated_failed=() + [mmsms:6065] sms_daily_usage_fix_global_state(): declare -A aggregated_failed + [mmsms:6066] sms_daily_usage_fix_global_state(): aggregated_incoming=() + [mmsms:6066] sms_daily_usage_fix_global_state(): declare -A aggregated_incoming + [mmsms:6067] sms_daily_usage_fix_global_state(): aggregated_seen=() + [mmsms:6067] sms_daily_usage_fix_global_state(): declare -A aggregated_seen + [mmsms:6068] sms_daily_usage_fix_global_state(): aggregated_order=() + [mmsms:6068] sms_daily_usage_fix_global_state(): local -a aggregated_order + [mmsms:6070] sms_daily_usage_fix_global_state(): [[ -d /var/lib/mmsms ]] + [mmsms:6072] sms_daily_usage_fix_global_state(): local path + [mmsms:6073] sms_daily_usage_fix_global_state(): shopt -s nullglob + [mmsms:6074] sms_daily_usage_fix_global_state(): for path in "$state_dir"/sms-count-*.state + [mmsms:6076] sms_daily_usage_fix_global_state(): [[ ! -e /var/lib/mmsms/sms-count-33695386096.state ]] + [mmsms:6081] sms_daily_usage_fix_global_state(): [[ /var/lib/mmsms/sms-count-33695386096.state == \/\v\a\r\/\l\i\b\/\m\m\s\m\s\/\s\m\s\-\c\o\u\n\t\-\g\l\o\b\a\l\.\s\t\a\t\e ]] + [mmsms:6086] sms_daily_usage_fix_global_state(): local entry_date + [mmsms:6087] sms_daily_usage_fix_global_state(): local entry_sent + [mmsms:6088] sms_daily_usage_fix_global_state(): local entry_failed + [mmsms:6089] sms_daily_usage_fix_global_state(): local entry_incoming + [mmsms:6090] sms_daily_usage_fix_global_state(): local entry_history_json + [mmsms:6091] sms_daily_usage_fix_global_state(): entry_sent=0 + [mmsms:6092] sms_daily_usage_fix_global_state(): entry_failed=0 + [mmsms:6093] sms_daily_usage_fix_global_state(): entry_incoming=0 + [mmsms:6094] sms_daily_usage_fix_global_state(): entry_history_json='[]' + [mmsms:6097] sms_daily_usage_fix_global_state(): sms_daily_state_read --file /var/lib/mmsms/sms-count-33695386096.state --out-date-var entry_date --out-sent-var entry_sent --out-failed-var entry_failed --out-incoming-var entry_incoming --out-history-json-var entry_history_json + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-33695386096.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=entry_date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=entry_sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=entry_failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=entry_incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-history-json-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4336] sms_daily_state_read(): shift + [mmsms:4337] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4342] sms_daily_state_read(): history_var=entry_history_json + [mmsms:4343] sms_daily_state_read(): shift + [mmsms:4344] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-33695386096.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n entry_history_json ]] + [mmsms:4368] sms_daily_state_read(): state_history_json='[]' + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-33695386096.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-33695386096.state + [mmsms:4373] sms_daily_state_read(): content='{ "date": "2025-09-24", "label": "+33695386096", "msisdn": "+33695386096", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } }' + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n { "date": "2025-09-24", "label": "+33695386096", "msisdn": "+33695386096", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } } ]] ++ [mmsms:4382] sms_daily_state_read(): jq -r '[.date // "", .label // "", .msisdn // "", (.outgoing.sent // 0), (.outgoing.failed // 0), (.incoming.received // 0)] | @tsv' + [mmsms:4382] sms_daily_state_read(): parsed='2025-09-24 +33695386096 +33695386096 1 0 1' + [mmsms:4384] sms_daily_state_read(): IFS=' ' + [mmsms:4384] sms_daily_state_read(): read -r state_date state_label state_msisdn state_sent state_failed state_incoming + [mmsms:4385] sms_daily_state_read(): [[ -n entry_history_json ]] ++ [mmsms:4387] sms_daily_state_read(): jq -c '.history // []' + [mmsms:4387] sms_daily_state_read(): state_history_json='[]' + [mmsms:4389] sms_daily_state_read(): : + [mmsms:4414] sms_daily_state_read(): [[ -n entry_date ]] + [mmsms:4416] sms_daily_state_read(): printf -v entry_date %s 2025-09-24 + [mmsms:4418] sms_daily_state_read(): [[ -n entry_sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v entry_sent %s 1 + [mmsms:4422] sms_daily_state_read(): [[ -n entry_failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v entry_failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n entry_incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v entry_incoming %s 1 + [mmsms:4430] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4434] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4438] sms_daily_state_read(): [[ -n entry_history_json ]] + [mmsms:4440] sms_daily_state_read(): printf -v entry_history_json %s '[]' + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:6107] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6112] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6117] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6122] sms_daily_usage_fix_global_state(): [[ -n 2025-09-24 ]] + [mmsms:6124] sms_daily_usage_fix_global_state(): [[ -z '' ]] + [mmsms:6126] sms_daily_usage_fix_global_state(): aggregated_order+=("$entry_date") + [mmsms:6127] sms_daily_usage_fix_global_state(): aggregated_seen["$entry_date"]=1 + [mmsms:6130] sms_daily_usage_fix_global_state(): local current_sent + [mmsms:6131] sms_daily_usage_fix_global_state(): current_sent=0 + [mmsms:6132] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6137] sms_daily_usage_fix_global_state(): local current_failed + [mmsms:6138] sms_daily_usage_fix_global_state(): current_failed=0 + [mmsms:6139] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6144] sms_daily_usage_fix_global_state(): local current_incoming + [mmsms:6145] sms_daily_usage_fix_global_state(): current_incoming=0 + [mmsms:6146] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6151] sms_daily_usage_fix_global_state(): aggregated_sent["$entry_date"]=1 + [mmsms:6152] sms_daily_usage_fix_global_state(): aggregated_failed["$entry_date"]=0 + [mmsms:6153] sms_daily_usage_fix_global_state(): aggregated_incoming["$entry_date"]=1 + [mmsms:6156] sms_daily_usage_fix_global_state(): [[ -n [] ]] + [mmsms:6156] sms_daily_usage_fix_global_state(): [[ [] != \[\] ]] + [mmsms:6074] sms_daily_usage_fix_global_state(): for path in "$state_dir"/sms-count-*.state + [mmsms:6076] sms_daily_usage_fix_global_state(): [[ ! -e /var/lib/mmsms/sms-count-4915565447259.state ]] + [mmsms:6081] sms_daily_usage_fix_global_state(): [[ /var/lib/mmsms/sms-count-4915565447259.state == \/\v\a\r\/\l\i\b\/\m\m\s\m\s\/\s\m\s\-\c\o\u\n\t\-\g\l\o\b\a\l\.\s\t\a\t\e ]] + [mmsms:6086] sms_daily_usage_fix_global_state(): local entry_date + [mmsms:6087] sms_daily_usage_fix_global_state(): local entry_sent + [mmsms:6088] sms_daily_usage_fix_global_state(): local entry_failed + [mmsms:6089] sms_daily_usage_fix_global_state(): local entry_incoming + [mmsms:6090] sms_daily_usage_fix_global_state(): local entry_history_json + [mmsms:6091] sms_daily_usage_fix_global_state(): entry_sent=0 + [mmsms:6092] sms_daily_usage_fix_global_state(): entry_failed=0 + [mmsms:6093] sms_daily_usage_fix_global_state(): entry_incoming=0 + [mmsms:6094] sms_daily_usage_fix_global_state(): entry_history_json='[]' + [mmsms:6097] sms_daily_usage_fix_global_state(): sms_daily_state_read --file /var/lib/mmsms/sms-count-4915565447259.state --out-date-var entry_date --out-sent-var entry_sent --out-failed-var entry_failed --out-incoming-var entry_incoming --out-history-json-var entry_history_json + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-4915565447259.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=entry_date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=entry_sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=entry_failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=entry_incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-history-json-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4336] sms_daily_state_read(): shift + [mmsms:4337] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4342] sms_daily_state_read(): history_var=entry_history_json + [mmsms:4343] sms_daily_state_read(): shift + [mmsms:4344] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-4915565447259.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n entry_history_json ]] + [mmsms:4368] sms_daily_state_read(): state_history_json='[]' + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-4915565447259.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-4915565447259.state + [mmsms:4373] sms_daily_state_read(): content='{ "date": "2025-09-24", "label": "+4915565447259", "msisdn": "+4915565447259", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } }' + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n { "date": "2025-09-24", "label": "+4915565447259", "msisdn": "+4915565447259", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } } ]] ++ [mmsms:4382] sms_daily_state_read(): jq -r '[.date // "", .label // "", .msisdn // "", (.outgoing.sent // 0), (.outgoing.failed // 0), (.incoming.received // 0)] | @tsv' + [mmsms:4382] sms_daily_state_read(): parsed='2025-09-24 +4915565447259 +4915565447259 1 0 1' + [mmsms:4384] sms_daily_state_read(): IFS=' ' + [mmsms:4384] sms_daily_state_read(): read -r state_date state_label state_msisdn state_sent state_failed state_incoming + [mmsms:4385] sms_daily_state_read(): [[ -n entry_history_json ]] ++ [mmsms:4387] sms_daily_state_read(): jq -c '.history // []' + [mmsms:4387] sms_daily_state_read(): state_history_json='[]' + [mmsms:4389] sms_daily_state_read(): : + [mmsms:4414] sms_daily_state_read(): [[ -n entry_date ]] + [mmsms:4416] sms_daily_state_read(): printf -v entry_date %s 2025-09-24 + [mmsms:4418] sms_daily_state_read(): [[ -n entry_sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v entry_sent %s 1 + [mmsms:4422] sms_daily_state_read(): [[ -n entry_failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v entry_failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n entry_incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v entry_incoming %s 1 + [mmsms:4430] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4434] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4438] sms_daily_state_read(): [[ -n entry_history_json ]] + [mmsms:4440] sms_daily_state_read(): printf -v entry_history_json %s '[]' + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:6107] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6112] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6117] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6122] sms_daily_usage_fix_global_state(): [[ -n 2025-09-24 ]] + [mmsms:6124] sms_daily_usage_fix_global_state(): [[ -z 1 ]] + [mmsms:6130] sms_daily_usage_fix_global_state(): local current_sent + [mmsms:6131] sms_daily_usage_fix_global_state(): current_sent=1 + [mmsms:6132] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6137] sms_daily_usage_fix_global_state(): local current_failed + [mmsms:6138] sms_daily_usage_fix_global_state(): current_failed=0 + [mmsms:6139] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6144] sms_daily_usage_fix_global_state(): local current_incoming + [mmsms:6145] sms_daily_usage_fix_global_state(): current_incoming=1 + [mmsms:6146] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6151] sms_daily_usage_fix_global_state(): aggregated_sent["$entry_date"]=2 + [mmsms:6152] sms_daily_usage_fix_global_state(): aggregated_failed["$entry_date"]=0 + [mmsms:6153] sms_daily_usage_fix_global_state(): aggregated_incoming["$entry_date"]=2 + [mmsms:6156] sms_daily_usage_fix_global_state(): [[ -n [] ]] + [mmsms:6156] sms_daily_usage_fix_global_state(): [[ [] != \[\] ]] + [mmsms:6074] sms_daily_usage_fix_global_state(): for path in "$state_dir"/sms-count-*.state + [mmsms:6076] sms_daily_usage_fix_global_state(): [[ ! -e /var/lib/mmsms/sms-count-global.state ]] + [mmsms:6081] sms_daily_usage_fix_global_state(): [[ /var/lib/mmsms/sms-count-global.state == \/\v\a\r\/\l\i\b\/\m\m\s\m\s\/\s\m\s\-\c\o\u\n\t\-\g\l\o\b\a\l\.\s\t\a\t\e ]] + [mmsms:6083] sms_daily_usage_fix_global_state(): continue + [mmsms:6222] sms_daily_usage_fix_global_state(): shopt -u nullglob + [mmsms:6225] sms_daily_usage_fix_global_state(): local selected_date + [mmsms:6226] sms_daily_usage_fix_global_state(): [[ -n '' ]] + [mmsms:6231] sms_daily_usage_fix_global_state(): [[ -z '' ]] + [mmsms:6233] sms_daily_usage_fix_global_state(): local candidate + [mmsms:6234] sms_daily_usage_fix_global_state(): for candidate in "${aggregated_order[@]}" + [mmsms:6236] sms_daily_usage_fix_global_state(): [[ -z 2025-09-24 ]] + [mmsms:6241] sms_daily_usage_fix_global_state(): [[ -z '' ]] + [mmsms:6243] sms_daily_usage_fix_global_state(): selected_date=2025-09-24 + [mmsms:6248] sms_daily_usage_fix_global_state(): [[ -z 2025-09-24 ]] + [mmsms:6258] sms_daily_usage_fix_global_state(): [[ -z 2025-09-24 ]] + [mmsms:6263] sms_daily_usage_fix_global_state(): [[ -z 2025-09-24 ]] + [mmsms:6268] sms_daily_usage_fix_global_state(): local new_sent + [mmsms:6269] sms_daily_usage_fix_global_state(): local new_failed + [mmsms:6270] sms_daily_usage_fix_global_state(): local new_incoming + [mmsms:6271] sms_daily_usage_fix_global_state(): new_sent=0 + [mmsms:6272] sms_daily_usage_fix_global_state(): new_failed=0 + [mmsms:6273] sms_daily_usage_fix_global_state(): new_incoming=0 + [mmsms:6275] sms_daily_usage_fix_global_state(): [[ -n 2025-09-24 ]] + [mmsms:6275] sms_daily_usage_fix_global_state(): [[ -n 1 ]] + [mmsms:6277] sms_daily_usage_fix_global_state(): new_sent=2 + [mmsms:6278] sms_daily_usage_fix_global_state(): new_failed=0 + [mmsms:6279] sms_daily_usage_fix_global_state(): new_incoming=2 + [mmsms:6282] sms_daily_usage_fix_global_state(): [[ ! 2 =~ ^-?[0-9]+$ ]] + [mmsms:6287] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6292] sms_daily_usage_fix_global_state(): [[ ! 2 =~ ^-?[0-9]+$ ]] + [mmsms:6297] sms_daily_usage_fix_global_state(): local write_label + [mmsms:6298] sms_daily_usage_fix_global_state(): write_label= + [mmsms:6299] sms_daily_usage_fix_global_state(): [[ -z '' ]] + [mmsms:6301] sms_daily_usage_fix_global_state(): write_label=global + [mmsms:6304] sms_daily_usage_fix_global_state(): local needs_update + [mmsms:6305] sms_daily_usage_fix_global_state(): needs_update=0 + [mmsms:6306] sms_daily_usage_fix_global_state(): (( ! file_exists || file_empty )) + [mmsms:6311] sms_daily_usage_fix_global_state(): [[ 2025-09-24 != '' ]] + [mmsms:6313] sms_daily_usage_fix_global_state(): needs_update=1 + [mmsms:6319] sms_daily_usage_fix_global_state(): [[ global != '' ]] + [mmsms:6321] sms_daily_usage_fix_global_state(): needs_update=1 + [mmsms:6324] sms_daily_usage_fix_global_state(): (( ! needs_update )) + [mmsms:6331] sms_daily_usage_fix_global_state(): sms_daily_state_write_locked --file /var/lib/mmsms/sms-count-global.state --date 2025-09-24 --label global --msisdn '' --sent 2 --failed 0 --incoming 2 + [mmsms:4616] sms_daily_state_write_locked(): local file + [mmsms:4617] sms_daily_state_write_locked(): local date + [mmsms:4618] sms_daily_state_write_locked(): local label + [mmsms:4619] sms_daily_state_write_locked(): local msisdn + [mmsms:4620] sms_daily_state_write_locked(): local sent + [mmsms:4621] sms_daily_state_write_locked(): local failed + [mmsms:4622] sms_daily_state_write_locked(): local incoming + [mmsms:4623] sms_daily_state_write_locked(): local dir + [mmsms:4624] sms_daily_state_write_locked(): local tmp + [mmsms:4625] sms_daily_state_write_locked(): local base + [mmsms:4626] sms_daily_state_write_locked(): local new_json + [mmsms:4627] sms_daily_state_write_locked(): local history_days + [mmsms:4628] sms_daily_state_write_locked(): local history_limit + [mmsms:4629] sms_daily_state_write_locked(): local opt + [mmsms:4631] sms_daily_state_write_locked(): sent=0 + [mmsms:4632] sms_daily_state_write_locked(): failed=0 + [mmsms:4633] sms_daily_state_write_locked(): incoming=0 + [mmsms:4635] sms_daily_state_write_locked(): (( 14 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--file + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4640] sms_daily_state_write_locked(): shift + [mmsms:4641] sms_daily_state_write_locked(): (( 13 == 0 )) + [mmsms:4646] sms_daily_state_write_locked(): file=/var/lib/mmsms/sms-count-global.state + [mmsms:4647] sms_daily_state_write_locked(): shift + [mmsms:4648] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 12 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--date + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4651] sms_daily_state_write_locked(): shift + [mmsms:4652] sms_daily_state_write_locked(): (( 11 == 0 )) + [mmsms:4657] sms_daily_state_write_locked(): date=2025-09-24 + [mmsms:4658] sms_daily_state_write_locked(): shift + [mmsms:4659] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 10 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--label + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4662] sms_daily_state_write_locked(): shift + [mmsms:4663] sms_daily_state_write_locked(): (( 9 == 0 )) + [mmsms:4668] sms_daily_state_write_locked(): label=global + [mmsms:4669] sms_daily_state_write_locked(): shift + [mmsms:4670] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 8 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--msisdn + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4673] sms_daily_state_write_locked(): shift + [mmsms:4674] sms_daily_state_write_locked(): (( 7 == 0 )) + [mmsms:4679] sms_daily_state_write_locked(): msisdn= + [mmsms:4680] sms_daily_state_write_locked(): shift + [mmsms:4681] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 6 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--sent + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4684] sms_daily_state_write_locked(): shift + [mmsms:4685] sms_daily_state_write_locked(): (( 5 == 0 )) + [mmsms:4690] sms_daily_state_write_locked(): sent=2 + [mmsms:4691] sms_daily_state_write_locked(): shift + [mmsms:4692] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 4 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--failed + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4695] sms_daily_state_write_locked(): shift + [mmsms:4696] sms_daily_state_write_locked(): (( 3 == 0 )) + [mmsms:4701] sms_daily_state_write_locked(): failed=0 + [mmsms:4702] sms_daily_state_write_locked(): shift + [mmsms:4703] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 2 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--incoming + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4706] sms_daily_state_write_locked(): shift + [mmsms:4707] sms_daily_state_write_locked(): (( 1 == 0 )) + [mmsms:4712] sms_daily_state_write_locked(): incoming=2 + [mmsms:4713] sms_daily_state_write_locked(): shift + [mmsms:4714] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 0 > 0 )) + [mmsms:4727] sms_daily_state_write_locked(): [[ -z /var/lib/mmsms/sms-count-global.state ]] + [mmsms:4733] sms_daily_state_write_locked(): [[ -z 2025-09-24 ]] + [mmsms:4739] sms_daily_state_write_locked(): [[ -z 2 ]] + [mmsms:4739] sms_daily_state_write_locked(): [[ ! 2 =~ ^-?[0-9]+$ ]] + [mmsms:4744] sms_daily_state_write_locked(): [[ -z 0 ]] + [mmsms:4744] sms_daily_state_write_locked(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:4749] sms_daily_state_write_locked(): [[ -z 2 ]] + [mmsms:4749] sms_daily_state_write_locked(): [[ ! 2 =~ ^-?[0-9]+$ ]] + [mmsms:4754] sms_daily_state_write_locked(): history_days=7 + [mmsms:4755] sms_daily_state_write_locked(): [[ ! 7 =~ ^[0-9]+$ ]] + [mmsms:4758] sms_daily_state_write_locked(): (( history_days < 1 )) + [mmsms:4762] sms_daily_state_write_locked(): history_limit=6 + [mmsms:4763] sms_daily_state_write_locked(): (( history_limit < 0 )) ++ [mmsms:4768] sms_daily_state_write_locked(): dirname /var/lib/mmsms/sms-count-global.state + [mmsms:4768] sms_daily_state_write_locked(): dir=/var/lib/mmsms ++ [mmsms:4770] sms_daily_state_write_locked(): mktemp /var/lib/mmsms/.sms-count.XXXXXX + [mmsms:4770] sms_daily_state_write_locked(): tmp=/var/lib/mmsms/.sms-count.hfBNOH + [mmsms:4776] sms_daily_state_write_locked(): base='{}' + [mmsms:4777] sms_daily_state_write_locked(): [[ -r /var/lib/mmsms/sms-count-global.state ]] ++ [mmsms:4779] sms_daily_state_write_locked(): cat /var/lib/mmsms/sms-count-global.state + [mmsms:4779] sms_daily_state_write_locked(): base= + [mmsms:4781] sms_daily_state_write_locked(): : ++ [mmsms:4818] sms_daily_state_write_locked(): jq --arg date 2025-09-24 --arg label global --arg msisdn '' --argjson sent 2 --argjson failed 0 --argjson incoming 2 --argjson history_limit 6 'def mkentry($d; $label; $msisdn; $sent; $failed; $incoming): (if $d == "" then {} else {date:$d} end) + (if $label == "" then {} else {label:$label} end) + (if $msisdn == "" then {} else {msisdn:$msisdn} end) + {outgoing:{sent:$sent, failed:$failed}, incoming:{received:$incoming}}; def ensure_history($hist): if ($hist // empty) | type == "array" then $hist else [] end; def trim_history($hist; $limit): if $limit <= 0 then [] else $hist[:$limit] end; . as $existing | ($existing.date // "") as $orig_date | ($existing.label // "") as $orig_label | ($existing.msisdn // "") as $orig_msisdn | ($existing.outgoing.sent // 0) as $orig_sent | ($existing.outgoing.failed // 0) as $orig_failed | ($existing.incoming.received // 0) as $orig_incoming | ensure_history($existing.history) as $existing_hist | (if $orig_date != "" and $orig_date != $date then trim_history([mkentry($orig_date; $orig_label; $orig_msisdn; $orig_sent; $orig_failed; $orig_incoming)] + $existing_hist; $history_limit) else trim_history($existing_hist; $history_limit) end) as $hist | mkentry($date; $label; $msisdn; $sent; $failed; $incoming) + (if ($hist | length) > 0 then {history:$hist} else {} end)' + [mmsms:4818] sms_daily_state_write_locked(): new_json= + [mmsms:4837] sms_daily_state_write_locked(): printf '%s\n' '' + [mmsms:4844] sms_daily_state_write_locked(): mv /var/lib/mmsms/.sms-count.hfBNOH /var/lib/mmsms/sms-count-global.state + [mmsms:4851] sms_daily_state_write_locked(): return 0 + [mmsms:6344] sms_daily_usage_fix_global_state(): sms_daily_limit_lock_release flock:10:/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5144] sms_daily_limit_lock_release(): local handle=flock:10:/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5145] sms_daily_limit_lock_release(): [[ -z flock:10:/var/lib/mmsms/sms-count-global.state.lock ]] + [mmsms:5147] sms_daily_limit_lock_release(): local type=flock + [mmsms:5148] sms_daily_limit_lock_release(): local rest=10:/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5150] sms_daily_limit_lock_release(): case "$type" in + [mmsms:5152] sms_daily_limit_lock_release(): local fd=10 + [mmsms:5153] sms_daily_limit_lock_release(): local path=/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5154] sms_daily_limit_lock_release(): [[ 10 =~ ^[0-9]+$ ]] + [mmsms:5156] sms_daily_limit_lock_release(): eval 'exec 10>&-' ++ [mmsms:5156] sms_daily_limit_lock_release(): exec + [mmsms:5158] sms_daily_limit_lock_release(): [[ -n /var/lib/mmsms/sms-count-global.state.lock ]] + [mmsms:5158] sms_daily_limit_lock_release(): rm -f /var/lib/mmsms/sms-count-global.state.lock + [mmsms:6345] sms_daily_usage_fix_global_state(): echo_debug 'daily usage: recomputed global counter for 2025-09-24' + [echo.sh:73] echo_debug(): [[ -z 1 ]] + [echo.sh:74] echo_debug(): local prefix=DBG + [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' + [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' 'daily usage: recomputed global counter for 2025-09-24' + [echo.sh:13] echo_fancy(): local prefix=DBG + [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' + [echo.sh:15] echo_fancy(): shift 2 + [echo.sh:17] echo_fancy(): local line + [echo.sh:18] echo_fancy(): line='DBG daily usage: recomputed global counter for 2025-09-24' + [echo.sh:20] echo_fancy(): local 'line_fmt=DBG daily usage: recomputed global counter for 2025-09-24' + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m daily usage: recomputed global counter for 2025-09-24' + [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m daily usage: recomputed global counter for 2025-09-24' DBG daily usage: recomputed global counter for 2025-09-24 + [echo.sh:30] echo_fancy(): [[ -z '' ]] + [echo.sh:30] echo_fancy(): return 0 + [mmsms:6346] sms_daily_usage_fix_global_state(): return 0 + [mmsms:5969] sms_daily_usage_refresh_global(): [[ -n '' ]] + [mmsms:5974] sms_daily_usage_refresh_global(): [[ -n '' ]] + [mmsms:5979] sms_daily_usage_refresh_global(): [[ -n '' ]] + [mmsms:5984] sms_daily_usage_refresh_global(): return 0 + [mmsms:9525] sms_usage_stats(): sms_daily_usage_fix_global_state + [mmsms:5989] sms_daily_usage_fix_global_state(): local global_file ++ [mmsms:5990] sms_daily_usage_fix_global_state(): sms_daily_limit_state_file global ++ [mmsms:4210] sms_daily_limit_state_file(): local token=global ++ [mmsms:4212] sms_daily_limit_state_file(): [[ -z global ]] ++ [mmsms:4221] sms_daily_limit_state_file(): local dir +++ [mmsms:4222] sms_daily_limit_state_file(): sms_daily_limit_state_dir +++ [mmsms:4054] sms_daily_limit_state_dir(): local dir=/var/lib/mmsms ++++ [mmsms:4055] sms_daily_limit_state_dir(): trim /var/lib/mmsms ++++ [mmsms:147] trim(): local s=/var/lib/mmsms ++++ [mmsms:148] trim(): s=/var/lib/mmsms ++++ [mmsms:149] trim(): s=/var/lib/mmsms ++++ [mmsms:150] trim(): printf %s /var/lib/mmsms +++ [mmsms:4055] sms_daily_limit_state_dir(): dir=/var/lib/mmsms +++ [mmsms:4057] sms_daily_limit_state_dir(): [[ -z /var/lib/mmsms ]] +++ [mmsms:4062] sms_daily_limit_state_dir(): [[ ! -d /var/lib/mmsms ]] +++ [mmsms:4071] sms_daily_limit_state_dir(): printf %s /var/lib/mmsms +++ [mmsms:4072] sms_daily_limit_state_dir(): return 0 ++ [mmsms:4222] sms_daily_limit_state_file(): dir=/var/lib/mmsms ++ [mmsms:4227] sms_daily_limit_state_file(): printf %s/sms-count-%s.state /var/lib/mmsms global ++ [mmsms:4228] sms_daily_limit_state_file(): return 0 + [mmsms:5990] sms_daily_usage_fix_global_state(): global_file=/var/lib/mmsms/sms-count-global.state + [mmsms:5995] sms_daily_usage_fix_global_state(): local file_exists + [mmsms:5996] sms_daily_usage_fix_global_state(): file_exists=0 + [mmsms:5997] sms_daily_usage_fix_global_state(): [[ -e /var/lib/mmsms/sms-count-global.state ]] + [mmsms:5999] sms_daily_usage_fix_global_state(): file_exists=1 + [mmsms:6002] sms_daily_usage_fix_global_state(): local file_empty + [mmsms:6003] sms_daily_usage_fix_global_state(): file_empty=1 + [mmsms:6004] sms_daily_usage_fix_global_state(): [[ -s /var/lib/mmsms/sms-count-global.state ]] + [mmsms:6006] sms_daily_usage_fix_global_state(): file_empty=0 + [mmsms:6009] sms_daily_usage_fix_global_state(): local lock_handle + [mmsms:6010] sms_daily_usage_fix_global_state(): sms_daily_limit_lock_acquire /var/lib/mmsms/sms-count-global.state lock_handle + [mmsms:5111] sms_daily_limit_lock_acquire(): local file=/var/lib/mmsms/sms-count-global.state + [mmsms:5112] sms_daily_limit_lock_acquire(): local __out_var=lock_handle + [mmsms:5113] sms_daily_limit_lock_acquire(): local lock_path=/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5115] sms_daily_limit_lock_acquire(): command -v flock + [mmsms:5117] sms_daily_limit_lock_acquire(): exec + [mmsms:5118] sms_daily_limit_lock_acquire(): flock 10 + [mmsms:5120] sms_daily_limit_lock_acquire(): printf -v lock_handle flock:%s:%s 10 /var/lib/mmsms/sms-count-global.state.lock + [mmsms:5121] sms_daily_limit_lock_acquire(): return 0 + [mmsms:6016] sms_daily_usage_fix_global_state(): local state_date + [mmsms:6017] sms_daily_usage_fix_global_state(): local state_label + [mmsms:6018] sms_daily_usage_fix_global_state(): local state_msisdn + [mmsms:6019] sms_daily_usage_fix_global_state(): local state_sent + [mmsms:6020] sms_daily_usage_fix_global_state(): local state_failed + [mmsms:6021] sms_daily_usage_fix_global_state(): local state_incoming + [mmsms:6022] sms_daily_usage_fix_global_state(): local state_history_json + [mmsms:6023] sms_daily_usage_fix_global_state(): state_sent=0 + [mmsms:6024] sms_daily_usage_fix_global_state(): state_failed=0 + [mmsms:6025] sms_daily_usage_fix_global_state(): state_incoming=0 + [mmsms:6026] sms_daily_usage_fix_global_state(): state_history_json='[]' + [mmsms:6028] sms_daily_usage_fix_global_state(): (( file_exists )) + [mmsms:6031] sms_daily_usage_fix_global_state(): sms_daily_state_read --file /var/lib/mmsms/sms-count-global.state --out-date-var state_date --out-label-var state_label --out-msisdn-var state_msisdn --out-sent-var state_sent --out-failed-var state_failed --out-incoming-var state_incoming --out-history-json-var state_history_json + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 16 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 15 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-global.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 14 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 13 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=state_date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-label-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4314] sms_daily_state_read(): shift + [mmsms:4315] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4320] sms_daily_state_read(): label_var=state_label + [mmsms:4321] sms_daily_state_read(): shift + [mmsms:4322] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-msisdn-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4325] sms_daily_state_read(): shift + [mmsms:4326] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4331] sms_daily_state_read(): msisdn_var=state_msisdn + [mmsms:4332] sms_daily_state_read(): shift + [mmsms:4333] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=state_sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=state_failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=state_incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-history-json-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4336] sms_daily_state_read(): shift + [mmsms:4337] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4342] sms_daily_state_read(): history_var=state_history_json + [mmsms:4343] sms_daily_state_read(): shift + [mmsms:4344] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-global.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n state_history_json ]] + [mmsms:4368] sms_daily_state_read(): state_history_json='[]' + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-global.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-global.state + [mmsms:4373] sms_daily_state_read(): content= + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4414] sms_daily_state_read(): [[ -n state_date ]] + [mmsms:4416] sms_daily_state_read(): printf -v state_date %s '' + [mmsms:4418] sms_daily_state_read(): [[ -n state_sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v state_sent %s 0 + [mmsms:4422] sms_daily_state_read(): [[ -n state_failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v state_failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n state_incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v state_incoming %s 0 + [mmsms:4430] sms_daily_state_read(): [[ -n state_label ]] + [mmsms:4432] sms_daily_state_read(): printf -v state_label %s '' + [mmsms:4434] sms_daily_state_read(): [[ -n state_msisdn ]] + [mmsms:4436] sms_daily_state_read(): printf -v state_msisdn %s '' + [mmsms:4438] sms_daily_state_read(): [[ -n state_history_json ]] + [mmsms:4440] sms_daily_state_read(): printf -v state_history_json %s '[]' + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:6046] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6051] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6056] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6061] sms_daily_usage_fix_global_state(): local state_dir ++ [mmsms:6062] sms_daily_usage_fix_global_state(): dirname /var/lib/mmsms/sms-count-global.state + [mmsms:6062] sms_daily_usage_fix_global_state(): state_dir=/var/lib/mmsms + [mmsms:6064] sms_daily_usage_fix_global_state(): aggregated_sent=() + [mmsms:6064] sms_daily_usage_fix_global_state(): declare -A aggregated_sent + [mmsms:6065] sms_daily_usage_fix_global_state(): aggregated_failed=() + [mmsms:6065] sms_daily_usage_fix_global_state(): declare -A aggregated_failed + [mmsms:6066] sms_daily_usage_fix_global_state(): aggregated_incoming=() + [mmsms:6066] sms_daily_usage_fix_global_state(): declare -A aggregated_incoming + [mmsms:6067] sms_daily_usage_fix_global_state(): aggregated_seen=() + [mmsms:6067] sms_daily_usage_fix_global_state(): declare -A aggregated_seen + [mmsms:6068] sms_daily_usage_fix_global_state(): aggregated_order=() + [mmsms:6068] sms_daily_usage_fix_global_state(): local -a aggregated_order + [mmsms:6070] sms_daily_usage_fix_global_state(): [[ -d /var/lib/mmsms ]] + [mmsms:6072] sms_daily_usage_fix_global_state(): local path + [mmsms:6073] sms_daily_usage_fix_global_state(): shopt -s nullglob + [mmsms:6074] sms_daily_usage_fix_global_state(): for path in "$state_dir"/sms-count-*.state + [mmsms:6076] sms_daily_usage_fix_global_state(): [[ ! -e /var/lib/mmsms/sms-count-33695386096.state ]] + [mmsms:6081] sms_daily_usage_fix_global_state(): [[ /var/lib/mmsms/sms-count-33695386096.state == \/\v\a\r\/\l\i\b\/\m\m\s\m\s\/\s\m\s\-\c\o\u\n\t\-\g\l\o\b\a\l\.\s\t\a\t\e ]] + [mmsms:6086] sms_daily_usage_fix_global_state(): local entry_date + [mmsms:6087] sms_daily_usage_fix_global_state(): local entry_sent + [mmsms:6088] sms_daily_usage_fix_global_state(): local entry_failed + [mmsms:6089] sms_daily_usage_fix_global_state(): local entry_incoming + [mmsms:6090] sms_daily_usage_fix_global_state(): local entry_history_json + [mmsms:6091] sms_daily_usage_fix_global_state(): entry_sent=0 + [mmsms:6092] sms_daily_usage_fix_global_state(): entry_failed=0 + [mmsms:6093] sms_daily_usage_fix_global_state(): entry_incoming=0 + [mmsms:6094] sms_daily_usage_fix_global_state(): entry_history_json='[]' + [mmsms:6097] sms_daily_usage_fix_global_state(): sms_daily_state_read --file /var/lib/mmsms/sms-count-33695386096.state --out-date-var entry_date --out-sent-var entry_sent --out-failed-var entry_failed --out-incoming-var entry_incoming --out-history-json-var entry_history_json + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-33695386096.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=entry_date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=entry_sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=entry_failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=entry_incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-history-json-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4336] sms_daily_state_read(): shift + [mmsms:4337] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4342] sms_daily_state_read(): history_var=entry_history_json + [mmsms:4343] sms_daily_state_read(): shift + [mmsms:4344] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-33695386096.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n entry_history_json ]] + [mmsms:4368] sms_daily_state_read(): state_history_json='[]' + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-33695386096.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-33695386096.state + [mmsms:4373] sms_daily_state_read(): content='{ "date": "2025-09-24", "label": "+33695386096", "msisdn": "+33695386096", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } }' + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n { "date": "2025-09-24", "label": "+33695386096", "msisdn": "+33695386096", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } } ]] ++ [mmsms:4382] sms_daily_state_read(): jq -r '[.date // "", .label // "", .msisdn // "", (.outgoing.sent // 0), (.outgoing.failed // 0), (.incoming.received // 0)] | @tsv' + [mmsms:4382] sms_daily_state_read(): parsed='2025-09-24 +33695386096 +33695386096 1 0 1' + [mmsms:4384] sms_daily_state_read(): IFS=' ' + [mmsms:4384] sms_daily_state_read(): read -r state_date state_label state_msisdn state_sent state_failed state_incoming + [mmsms:4385] sms_daily_state_read(): [[ -n entry_history_json ]] ++ [mmsms:4387] sms_daily_state_read(): jq -c '.history // []' + [mmsms:4387] sms_daily_state_read(): state_history_json='[]' + [mmsms:4389] sms_daily_state_read(): : + [mmsms:4414] sms_daily_state_read(): [[ -n entry_date ]] + [mmsms:4416] sms_daily_state_read(): printf -v entry_date %s 2025-09-24 + [mmsms:4418] sms_daily_state_read(): [[ -n entry_sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v entry_sent %s 1 + [mmsms:4422] sms_daily_state_read(): [[ -n entry_failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v entry_failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n entry_incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v entry_incoming %s 1 + [mmsms:4430] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4434] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4438] sms_daily_state_read(): [[ -n entry_history_json ]] + [mmsms:4440] sms_daily_state_read(): printf -v entry_history_json %s '[]' + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:6107] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6112] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6117] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6122] sms_daily_usage_fix_global_state(): [[ -n 2025-09-24 ]] + [mmsms:6124] sms_daily_usage_fix_global_state(): [[ -z '' ]] + [mmsms:6126] sms_daily_usage_fix_global_state(): aggregated_order+=("$entry_date") + [mmsms:6127] sms_daily_usage_fix_global_state(): aggregated_seen["$entry_date"]=1 + [mmsms:6130] sms_daily_usage_fix_global_state(): local current_sent + [mmsms:6131] sms_daily_usage_fix_global_state(): current_sent=0 + [mmsms:6132] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6137] sms_daily_usage_fix_global_state(): local current_failed + [mmsms:6138] sms_daily_usage_fix_global_state(): current_failed=0 + [mmsms:6139] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6144] sms_daily_usage_fix_global_state(): local current_incoming + [mmsms:6145] sms_daily_usage_fix_global_state(): current_incoming=0 + [mmsms:6146] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6151] sms_daily_usage_fix_global_state(): aggregated_sent["$entry_date"]=1 + [mmsms:6152] sms_daily_usage_fix_global_state(): aggregated_failed["$entry_date"]=0 + [mmsms:6153] sms_daily_usage_fix_global_state(): aggregated_incoming["$entry_date"]=1 + [mmsms:6156] sms_daily_usage_fix_global_state(): [[ -n [] ]] + [mmsms:6156] sms_daily_usage_fix_global_state(): [[ [] != \[\] ]] + [mmsms:6074] sms_daily_usage_fix_global_state(): for path in "$state_dir"/sms-count-*.state + [mmsms:6076] sms_daily_usage_fix_global_state(): [[ ! -e /var/lib/mmsms/sms-count-4915565447259.state ]] + [mmsms:6081] sms_daily_usage_fix_global_state(): [[ /var/lib/mmsms/sms-count-4915565447259.state == \/\v\a\r\/\l\i\b\/\m\m\s\m\s\/\s\m\s\-\c\o\u\n\t\-\g\l\o\b\a\l\.\s\t\a\t\e ]] + [mmsms:6086] sms_daily_usage_fix_global_state(): local entry_date + [mmsms:6087] sms_daily_usage_fix_global_state(): local entry_sent + [mmsms:6088] sms_daily_usage_fix_global_state(): local entry_failed + [mmsms:6089] sms_daily_usage_fix_global_state(): local entry_incoming + [mmsms:6090] sms_daily_usage_fix_global_state(): local entry_history_json + [mmsms:6091] sms_daily_usage_fix_global_state(): entry_sent=0 + [mmsms:6092] sms_daily_usage_fix_global_state(): entry_failed=0 + [mmsms:6093] sms_daily_usage_fix_global_state(): entry_incoming=0 + [mmsms:6094] sms_daily_usage_fix_global_state(): entry_history_json='[]' + [mmsms:6097] sms_daily_usage_fix_global_state(): sms_daily_state_read --file /var/lib/mmsms/sms-count-4915565447259.state --out-date-var entry_date --out-sent-var entry_sent --out-failed-var entry_failed --out-incoming-var entry_incoming --out-history-json-var entry_history_json + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-4915565447259.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=entry_date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=entry_sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=entry_failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=entry_incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-history-json-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4336] sms_daily_state_read(): shift + [mmsms:4337] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4342] sms_daily_state_read(): history_var=entry_history_json + [mmsms:4343] sms_daily_state_read(): shift + [mmsms:4344] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-4915565447259.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n entry_history_json ]] + [mmsms:4368] sms_daily_state_read(): state_history_json='[]' + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-4915565447259.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-4915565447259.state + [mmsms:4373] sms_daily_state_read(): content='{ "date": "2025-09-24", "label": "+4915565447259", "msisdn": "+4915565447259", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } }' + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n { "date": "2025-09-24", "label": "+4915565447259", "msisdn": "+4915565447259", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } } ]] ++ [mmsms:4382] sms_daily_state_read(): jq -r '[.date // "", .label // "", .msisdn // "", (.outgoing.sent // 0), (.outgoing.failed // 0), (.incoming.received // 0)] | @tsv' + [mmsms:4382] sms_daily_state_read(): parsed='2025-09-24 +4915565447259 +4915565447259 1 0 1' + [mmsms:4384] sms_daily_state_read(): IFS=' ' + [mmsms:4384] sms_daily_state_read(): read -r state_date state_label state_msisdn state_sent state_failed state_incoming + [mmsms:4385] sms_daily_state_read(): [[ -n entry_history_json ]] ++ [mmsms:4387] sms_daily_state_read(): jq -c '.history // []' + [mmsms:4387] sms_daily_state_read(): state_history_json='[]' + [mmsms:4389] sms_daily_state_read(): : + [mmsms:4414] sms_daily_state_read(): [[ -n entry_date ]] + [mmsms:4416] sms_daily_state_read(): printf -v entry_date %s 2025-09-24 + [mmsms:4418] sms_daily_state_read(): [[ -n entry_sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v entry_sent %s 1 + [mmsms:4422] sms_daily_state_read(): [[ -n entry_failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v entry_failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n entry_incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v entry_incoming %s 1 + [mmsms:4430] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4434] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4438] sms_daily_state_read(): [[ -n entry_history_json ]] + [mmsms:4440] sms_daily_state_read(): printf -v entry_history_json %s '[]' + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:6107] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6112] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6117] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6122] sms_daily_usage_fix_global_state(): [[ -n 2025-09-24 ]] + [mmsms:6124] sms_daily_usage_fix_global_state(): [[ -z 1 ]] + [mmsms:6130] sms_daily_usage_fix_global_state(): local current_sent + [mmsms:6131] sms_daily_usage_fix_global_state(): current_sent=1 + [mmsms:6132] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6137] sms_daily_usage_fix_global_state(): local current_failed + [mmsms:6138] sms_daily_usage_fix_global_state(): current_failed=0 + [mmsms:6139] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6144] sms_daily_usage_fix_global_state(): local current_incoming + [mmsms:6145] sms_daily_usage_fix_global_state(): current_incoming=1 + [mmsms:6146] sms_daily_usage_fix_global_state(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:6151] sms_daily_usage_fix_global_state(): aggregated_sent["$entry_date"]=2 + [mmsms:6152] sms_daily_usage_fix_global_state(): aggregated_failed["$entry_date"]=0 + [mmsms:6153] sms_daily_usage_fix_global_state(): aggregated_incoming["$entry_date"]=2 + [mmsms:6156] sms_daily_usage_fix_global_state(): [[ -n [] ]] + [mmsms:6156] sms_daily_usage_fix_global_state(): [[ [] != \[\] ]] + [mmsms:6074] sms_daily_usage_fix_global_state(): for path in "$state_dir"/sms-count-*.state + [mmsms:6076] sms_daily_usage_fix_global_state(): [[ ! -e /var/lib/mmsms/sms-count-global.state ]] + [mmsms:6081] sms_daily_usage_fix_global_state(): [[ /var/lib/mmsms/sms-count-global.state == \/\v\a\r\/\l\i\b\/\m\m\s\m\s\/\s\m\s\-\c\o\u\n\t\-\g\l\o\b\a\l\.\s\t\a\t\e ]] + [mmsms:6083] sms_daily_usage_fix_global_state(): continue + [mmsms:6222] sms_daily_usage_fix_global_state(): shopt -u nullglob + [mmsms:6225] sms_daily_usage_fix_global_state(): local selected_date + [mmsms:6226] sms_daily_usage_fix_global_state(): [[ -n '' ]] + [mmsms:6231] sms_daily_usage_fix_global_state(): [[ -z '' ]] + [mmsms:6233] sms_daily_usage_fix_global_state(): local candidate + [mmsms:6234] sms_daily_usage_fix_global_state(): for candidate in "${aggregated_order[@]}" + [mmsms:6236] sms_daily_usage_fix_global_state(): [[ -z 2025-09-24 ]] + [mmsms:6241] sms_daily_usage_fix_global_state(): [[ -z '' ]] + [mmsms:6243] sms_daily_usage_fix_global_state(): selected_date=2025-09-24 + [mmsms:6248] sms_daily_usage_fix_global_state(): [[ -z 2025-09-24 ]] + [mmsms:6258] sms_daily_usage_fix_global_state(): [[ -z 2025-09-24 ]] + [mmsms:6263] sms_daily_usage_fix_global_state(): [[ -z 2025-09-24 ]] + [mmsms:6268] sms_daily_usage_fix_global_state(): local new_sent + [mmsms:6269] sms_daily_usage_fix_global_state(): local new_failed + [mmsms:6270] sms_daily_usage_fix_global_state(): local new_incoming + [mmsms:6271] sms_daily_usage_fix_global_state(): new_sent=0 + [mmsms:6272] sms_daily_usage_fix_global_state(): new_failed=0 + [mmsms:6273] sms_daily_usage_fix_global_state(): new_incoming=0 + [mmsms:6275] sms_daily_usage_fix_global_state(): [[ -n 2025-09-24 ]] + [mmsms:6275] sms_daily_usage_fix_global_state(): [[ -n 1 ]] + [mmsms:6277] sms_daily_usage_fix_global_state(): new_sent=2 + [mmsms:6278] sms_daily_usage_fix_global_state(): new_failed=0 + [mmsms:6279] sms_daily_usage_fix_global_state(): new_incoming=2 + [mmsms:6282] sms_daily_usage_fix_global_state(): [[ ! 2 =~ ^-?[0-9]+$ ]] + [mmsms:6287] sms_daily_usage_fix_global_state(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:6292] sms_daily_usage_fix_global_state(): [[ ! 2 =~ ^-?[0-9]+$ ]] + [mmsms:6297] sms_daily_usage_fix_global_state(): local write_label + [mmsms:6298] sms_daily_usage_fix_global_state(): write_label= + [mmsms:6299] sms_daily_usage_fix_global_state(): [[ -z '' ]] + [mmsms:6301] sms_daily_usage_fix_global_state(): write_label=global + [mmsms:6304] sms_daily_usage_fix_global_state(): local needs_update + [mmsms:6305] sms_daily_usage_fix_global_state(): needs_update=0 + [mmsms:6306] sms_daily_usage_fix_global_state(): (( ! file_exists || file_empty )) + [mmsms:6311] sms_daily_usage_fix_global_state(): [[ 2025-09-24 != '' ]] + [mmsms:6313] sms_daily_usage_fix_global_state(): needs_update=1 + [mmsms:6319] sms_daily_usage_fix_global_state(): [[ global != '' ]] + [mmsms:6321] sms_daily_usage_fix_global_state(): needs_update=1 + [mmsms:6324] sms_daily_usage_fix_global_state(): (( ! needs_update )) + [mmsms:6331] sms_daily_usage_fix_global_state(): sms_daily_state_write_locked --file /var/lib/mmsms/sms-count-global.state --date 2025-09-24 --label global --msisdn '' --sent 2 --failed 0 --incoming 2 + [mmsms:4616] sms_daily_state_write_locked(): local file + [mmsms:4617] sms_daily_state_write_locked(): local date + [mmsms:4618] sms_daily_state_write_locked(): local label + [mmsms:4619] sms_daily_state_write_locked(): local msisdn + [mmsms:4620] sms_daily_state_write_locked(): local sent + [mmsms:4621] sms_daily_state_write_locked(): local failed + [mmsms:4622] sms_daily_state_write_locked(): local incoming + [mmsms:4623] sms_daily_state_write_locked(): local dir + [mmsms:4624] sms_daily_state_write_locked(): local tmp + [mmsms:4625] sms_daily_state_write_locked(): local base + [mmsms:4626] sms_daily_state_write_locked(): local new_json + [mmsms:4627] sms_daily_state_write_locked(): local history_days + [mmsms:4628] sms_daily_state_write_locked(): local history_limit + [mmsms:4629] sms_daily_state_write_locked(): local opt + [mmsms:4631] sms_daily_state_write_locked(): sent=0 + [mmsms:4632] sms_daily_state_write_locked(): failed=0 + [mmsms:4633] sms_daily_state_write_locked(): incoming=0 + [mmsms:4635] sms_daily_state_write_locked(): (( 14 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--file + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4640] sms_daily_state_write_locked(): shift + [mmsms:4641] sms_daily_state_write_locked(): (( 13 == 0 )) + [mmsms:4646] sms_daily_state_write_locked(): file=/var/lib/mmsms/sms-count-global.state + [mmsms:4647] sms_daily_state_write_locked(): shift + [mmsms:4648] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 12 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--date + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4651] sms_daily_state_write_locked(): shift + [mmsms:4652] sms_daily_state_write_locked(): (( 11 == 0 )) + [mmsms:4657] sms_daily_state_write_locked(): date=2025-09-24 + [mmsms:4658] sms_daily_state_write_locked(): shift + [mmsms:4659] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 10 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--label + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4662] sms_daily_state_write_locked(): shift + [mmsms:4663] sms_daily_state_write_locked(): (( 9 == 0 )) + [mmsms:4668] sms_daily_state_write_locked(): label=global + [mmsms:4669] sms_daily_state_write_locked(): shift + [mmsms:4670] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 8 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--msisdn + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4673] sms_daily_state_write_locked(): shift + [mmsms:4674] sms_daily_state_write_locked(): (( 7 == 0 )) + [mmsms:4679] sms_daily_state_write_locked(): msisdn= + [mmsms:4680] sms_daily_state_write_locked(): shift + [mmsms:4681] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 6 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--sent + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4684] sms_daily_state_write_locked(): shift + [mmsms:4685] sms_daily_state_write_locked(): (( 5 == 0 )) + [mmsms:4690] sms_daily_state_write_locked(): sent=2 + [mmsms:4691] sms_daily_state_write_locked(): shift + [mmsms:4692] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 4 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--failed + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4695] sms_daily_state_write_locked(): shift + [mmsms:4696] sms_daily_state_write_locked(): (( 3 == 0 )) + [mmsms:4701] sms_daily_state_write_locked(): failed=0 + [mmsms:4702] sms_daily_state_write_locked(): shift + [mmsms:4703] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 2 > 0 )) + [mmsms:4637] sms_daily_state_write_locked(): opt=--incoming + [mmsms:4638] sms_daily_state_write_locked(): case "$opt" in + [mmsms:4706] sms_daily_state_write_locked(): shift + [mmsms:4707] sms_daily_state_write_locked(): (( 1 == 0 )) + [mmsms:4712] sms_daily_state_write_locked(): incoming=2 + [mmsms:4713] sms_daily_state_write_locked(): shift + [mmsms:4714] sms_daily_state_write_locked(): continue + [mmsms:4635] sms_daily_state_write_locked(): (( 0 > 0 )) + [mmsms:4727] sms_daily_state_write_locked(): [[ -z /var/lib/mmsms/sms-count-global.state ]] + [mmsms:4733] sms_daily_state_write_locked(): [[ -z 2025-09-24 ]] + [mmsms:4739] sms_daily_state_write_locked(): [[ -z 2 ]] + [mmsms:4739] sms_daily_state_write_locked(): [[ ! 2 =~ ^-?[0-9]+$ ]] + [mmsms:4744] sms_daily_state_write_locked(): [[ -z 0 ]] + [mmsms:4744] sms_daily_state_write_locked(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:4749] sms_daily_state_write_locked(): [[ -z 2 ]] + [mmsms:4749] sms_daily_state_write_locked(): [[ ! 2 =~ ^-?[0-9]+$ ]] + [mmsms:4754] sms_daily_state_write_locked(): history_days=7 + [mmsms:4755] sms_daily_state_write_locked(): [[ ! 7 =~ ^[0-9]+$ ]] + [mmsms:4758] sms_daily_state_write_locked(): (( history_days < 1 )) + [mmsms:4762] sms_daily_state_write_locked(): history_limit=6 + [mmsms:4763] sms_daily_state_write_locked(): (( history_limit < 0 )) ++ [mmsms:4768] sms_daily_state_write_locked(): dirname /var/lib/mmsms/sms-count-global.state + [mmsms:4768] sms_daily_state_write_locked(): dir=/var/lib/mmsms ++ [mmsms:4770] sms_daily_state_write_locked(): mktemp /var/lib/mmsms/.sms-count.XXXXXX + [mmsms:4770] sms_daily_state_write_locked(): tmp=/var/lib/mmsms/.sms-count.OnoAhb + [mmsms:4776] sms_daily_state_write_locked(): base='{}' + [mmsms:4777] sms_daily_state_write_locked(): [[ -r /var/lib/mmsms/sms-count-global.state ]] ++ [mmsms:4779] sms_daily_state_write_locked(): cat /var/lib/mmsms/sms-count-global.state + [mmsms:4779] sms_daily_state_write_locked(): base= + [mmsms:4781] sms_daily_state_write_locked(): : ++ [mmsms:4818] sms_daily_state_write_locked(): jq --arg date 2025-09-24 --arg label global --arg msisdn '' --argjson sent 2 --argjson failed 0 --argjson incoming 2 --argjson history_limit 6 'def mkentry($d; $label; $msisdn; $sent; $failed; $incoming): (if $d == "" then {} else {date:$d} end) + (if $label == "" then {} else {label:$label} end) + (if $msisdn == "" then {} else {msisdn:$msisdn} end) + {outgoing:{sent:$sent, failed:$failed}, incoming:{received:$incoming}}; def ensure_history($hist): if ($hist // empty) | type == "array" then $hist else [] end; def trim_history($hist; $limit): if $limit <= 0 then [] else $hist[:$limit] end; . as $existing | ($existing.date // "") as $orig_date | ($existing.label // "") as $orig_label | ($existing.msisdn // "") as $orig_msisdn | ($existing.outgoing.sent // 0) as $orig_sent | ($existing.outgoing.failed // 0) as $orig_failed | ($existing.incoming.received // 0) as $orig_incoming | ensure_history($existing.history) as $existing_hist | (if $orig_date != "" and $orig_date != $date then trim_history([mkentry($orig_date; $orig_label; $orig_msisdn; $orig_sent; $orig_failed; $orig_incoming)] + $existing_hist; $history_limit) else trim_history($existing_hist; $history_limit) end) as $hist | mkentry($date; $label; $msisdn; $sent; $failed; $incoming) + (if ($hist | length) > 0 then {history:$hist} else {} end)' + [mmsms:4818] sms_daily_state_write_locked(): new_json= + [mmsms:4837] sms_daily_state_write_locked(): printf '%s\n' '' + [mmsms:4844] sms_daily_state_write_locked(): mv /var/lib/mmsms/.sms-count.OnoAhb /var/lib/mmsms/sms-count-global.state + [mmsms:4851] sms_daily_state_write_locked(): return 0 + [mmsms:6344] sms_daily_usage_fix_global_state(): sms_daily_limit_lock_release flock:10:/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5144] sms_daily_limit_lock_release(): local handle=flock:10:/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5145] sms_daily_limit_lock_release(): [[ -z flock:10:/var/lib/mmsms/sms-count-global.state.lock ]] + [mmsms:5147] sms_daily_limit_lock_release(): local type=flock + [mmsms:5148] sms_daily_limit_lock_release(): local rest=10:/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5150] sms_daily_limit_lock_release(): case "$type" in + [mmsms:5152] sms_daily_limit_lock_release(): local fd=10 + [mmsms:5153] sms_daily_limit_lock_release(): local path=/var/lib/mmsms/sms-count-global.state.lock + [mmsms:5154] sms_daily_limit_lock_release(): [[ 10 =~ ^[0-9]+$ ]] + [mmsms:5156] sms_daily_limit_lock_release(): eval 'exec 10>&-' ++ [mmsms:5156] sms_daily_limit_lock_release(): exec + [mmsms:5158] sms_daily_limit_lock_release(): [[ -n /var/lib/mmsms/sms-count-global.state.lock ]] + [mmsms:5158] sms_daily_limit_lock_release(): rm -f /var/lib/mmsms/sms-count-global.state.lock + [mmsms:6345] sms_daily_usage_fix_global_state(): echo_debug 'daily usage: recomputed global counter for 2025-09-24' + [echo.sh:73] echo_debug(): [[ -z 1 ]] + [echo.sh:74] echo_debug(): local prefix=DBG + [echo.sh:75] echo_debug(): local 'color=\e[1m\e[35m' + [echo.sh:77] echo_debug(): echo_fancy DBG '\e[1m\e[35m' 'daily usage: recomputed global counter for 2025-09-24' + [echo.sh:13] echo_fancy(): local prefix=DBG + [echo.sh:14] echo_fancy(): local 'color=\e[1m\e[35m' + [echo.sh:15] echo_fancy(): shift 2 + [echo.sh:17] echo_fancy(): local line + [echo.sh:18] echo_fancy(): line='DBG daily usage: recomputed global counter for 2025-09-24' + [echo.sh:20] echo_fancy(): local 'line_fmt=DBG daily usage: recomputed global counter for 2025-09-24' + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:22] echo_fancy(): [[ -z '' ]] + [echo.sh:24] echo_fancy(): line_fmt='\e[1m\e[35mDBG\e[0m daily usage: recomputed global counter for 2025-09-24' + [echo.sh:27] echo_fancy(): echo -e '\e[1m\e[35mDBG\e[0m daily usage: recomputed global counter for 2025-09-24' DBG daily usage: recomputed global counter for 2025-09-24 + [echo.sh:30] echo_fancy(): [[ -z '' ]] + [echo.sh:30] echo_fancy(): return 0 + [mmsms:6346] sms_daily_usage_fix_global_state(): return 0 + [mmsms:9527] sms_usage_stats(): (( 3 == 0 )) + [mmsms:9543] sms_usage_stats(): entry_tokens=() + [mmsms:9543] sms_usage_stats(): local -a entry_tokens + [mmsms:9544] sms_usage_stats(): entry_scopes=() + [mmsms:9544] sms_usage_stats(): local -a entry_scopes + [mmsms:9545] sms_usage_stats(): entry_dates=() + [mmsms:9545] sms_usage_stats(): local -a entry_dates + [mmsms:9546] sms_usage_stats(): entry_labels=() + [mmsms:9546] sms_usage_stats(): local -a entry_labels + [mmsms:9547] sms_usage_stats(): entry_msisdns=() + [mmsms:9547] sms_usage_stats(): local -a entry_msisdns + [mmsms:9548] sms_usage_stats(): entry_display_labels=() + [mmsms:9548] sms_usage_stats(): local -a entry_display_labels + [mmsms:9549] sms_usage_stats(): entry_sent=() + [mmsms:9549] sms_usage_stats(): local -a entry_sent + [mmsms:9550] sms_usage_stats(): entry_failed=() + [mmsms:9550] sms_usage_stats(): local -a entry_failed + [mmsms:9551] sms_usage_stats(): entry_incoming=() + [mmsms:9551] sms_usage_stats(): local -a entry_incoming + [mmsms:9552] sms_usage_stats(): line_incoming_totals=() + [mmsms:9552] sms_usage_stats(): declare -A line_incoming_totals + [mmsms:9554] sms_usage_stats(): local file_index + [mmsms:9555] sms_usage_stats(): local file + [mmsms:9556] sms_usage_stats(): local token + [mmsms:9557] sms_usage_stats(): local date + [mmsms:9558] sms_usage_stats(): local sent + [mmsms:9559] sms_usage_stats(): local failed + [mmsms:9560] sms_usage_stats(): local incoming + [mmsms:9561] sms_usage_stats(): local label + [mmsms:9562] sms_usage_stats(): local msisdn + [mmsms:9563] sms_usage_stats(): local scope + [mmsms:9564] sms_usage_stats(): local display_label + [mmsms:9565] sms_usage_stats(): local entry_index + [mmsms:9566] sms_usage_stats(): local history_json + [mmsms:9567] sms_usage_stats(): local history_lines + [mmsms:9568] sms_usage_stats(): local history_date + [mmsms:9569] sms_usage_stats(): local history_label + [mmsms:9570] sms_usage_stats(): local history_msisdn + [mmsms:9571] sms_usage_stats(): local history_sent + [mmsms:9572] sms_usage_stats(): local history_failed + [mmsms:9573] sms_usage_stats(): local history_incoming + [mmsms:9574] sms_usage_stats(): local aggregated + [mmsms:9576] sms_usage_stats(): for file_index in "${!files[@]}" + [mmsms:9578] sms_usage_stats(): file=/var/lib/mmsms/sms-count-33695386096.state + [mmsms:9579] sms_usage_stats(): token=33695386096 + [mmsms:9581] sms_usage_stats(): history_json='[]' + [mmsms:9583] sms_usage_stats(): sms_daily_state_read --file /var/lib/mmsms/sms-count-33695386096.state --out-date-var date --out-sent-var sent --out-failed-var failed --out-incoming-var incoming --out-label-var label --out-msisdn-var msisdn --out-history-json-var history_json + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 16 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 15 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-33695386096.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 14 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 13 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-label-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4314] sms_daily_state_read(): shift + [mmsms:4315] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4320] sms_daily_state_read(): label_var=label + [mmsms:4321] sms_daily_state_read(): shift + [mmsms:4322] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-msisdn-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4325] sms_daily_state_read(): shift + [mmsms:4326] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4331] sms_daily_state_read(): msisdn_var=msisdn + [mmsms:4332] sms_daily_state_read(): shift + [mmsms:4333] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-history-json-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4336] sms_daily_state_read(): shift + [mmsms:4337] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4342] sms_daily_state_read(): history_var=history_json + [mmsms:4343] sms_daily_state_read(): shift + [mmsms:4344] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-33695386096.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n history_json ]] + [mmsms:4368] sms_daily_state_read(): state_history_json='[]' + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-33695386096.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-33695386096.state + [mmsms:4373] sms_daily_state_read(): content='{ "date": "2025-09-24", "label": "+33695386096", "msisdn": "+33695386096", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } }' + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n { "date": "2025-09-24", "label": "+33695386096", "msisdn": "+33695386096", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } } ]] ++ [mmsms:4382] sms_daily_state_read(): jq -r '[.date // "", .label // "", .msisdn // "", (.outgoing.sent // 0), (.outgoing.failed // 0), (.incoming.received // 0)] | @tsv' + [mmsms:4382] sms_daily_state_read(): parsed='2025-09-24 +33695386096 +33695386096 1 0 1' + [mmsms:4384] sms_daily_state_read(): IFS=' ' + [mmsms:4384] sms_daily_state_read(): read -r state_date state_label state_msisdn state_sent state_failed state_incoming + [mmsms:4385] sms_daily_state_read(): [[ -n history_json ]] ++ [mmsms:4387] sms_daily_state_read(): jq -c '.history // []' + [mmsms:4387] sms_daily_state_read(): state_history_json='[]' + [mmsms:4389] sms_daily_state_read(): : + [mmsms:4414] sms_daily_state_read(): [[ -n date ]] + [mmsms:4416] sms_daily_state_read(): printf -v date %s 2025-09-24 + [mmsms:4418] sms_daily_state_read(): [[ -n sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v sent %s 1 + [mmsms:4422] sms_daily_state_read(): [[ -n failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v incoming %s 1 + [mmsms:4430] sms_daily_state_read(): [[ -n label ]] + [mmsms:4432] sms_daily_state_read(): printf -v label %s +33695386096 + [mmsms:4434] sms_daily_state_read(): [[ -n msisdn ]] + [mmsms:4436] sms_daily_state_read(): printf -v msisdn %s +33695386096 + [mmsms:4438] sms_daily_state_read(): [[ -n history_json ]] + [mmsms:4440] sms_daily_state_read(): printf -v history_json %s '[]' + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:9595] sms_usage_stats(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:9599] sms_usage_stats(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:9603] sms_usage_stats(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:9608] sms_usage_stats(): scope=line + [mmsms:9609] sms_usage_stats(): [[ 33695386096 == \g\l\o\b\a\l ]] + [mmsms:9614] sms_usage_stats(): display_label=+33695386096 + [mmsms:9615] sms_usage_stats(): [[ -z +33695386096 ]] + [mmsms:9619] sms_usage_stats(): [[ -z +33695386096 ]] + [mmsms:9629] sms_usage_stats(): [[ -z '' ]] + [mmsms:9631] sms_usage_stats(): entry_index=0 + [mmsms:9632] sms_usage_stats(): entry_tokens[entry_index]=33695386096 + [mmsms:9633] sms_usage_stats(): entry_scopes[entry_index]=line + [mmsms:9634] sms_usage_stats(): entry_dates[entry_index]=2025-09-24 + [mmsms:9635] sms_usage_stats(): entry_labels[entry_index]=+33695386096 + [mmsms:9636] sms_usage_stats(): entry_msisdns[entry_index]=+33695386096 + [mmsms:9637] sms_usage_stats(): entry_display_labels[entry_index]=+33695386096 + [mmsms:9638] sms_usage_stats(): entry_sent[entry_index]=1 + [mmsms:9639] sms_usage_stats(): entry_failed[entry_index]=0 + [mmsms:9640] sms_usage_stats(): entry_incoming[entry_index]=1 + [mmsms:9643] sms_usage_stats(): (( include_history )) + [mmsms:9576] sms_usage_stats(): for file_index in "${!files[@]}" + [mmsms:9578] sms_usage_stats(): file=/var/lib/mmsms/sms-count-4915565447259.state + [mmsms:9579] sms_usage_stats(): token=4915565447259 + [mmsms:9581] sms_usage_stats(): history_json='[]' + [mmsms:9583] sms_usage_stats(): sms_daily_state_read --file /var/lib/mmsms/sms-count-4915565447259.state --out-date-var date --out-sent-var sent --out-failed-var failed --out-incoming-var incoming --out-label-var label --out-msisdn-var msisdn --out-history-json-var history_json + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 16 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 15 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-4915565447259.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 14 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 13 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-label-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4314] sms_daily_state_read(): shift + [mmsms:4315] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4320] sms_daily_state_read(): label_var=label + [mmsms:4321] sms_daily_state_read(): shift + [mmsms:4322] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-msisdn-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4325] sms_daily_state_read(): shift + [mmsms:4326] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4331] sms_daily_state_read(): msisdn_var=msisdn + [mmsms:4332] sms_daily_state_read(): shift + [mmsms:4333] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-history-json-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4336] sms_daily_state_read(): shift + [mmsms:4337] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4342] sms_daily_state_read(): history_var=history_json + [mmsms:4343] sms_daily_state_read(): shift + [mmsms:4344] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-4915565447259.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n history_json ]] + [mmsms:4368] sms_daily_state_read(): state_history_json='[]' + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-4915565447259.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-4915565447259.state + [mmsms:4373] sms_daily_state_read(): content='{ "date": "2025-09-24", "label": "+4915565447259", "msisdn": "+4915565447259", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } }' + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n { "date": "2025-09-24", "label": "+4915565447259", "msisdn": "+4915565447259", "outgoing": { "sent": 1, "failed": 0 }, "incoming": { "received": 1 } } ]] ++ [mmsms:4382] sms_daily_state_read(): jq -r '[.date // "", .label // "", .msisdn // "", (.outgoing.sent // 0), (.outgoing.failed // 0), (.incoming.received // 0)] | @tsv' + [mmsms:4382] sms_daily_state_read(): parsed='2025-09-24 +4915565447259 +4915565447259 1 0 1' + [mmsms:4384] sms_daily_state_read(): IFS=' ' + [mmsms:4384] sms_daily_state_read(): read -r state_date state_label state_msisdn state_sent state_failed state_incoming + [mmsms:4385] sms_daily_state_read(): [[ -n history_json ]] ++ [mmsms:4387] sms_daily_state_read(): jq -c '.history // []' + [mmsms:4387] sms_daily_state_read(): state_history_json='[]' + [mmsms:4389] sms_daily_state_read(): : + [mmsms:4414] sms_daily_state_read(): [[ -n date ]] + [mmsms:4416] sms_daily_state_read(): printf -v date %s 2025-09-24 + [mmsms:4418] sms_daily_state_read(): [[ -n sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v sent %s 1 + [mmsms:4422] sms_daily_state_read(): [[ -n failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v incoming %s 1 + [mmsms:4430] sms_daily_state_read(): [[ -n label ]] + [mmsms:4432] sms_daily_state_read(): printf -v label %s +4915565447259 + [mmsms:4434] sms_daily_state_read(): [[ -n msisdn ]] + [mmsms:4436] sms_daily_state_read(): printf -v msisdn %s +4915565447259 + [mmsms:4438] sms_daily_state_read(): [[ -n history_json ]] + [mmsms:4440] sms_daily_state_read(): printf -v history_json %s '[]' + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:9595] sms_usage_stats(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:9599] sms_usage_stats(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:9603] sms_usage_stats(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:9608] sms_usage_stats(): scope=line + [mmsms:9609] sms_usage_stats(): [[ 4915565447259 == \g\l\o\b\a\l ]] + [mmsms:9614] sms_usage_stats(): display_label=+4915565447259 + [mmsms:9615] sms_usage_stats(): [[ -z +4915565447259 ]] + [mmsms:9619] sms_usage_stats(): [[ -z +4915565447259 ]] + [mmsms:9629] sms_usage_stats(): [[ -z '' ]] + [mmsms:9631] sms_usage_stats(): entry_index=1 + [mmsms:9632] sms_usage_stats(): entry_tokens[entry_index]=4915565447259 + [mmsms:9633] sms_usage_stats(): entry_scopes[entry_index]=line + [mmsms:9634] sms_usage_stats(): entry_dates[entry_index]=2025-09-24 + [mmsms:9635] sms_usage_stats(): entry_labels[entry_index]=+4915565447259 + [mmsms:9636] sms_usage_stats(): entry_msisdns[entry_index]=+4915565447259 + [mmsms:9637] sms_usage_stats(): entry_display_labels[entry_index]=+4915565447259 + [mmsms:9638] sms_usage_stats(): entry_sent[entry_index]=1 + [mmsms:9639] sms_usage_stats(): entry_failed[entry_index]=0 + [mmsms:9640] sms_usage_stats(): entry_incoming[entry_index]=1 + [mmsms:9643] sms_usage_stats(): (( include_history )) + [mmsms:9576] sms_usage_stats(): for file_index in "${!files[@]}" + [mmsms:9578] sms_usage_stats(): file=/var/lib/mmsms/sms-count-global.state + [mmsms:9579] sms_usage_stats(): token=global + [mmsms:9581] sms_usage_stats(): history_json='[]' + [mmsms:9583] sms_usage_stats(): sms_daily_state_read --file /var/lib/mmsms/sms-count-global.state --out-date-var date --out-sent-var sent --out-failed-var failed --out-incoming-var incoming --out-label-var label --out-msisdn-var msisdn --out-history-json-var history_json + [mmsms:4233] sms_daily_state_read(): local file + [mmsms:4234] sms_daily_state_read(): local date_var + [mmsms:4235] sms_daily_state_read(): local sent_var + [mmsms:4236] sms_daily_state_read(): local failed_var + [mmsms:4237] sms_daily_state_read(): local incoming_var + [mmsms:4238] sms_daily_state_read(): local label_var + [mmsms:4239] sms_daily_state_read(): local msisdn_var + [mmsms:4240] sms_daily_state_read(): local history_var + [mmsms:4241] sms_daily_state_read(): local state_date + [mmsms:4242] sms_daily_state_read(): local state_label + [mmsms:4243] sms_daily_state_read(): local state_msisdn + [mmsms:4244] sms_daily_state_read(): local state_sent + [mmsms:4245] sms_daily_state_read(): local state_failed + [mmsms:4246] sms_daily_state_read(): local state_incoming + [mmsms:4247] sms_daily_state_read(): local content + [mmsms:4248] sms_daily_state_read(): local parsed + [mmsms:4249] sms_daily_state_read(): local legacy_date + [mmsms:4250] sms_daily_state_read(): local legacy_count + [mmsms:4251] sms_daily_state_read(): local state_history_json + [mmsms:4252] sms_daily_state_read(): local opt + [mmsms:4254] sms_daily_state_read(): (( 16 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--file + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4259] sms_daily_state_read(): shift + [mmsms:4260] sms_daily_state_read(): (( 15 == 0 )) + [mmsms:4265] sms_daily_state_read(): file=/var/lib/mmsms/sms-count-global.state + [mmsms:4266] sms_daily_state_read(): shift + [mmsms:4267] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 14 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-date-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4270] sms_daily_state_read(): shift + [mmsms:4271] sms_daily_state_read(): (( 13 == 0 )) + [mmsms:4276] sms_daily_state_read(): date_var=date + [mmsms:4277] sms_daily_state_read(): shift + [mmsms:4278] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 12 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-sent-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4281] sms_daily_state_read(): shift + [mmsms:4282] sms_daily_state_read(): (( 11 == 0 )) + [mmsms:4287] sms_daily_state_read(): sent_var=sent + [mmsms:4288] sms_daily_state_read(): shift + [mmsms:4289] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 10 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-failed-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4292] sms_daily_state_read(): shift + [mmsms:4293] sms_daily_state_read(): (( 9 == 0 )) + [mmsms:4298] sms_daily_state_read(): failed_var=failed + [mmsms:4299] sms_daily_state_read(): shift + [mmsms:4300] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 8 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-incoming-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4303] sms_daily_state_read(): shift + [mmsms:4304] sms_daily_state_read(): (( 7 == 0 )) + [mmsms:4309] sms_daily_state_read(): incoming_var=incoming + [mmsms:4310] sms_daily_state_read(): shift + [mmsms:4311] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 6 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-label-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4314] sms_daily_state_read(): shift + [mmsms:4315] sms_daily_state_read(): (( 5 == 0 )) + [mmsms:4320] sms_daily_state_read(): label_var=label + [mmsms:4321] sms_daily_state_read(): shift + [mmsms:4322] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 4 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-msisdn-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4325] sms_daily_state_read(): shift + [mmsms:4326] sms_daily_state_read(): (( 3 == 0 )) + [mmsms:4331] sms_daily_state_read(): msisdn_var=msisdn + [mmsms:4332] sms_daily_state_read(): shift + [mmsms:4333] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 2 > 0 )) + [mmsms:4256] sms_daily_state_read(): opt=--out-history-json-var + [mmsms:4257] sms_daily_state_read(): case "$opt" in + [mmsms:4336] sms_daily_state_read(): shift + [mmsms:4337] sms_daily_state_read(): (( 1 == 0 )) + [mmsms:4342] sms_daily_state_read(): history_var=history_json + [mmsms:4343] sms_daily_state_read(): shift + [mmsms:4344] sms_daily_state_read(): continue + [mmsms:4254] sms_daily_state_read(): (( 0 > 0 )) + [mmsms:4357] sms_daily_state_read(): [[ -z /var/lib/mmsms/sms-count-global.state ]] + [mmsms:4363] sms_daily_state_read(): state_sent=0 + [mmsms:4364] sms_daily_state_read(): state_failed=0 + [mmsms:4365] sms_daily_state_read(): state_incoming=0 + [mmsms:4366] sms_daily_state_read(): [[ -n history_json ]] + [mmsms:4368] sms_daily_state_read(): state_history_json='[]' + [mmsms:4371] sms_daily_state_read(): [[ -r /var/lib/mmsms/sms-count-global.state ]] ++ [mmsms:4373] sms_daily_state_read(): cat /var/lib/mmsms/sms-count-global.state + [mmsms:4373] sms_daily_state_read(): content= + [mmsms:4375] sms_daily_state_read(): : + [mmsms:4380] sms_daily_state_read(): [[ -n '' ]] + [mmsms:4414] sms_daily_state_read(): [[ -n date ]] + [mmsms:4416] sms_daily_state_read(): printf -v date %s '' + [mmsms:4418] sms_daily_state_read(): [[ -n sent ]] + [mmsms:4420] sms_daily_state_read(): printf -v sent %s 0 + [mmsms:4422] sms_daily_state_read(): [[ -n failed ]] + [mmsms:4424] sms_daily_state_read(): printf -v failed %s 0 + [mmsms:4426] sms_daily_state_read(): [[ -n incoming ]] + [mmsms:4428] sms_daily_state_read(): printf -v incoming %s 0 + [mmsms:4430] sms_daily_state_read(): [[ -n label ]] + [mmsms:4432] sms_daily_state_read(): printf -v label %s '' + [mmsms:4434] sms_daily_state_read(): [[ -n msisdn ]] + [mmsms:4436] sms_daily_state_read(): printf -v msisdn %s '' + [mmsms:4438] sms_daily_state_read(): [[ -n history_json ]] + [mmsms:4440] sms_daily_state_read(): printf -v history_json %s '[]' + [mmsms:4443] sms_daily_state_read(): return 0 + [mmsms:9595] sms_usage_stats(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:9599] sms_usage_stats(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:9603] sms_usage_stats(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:9608] sms_usage_stats(): scope=line + [mmsms:9609] sms_usage_stats(): [[ global == \g\l\o\b\a\l ]] + [mmsms:9611] sms_usage_stats(): scope=global + [mmsms:9614] sms_usage_stats(): display_label= + [mmsms:9615] sms_usage_stats(): [[ -z '' ]] + [mmsms:9615] sms_usage_stats(): [[ -n '' ]] + [mmsms:9619] sms_usage_stats(): [[ -z '' ]] + [mmsms:9621] sms_usage_stats(): [[ global == msisdn:* ]] + [mmsms:9625] sms_usage_stats(): display_label=global + [mmsms:9629] sms_usage_stats(): [[ -z '' ]] + [mmsms:9631] sms_usage_stats(): entry_index=2 + [mmsms:9632] sms_usage_stats(): entry_tokens[entry_index]=global + [mmsms:9633] sms_usage_stats(): entry_scopes[entry_index]=global + [mmsms:9634] sms_usage_stats(): entry_dates[entry_index]= + [mmsms:9635] sms_usage_stats(): entry_labels[entry_index]= + [mmsms:9636] sms_usage_stats(): entry_msisdns[entry_index]= + [mmsms:9637] sms_usage_stats(): entry_display_labels[entry_index]=global + [mmsms:9638] sms_usage_stats(): entry_sent[entry_index]=0 + [mmsms:9639] sms_usage_stats(): entry_failed[entry_index]=0 + [mmsms:9640] sms_usage_stats(): entry_incoming[entry_index]=0 + [mmsms:9643] sms_usage_stats(): (( include_history )) + [mmsms:9705] sms_usage_stats(): (( 3 == 0 )) + [mmsms:9721] sms_usage_stats(): for entry_index in "${!entry_tokens[@]}" + [mmsms:9723] sms_usage_stats(): scope=line + [mmsms:9724] sms_usage_stats(): [[ line == \g\l\o\b\a\l ]] + [mmsms:9728] sms_usage_stats(): incoming=1 + [mmsms:9729] sms_usage_stats(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:9734] sms_usage_stats(): date=2025-09-24 + [mmsms:9735] sms_usage_stats(): [[ -z 2025-09-24 ]] + [mmsms:9739] sms_usage_stats(): aggregated=0 + [mmsms:9740] sms_usage_stats(): [[ ! 0 =~ ^-?[0-9]+$ ]] + [mmsms:9744] sms_usage_stats(): line_incoming_totals[$date]=1 + [mmsms:9721] sms_usage_stats(): for entry_index in "${!entry_tokens[@]}" + [mmsms:9723] sms_usage_stats(): scope=line + [mmsms:9724] sms_usage_stats(): [[ line == \g\l\o\b\a\l ]] + [mmsms:9728] sms_usage_stats(): incoming=1 + [mmsms:9729] sms_usage_stats(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:9734] sms_usage_stats(): date=2025-09-24 + [mmsms:9735] sms_usage_stats(): [[ -z 2025-09-24 ]] + [mmsms:9739] sms_usage_stats(): aggregated=1 + [mmsms:9740] sms_usage_stats(): [[ ! 1 =~ ^-?[0-9]+$ ]] + [mmsms:9744] sms_usage_stats(): line_incoming_totals[$date]=2 + [mmsms:9721] sms_usage_stats(): for entry_index in "${!entry_tokens[@]}" + [mmsms:9723] sms_usage_stats(): scope=global + [mmsms:9724] sms_usage_stats(): [[ global == \g\l\o\b\a\l ]] + [mmsms:9726] sms_usage_stats(): continue + [mmsms:9747] sms_usage_stats(): for entry_index in "${!entry_tokens[@]}" + [mmsms:9749] sms_usage_stats(): scope=line + [mmsms:9750] sms_usage_stats(): [[ line != \g\l\o\b\a\l ]] + [mmsms:9752] sms_usage_stats(): continue + [mmsms:9747] sms_usage_stats(): for entry_index in "${!entry_tokens[@]}" + [mmsms:9749] sms_usage_stats(): scope=line + [mmsms:9750] sms_usage_stats(): [[ line != \g\l\o\b\a\l ]] + [mmsms:9752] sms_usage_stats(): continue + [mmsms:9747] sms_usage_stats(): for entry_index in "${!entry_tokens[@]}" + [mmsms:9749] sms_usage_stats(): scope=global + [mmsms:9750] sms_usage_stats(): [[ global != \g\l\o\b\a\l ]] + [mmsms:9754] sms_usage_stats(): date= + [mmsms:9755] sms_usage_stats(): [[ -z '' ]] + [mmsms:9757] sms_usage_stats(): continue + [mmsms:9776] sms_usage_stats(): custom_json_requested + [mmsms:272] custom_json_requested(): [[ -n '' ]] + [mmsms:9821] sms_usage_stats(): local color_reset + [mmsms:9822] sms_usage_stats(): local color_blue + [mmsms:9823] sms_usage_stats(): local color_cyan + [mmsms:9824] sms_usage_stats(): local color_green + [mmsms:9825] sms_usage_stats(): local color_red + [mmsms:9826] sms_usage_stats(): local color_magenta + [mmsms:9827] sms_usage_stats(): local failed_color + [mmsms:9828] sms_usage_stats(): local failed_reset + [mmsms:9829] sms_usage_stats(): local date_display ++ [mmsms:9831] sms_usage_stats(): ansi_escape 0 ++ [mmsms:124] ansi_escape(): local code=0 ++ [mmsms:126] ansi_escape(): [[ -z 0 ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:132] ansi_escape(): printf '\e[%sm' 0 + [mmsms:9831] sms_usage_stats(): color_reset='' ++ [mmsms:9832] sms_usage_stats(): ansi_escape '1;34' ++ [mmsms:124] ansi_escape(): local 'code=1;34' ++ [mmsms:126] ansi_escape(): [[ -z 1;34 ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:132] ansi_escape(): printf '\e[%sm' '1;34' + [mmsms:9832] sms_usage_stats(): color_blue='' ++ [mmsms:9833] sms_usage_stats(): ansi_escape 36 ++ [mmsms:124] ansi_escape(): local code=36 ++ [mmsms:126] ansi_escape(): [[ -z 36 ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:132] ansi_escape(): printf '\e[%sm' 36 + [mmsms:9833] sms_usage_stats(): color_cyan='' ++ [mmsms:9834] sms_usage_stats(): ansi_escape '1;32' ++ [mmsms:124] ansi_escape(): local 'code=1;32' ++ [mmsms:126] ansi_escape(): [[ -z 1;32 ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:132] ansi_escape(): printf '\e[%sm' '1;32' + [mmsms:9834] sms_usage_stats(): color_green='' ++ [mmsms:9835] sms_usage_stats(): ansi_escape '1;31' ++ [mmsms:124] ansi_escape(): local 'code=1;31' ++ [mmsms:126] ansi_escape(): [[ -z 1;31 ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:132] ansi_escape(): printf '\e[%sm' '1;31' + [mmsms:9835] sms_usage_stats(): color_red='' ++ [mmsms:9836] sms_usage_stats(): ansi_escape '1;35' ++ [mmsms:124] ansi_escape(): local 'code=1;35' ++ [mmsms:126] ansi_escape(): [[ -z 1;35 ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:126] ansi_escape(): [[ -n '' ]] ++ [mmsms:132] ansi_escape(): printf '\e[%sm' '1;35' + [mmsms:9836] sms_usage_stats(): color_magenta='' + [mmsms:9838] sms_usage_stats(): for entry_index in "${!entry_tokens[@]}" + [mmsms:9840] sms_usage_stats(): display_label=+33695386096 + [mmsms:9841] sms_usage_stats(): scope=line + [mmsms:9842] sms_usage_stats(): date=2025-09-24 + [mmsms:9843] sms_usage_stats(): sent=1 + [mmsms:9844] sms_usage_stats(): failed=0 + [mmsms:9845] sms_usage_stats(): incoming=1 + [mmsms:9847] sms_usage_stats(): [[ -n 2025-09-24 ]] + [mmsms:9849] sms_usage_stats(): date_display=2025-09-24 + [mmsms:9854] sms_usage_stats(): failed_color= + [mmsms:9855] sms_usage_stats(): failed_reset= + [mmsms:9856] sms_usage_stats(): (( failed > 0 )) + [mmsms:9862] sms_usage_stats(): printf 'Stats for %s%s%s (scope=%s%s%s, date=%s%s%s)\n' '' +33695386096 '' '' line '' '' 2025-09-24 '' Stats for +33695386096 (scope=line, date=2025-09-24) + [mmsms:9866] sms_usage_stats(): printf ' outgoing sent: %s%s%s\n' '' 1 '' outgoing sent: 1 + [mmsms:9867] sms_usage_stats(): printf ' outgoing failed: %s%s%s\n' '' 0 '' outgoing failed: 0 + [mmsms:9868] sms_usage_stats(): printf ' incoming received: %s%s%s\n' '' 1 '' incoming received: 1 + [mmsms:9870] sms_usage_stats(): (( entry_index + 1 < 3 )) + [mmsms:9872] sms_usage_stats(): printf '\n' + [mmsms:9838] sms_usage_stats(): for entry_index in "${!entry_tokens[@]}" + [mmsms:9840] sms_usage_stats(): display_label=+4915565447259 + [mmsms:9841] sms_usage_stats(): scope=line + [mmsms:9842] sms_usage_stats(): date=2025-09-24 + [mmsms:9843] sms_usage_stats(): sent=1 + [mmsms:9844] sms_usage_stats(): failed=0 + [mmsms:9845] sms_usage_stats(): incoming=1 + [mmsms:9847] sms_usage_stats(): [[ -n 2025-09-24 ]] + [mmsms:9849] sms_usage_stats(): date_display=2025-09-24 + [mmsms:9854] sms_usage_stats(): failed_color= + [mmsms:9855] sms_usage_stats(): failed_reset= + [mmsms:9856] sms_usage_stats(): (( failed > 0 )) + [mmsms:9862] sms_usage_stats(): printf 'Stats for %s%s%s (scope=%s%s%s, date=%s%s%s)\n' '' +4915565447259 '' '' line '' '' 2025-09-24 '' Stats for +4915565447259 (scope=line, date=2025-09-24) + [mmsms:9866] sms_usage_stats(): printf ' outgoing sent: %s%s%s\n' '' 1 '' outgoing sent: 1 + [mmsms:9867] sms_usage_stats(): printf ' outgoing failed: %s%s%s\n' '' 0 '' outgoing failed: 0 + [mmsms:9868] sms_usage_stats(): printf ' incoming received: %s%s%s\n' '' 1 '' incoming received: 1 + [mmsms:9870] sms_usage_stats(): (( entry_index + 1 < 3 )) + [mmsms:9872] sms_usage_stats(): printf '\n' + [mmsms:9838] sms_usage_stats(): for entry_index in "${!entry_tokens[@]}" + [mmsms:9840] sms_usage_stats(): display_label=global + [mmsms:9841] sms_usage_stats(): scope=global + [mmsms:9842] sms_usage_stats(): date= + [mmsms:9843] sms_usage_stats(): sent=0 + [mmsms:9844] sms_usage_stats(): failed=0 + [mmsms:9845] sms_usage_stats(): incoming=0 + [mmsms:9847] sms_usage_stats(): [[ -n '' ]] + [mmsms:9851] sms_usage_stats(): date_display=-- + [mmsms:9854] sms_usage_stats(): failed_color= + [mmsms:9855] sms_usage_stats(): failed_reset= + [mmsms:9856] sms_usage_stats(): (( failed > 0 )) + [mmsms:9862] sms_usage_stats(): printf 'Stats for %s%s%s (scope=%s%s%s, date=%s%s%s)\n' '' global '' '' global '' '' -- '' Stats for global (scope=global, date=--) + [mmsms:9866] sms_usage_stats(): printf ' outgoing sent: %s%s%s\n' '' 0 '' outgoing sent: 0 + [mmsms:9867] sms_usage_stats(): printf ' outgoing failed: %s%s%s\n' '' 0 '' outgoing failed: 0 + [mmsms:9868] sms_usage_stats(): printf ' incoming received: %s%s%s\n' '' 0 '' incoming received: 0 + [mmsms:9870] sms_usage_stats(): (( entry_index + 1 < 3 )) + [mmsms:9877] sms_usage_stats(): return 0 Shared connection to 10.5.0.5 closed.