34 lines
1014 B
Bash
Executable File
34 lines
1014 B
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
# Copyright 2022 Sxmo Contributors
|
|
|
|
# include common definitions
|
|
# shellcheck source=scripts/core/sxmo_common.sh
|
|
. sxmo_common.sh
|
|
|
|
MODEM="$1"
|
|
TYPE="$2"
|
|
MESSAGE="${3:-}"
|
|
|
|
# If xdialer, xmodem, or msm-modem-uim-selection ussd is actively handling USSD,
|
|
# do not interfere with the active USSD session.
|
|
RDIR="${XDG_RUNTIME_DIR:-/tmp}"
|
|
if [ -f "$RDIR/xdialer.pid" ] || [ -f "$RDIR/xmodem.pid" ] || \
|
|
pgrep -f "msm-modem-uim-selection ussd" >/dev/null 2>&1; then
|
|
exit 0
|
|
fi
|
|
|
|
MM_IFACE="org.freedesktop.ModemManager1"
|
|
DBUS_PROP_IFACE="org.freedesktop.DBus.Properties"
|
|
USSD_IFACE="org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd"
|
|
|
|
if [ "$TYPE" = "NetworkNotification" ] || [ "$TYPE" = "NetworkRequest" ]; then
|
|
MESSAGE="$(busctl --json=short call "$MM_IFACE" "$MODEM" "$DBUS_PROP_IFACE" Get ss "$USSD_IFACE" "$TYPE" 2>/dev/null | jq -r '.data[].data // empty' 2>/dev/null || true)"
|
|
fi
|
|
|
|
if [ -z "$MESSAGE" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
sxmo_notify_user.sh "USSD: $MESSAGE"
|