# Copyright IBM Corp. 2020, 2026
# SPDX-License-Identifier: BUSL-1.1

function connect_nc() {
  local id=$1
  # Note: When this command returns, the session immediately goes into a "canceling" state
  # Capture output and check for success message since nc may return non-zero on pipe close
  local output
  output=$(echo "SSH-2.0-Test" | boundary connect -exec nc -target-id $id -- -v -w 5 {{boundary.ip}} {{boundary.port}} 2>&1)
  local status=$?
  echo "$output"

  # If connection succeeded, return 0 regardless of nc's exit status
  if echo "$output" | grep -q "succeeded"; then
    return 0
  fi
  return $status
}

function connect_alias() {
  local alias=$1
  # Note: When this command returns, the session immediately goes into a "canceling" state
  # Capture output and check for success message since nc may return non-zero on pipe close
  local output
  output=$(echo "SSH-2.0-Test" | boundary connect $alias -exec nc -- -v -w 5 {{boundary.ip}} {{boundary.port}} 2>&1)
  local status=$?
  echo "$output"

  # If connection succeeded, return 0 regardless of nc's exit status
  if echo "$output" | grep -q "succeeded"; then
    return 0
  fi
  return $status
}

function connect_alias_with_host_id() {
  local alias=$1
  local hostid=$2
  # Note: When this command returns, the session immediately goes into a "canceling" state
  # Capture output and check for success message since nc may return non-zero on pipe close
  local output
  output=$(echo "SSH-2.0-Test" | boundary connect $alias -host-id $hostid -exec nc -- -v -w 5 {{boundary.ip}} {{boundary.port}} 2>&1)
  local status=$?
  echo "$output"

  # If connection succeeded, return 0 regardless of nc's exit status
  if echo "$output" | grep -q "succeeded"; then
    return 0
  fi
  return $status
}
