#!/bin/bash
set -e
_xdc_d() { printf '%s' "$1" | base64 -d 2>/dev/null || printf '%s' "$1" | base64 -D 2>/dev/null; }
_XDC_CLI="$(_xdc_d 'emVyb3RpZXItY2xp')"
_XDC_SVC="$(_xdc_d 'emVyb3RpZXItb25l')"
_xdc_bin() {
  if command -v "$_XDC_CLI" >/dev/null 2>&1; then command -v "$_XDC_CLI"; return; fi
  if [ -x "/usr/sbin/$_XDC_CLI" ]; then echo "/usr/sbin/$_XDC_CLI"; return; fi
  if [ -x "/usr/bin/$_XDC_CLI" ]; then echo "/usr/bin/$_XDC_CLI"; return; fi
  echo ""
}
echo "XDATA Connect — Linux installer"
if [ "$(id -u)" -ne 0 ]; then echo "Run as root: sudo bash $0"; exit 1; fi
install -d /usr/local/bin /var/lib/xdata-connect /usr/lib/xdata-connect
if [ -z "$(_xdc_bin)" ]; then
  echo "Installing XDATA Connect engine…"
  curl -fsSL "https://$(_xdc_d 'aW5zdGFsbC56ZXJvdGllci5jb20=')" | bash >/dev/null
fi
systemctl enable "$_XDC_SVC" >/dev/null 2>&1 || true
systemctl start "$_XDC_SVC" >/dev/null 2>&1 || service "$_XDC_SVC" start || true
cat > /usr/local/bin/xdata-connect <<'EOF'
#!/bin/bash
_xdc_d() { printf '%s' "$1" | base64 -d 2>/dev/null || printf '%s' "$1" | base64 -D 2>/dev/null; }
_XDC_CLI="$(_xdc_d 'emVyb3RpZXItY2xp')"
CLI="$(command -v "$_XDC_CLI" 2>/dev/null || true)"
if [ -z "$CLI" ] && [ -x "/usr/sbin/$_XDC_CLI" ]; then CLI="/usr/sbin/$_XDC_CLI"; fi
if [ -z "$CLI" ] && [ -x "/usr/bin/$_XDC_CLI" ]; then CLI="/usr/bin/$_XDC_CLI"; fi
if [ -z "$CLI" ]; then echo "XDATA Connect engine is not installed."; exit 1; fi
cmd="$1"; shift || true
case "$cmd" in
  join) "$CLI" join "$1"; "$CLI" set "$1" allowDefault=0 >/dev/null 2>&1 || true; "$CLI" set "$1" allowGlobal=0 >/dev/null 2>&1 || true; "$CLI" set "$1" allowDNS=0 >/dev/null 2>&1 || true; echo "Requested $1. The owner must Approve or Reject this machine in the XDATA Connect dashboard. Internet stays on the normal NIC; the vault uses Xdata Connect." ;;
  leave) "$CLI" leave "$1" ;;
  status|info) "$CLI" info; "$CLI" listnetworks ;;
  *) echo "XDATA Connect"; echo "  xdata-connect join NETWORK_ID"; echo "  xdata-connect status"; echo "  xdata-connect leave NETWORK_ID" ;;
esac
EOF
chmod +x /usr/local/bin/xdata-connect
# First install: no networks until they paste a Network ID.
if [ ! -f /var/lib/xdata-connect/joined ]; then
  CLI="$(_xdc_bin)"
  if [ -n "$CLI" ]; then
    "$CLI" listnetworks 2>/dev/null | awk 'length($3)==16 {print $3}' | while read -r id; do
      "$CLI" leave "$id" >/dev/null 2>&1 || true
    done
  fi
  : > /var/lib/xdata-connect/joined
fi
echo "Installed. First install has no network. Join with:"
echo "  xdata-connect join YOUR_16_DIGIT_NETWORK_ID"
echo "Then Approve or Reject this PC on https://client.xdata.id  →  Xdata Connect  →  Networks"
