#!/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"