56 lines
1.3 KiB
Bash
56 lines
1.3 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
MI_URL=${LISGLOSIPS_MI_URL:-http://127.0.0.1:8888/mi}
|
|
ORIGINAL=${SSH_ORIGINAL_COMMAND:-}
|
|
|
|
if [ "$#" -eq 0 ] && [ -n "$ORIGINAL" ]; then
|
|
set -- $ORIGINAL
|
|
fi
|
|
|
|
while [ "$#" -gt 0 ]; do
|
|
token=${1:-}
|
|
token=${token#\"}
|
|
token=${token%\"}
|
|
token=${token#\'}
|
|
token=${token%\'}
|
|
|
|
case "$token" in
|
|
/usr/local/sbin/lisglosips-call-control|lisglosips-call-control|'')
|
|
shift
|
|
;;
|
|
dlg_list|dlg_end_dlg)
|
|
set -- "$token" "${2:-}"
|
|
break
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
method=${1:-}
|
|
case "$method" in
|
|
dlg_list)
|
|
payload='{"jsonrpc":"2.0","method":"dlg_list","params":[],"id":1}'
|
|
;;
|
|
dlg_end_dlg)
|
|
dialog_id=${2:-}
|
|
dialog_id=${dialog_id#\"}
|
|
dialog_id=${dialog_id%\"}
|
|
dialog_id=${dialog_id#\'}
|
|
dialog_id=${dialog_id%\'}
|
|
if ! printf '%s' "$dialog_id" | grep -Eq '^[A-Za-z0-9@._:%+=-]{1,220}$'; then
|
|
printf '{"jsonrpc":"2.0","error":{"code":-32602,"message":"invalid dialog id"},"id":1}\n'
|
|
exit 0
|
|
fi
|
|
payload='{"jsonrpc":"2.0","method":"dlg_end_dlg","params":["'"$dialog_id"'"],"id":1}'
|
|
;;
|
|
*)
|
|
printf '{"jsonrpc":"2.0","error":{"code":-32601,"message":"method not allowed"},"id":1}\n'
|
|
exit 0
|
|
;;
|
|
esac
|
|
|
|
exec curl -fsS -X POST "$MI_URL" -H 'Content-Type: application/json' --data-binary "$payload"
|