diff --git a/sevpn/test.sh b/sevpn/test.sh index e96e99e..a6475a2 100755 --- a/sevpn/test.sh +++ b/sevpn/test.sh @@ -332,30 +332,80 @@ hub.type) ;; -# br.status +cas.status) + HUB=${ITEM%,*} + CAS=${ITEM##*,} + resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}") + status=$(echo "$resp" | jq -r '.result.Connected_bool' 2>/dev/null) + if [ "$status" = "true" ]; then + echo "Connection Completed (Session Established)" + else + echo "offline" + fi + ;; + +cas.if.out.broad) + HUB=${ITEM%,*} + CAS=${ITEM##*,} + resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}") + val=$(echo "$resp" | jq -r '.result."Send.BroadcastBytes_u64"' 2>/dev/null) + echo "${val:-0}" + ;; + +cas.if.in.broad) + HUB=${ITEM%,*} + CAS=${ITEM##*,} + resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}") + val=$(echo "$resp" | jq -r '.result."Recv.BroadcastBytes_u64"' 2>/dev/null) + echo "${val:-0}" + ;; + +cas.if.out) + HUB=${ITEM%,*} + CAS=${ITEM##*,} + resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}") + val=$(echo "$resp" | jq -r '.result.TotalSendSize_u64' 2>/dev/null) + echo "${val:-0}" + ;; + +cas.if.in) + HUB=${ITEM%,*} + CAS=${ITEM##*,} + resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}") + val=$(echo "$resp" | jq -r '.result.TotalRecvSize_u64' 2>/dev/null) + echo "${val:-0}" + ;; + +cas.if.out.uni) + HUB=${ITEM%,*} + CAS=${ITEM##*,} + resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}") + val=$(echo "$resp" | jq -r '.result."Send.UnicastBytes_u64"' 2>/dev/null) + echo "${val:-0}" + ;; + +cas.if.in.uni) + HUB=${ITEM%,*} + CAS=${ITEM##*,} + resp=$(api_call "GetLinkStatus" "{\"HubName_Ex_str\":\"$HUB\",\"AccountName_utf\":\"$CAS\"}") + val=$(echo "$resp" | jq -r '.result."Recv.UnicastBytes_u64"' 2>/dev/null) + echo "${val:-0}" + ;; + br.status) HUB=${ITEM%,*} BR=${ITEM##*,} resp=$(api_call "EnumLocalBridge") - if echo "$resp" | jq -e '.error' >/dev/null 2>&1; then - # Fallback на старый метод - $VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD bridgelist | tr -d ' ' | awk '-F|' -v VH="${HUB}" -v VB="${BR}" '{if ($2==VH && $3==VB) print $4}' + online=$(echo "$resp" | jq -r --arg hub "$HUB" --arg br "$BR" '.result.LocalBridgeList[] | select(.HubNameLB_str == $hub and .DeviceName_str == $br) | .Online_bool' 2>/dev/null | head -1) + if [ "$online" = "true" ]; then + echo "Operating" else - # Ищем в списке мостов запись с нужным хабом и именем устройства - status=$(echo "$resp" | jq -r --arg hub "$HUB" --arg br "$BR" '.result.LocalBridgeList[] | select(.HubNameLB_str == $hub and .DeviceName_str == $br) | .Online_bool' 2>/dev/null | head -1) - if [ -n "$status" ] && [ "$status" != "null" ]; then - # Выводим true/false (оригинал выводил то же) - echo "$status" - else - # Если не нашли, пробуем старый метод - $VCMD /SERVER ${URL} /PASSWORD:${PWD} /adminhub:${HUB} /CMD bridgelist | tr -d ' ' | awk '-F|' -v VH="${HUB}" -v VB="${BR}" '{if ($2==VH && $3==VB) print $4}' - fi + echo "false" fi ;; - usr.if.out.broad) HUB=${ITEM%,*} USER=${ITEM##*,}