DERIOX GUARD M9.5

Real Pairing Request From Mini PC

Mini PC-ul poate trimite cerere reală de pairing către Guard. Cererea rămâne în pending_admin_approval până la M9.6.

Pairing score100
Requests3
Pending1
Approved1
Auto approval0
Cameras0
M9.5 primește pairing request real manual, dar nu aprobă automat. Nu pornește service/cron, nu activează producția, nu scanează camere, nu deschide stream și nu colectează media.
DashboardGatewaysRequestsPendingMini PC CommandsPairing ScriptAuditAPI StatusDownload ScriptM9.4 Heartbeat

M9.5 Real Pairing Request From Mini PC

M9.5 enables the first real manual pairing request from the mini PC to Guard. Requests are stored as pending_admin_approval and are not auto-approved. No production, camera discovery, stream, media, service autostart, cron or billing is enabled.

last_request=2026-05-29 23:28:26 · receiver=1 · manual=1 · admin_required=1 · auto=0 · camera=0

Manual pairing request script

#!/bin/bash
set -e

echo "=================================================="
echo "DERIOX GUARD - MANUAL PAIRING REQUEST M9.5"
echo "=================================================="
echo "This sends one metadata-only pairing request to Guard."
echo "It does NOT approve the gateway, does NOT start a service,"
echo "does NOT scan cameras and does NOT send passwords, streams or media."
echo ""

CONF="/etc/deriox-guard/agent.env"
GUARD_URL="https://guard.deriox.ro"
AGENT_NAME="mini-pc-pilot-01"
GATEWAY_UUID=""

if [ -f "$CONF" ]; then
  # shellcheck disable=SC1090
  source "$CONF" || true
  if [ -n "${DERIOX_GUARD_URL:-}" ]; then GUARD_URL="$DERIOX_GUARD_URL"; fi
  if [ -n "${DERIOX_AGENT_NAME:-}" ]; then AGENT_NAME="$DERIOX_AGENT_NAME"; fi
  if [ -n "${DERIOX_GATEWAY_UUID:-}" ]; then GATEWAY_UUID="$DERIOX_GATEWAY_UUID"; fi
fi

HOST_NAME="$(hostname 2>/dev/null || echo unknown)"
OS_NAME="$(uname -a 2>/dev/null | tr '"' "'" | tr -d '\n')"
MACHINE_ID="$(cat /etc/machine-id 2>/dev/null || hostname)"
MACHINE_HASH="$(printf "%s" "$MACHINE_ID" | sha256sum | awk '{print $1}')"
LOCAL_IP="$(hostname -I 2>/dev/null | awk '{print $1}' || echo '')"

if [ -z "$GATEWAY_UUID" ]; then
  GATEWAY_UUID="manual-${HOST_NAME}-$(printf "%s" "$MACHINE_HASH" | awk '{print substr($1,1,16)}')"
fi

PAYLOAD=$(cat <<JSON
{
  "gateway_uuid": "$GATEWAY_UUID",
  "agent_name": "$AGENT_NAME",
  "agent_version": "m9.5-manual-pairing",
  "host_name": "$HOST_NAME",
  "os_name": "$OS_NAME",
  "machine_hash": "$MACHINE_HASH",
  "local_ip": "$LOCAL_IP",
  "manual_run": 1,
  "admin_approval_required": 1,
  "auto_approval_enabled": 0,
  "service_autostart_enabled": 0,
  "cron_enabled": 0,
  "production_go_live_enabled": 0,
  "real_camera_access_enabled": 0,
  "camera_discovery_enabled": 0,
  "stream_link_enabled": 0,
  "media_enabled": 0,
  "billing_enabled": 0
}
JSON
)

echo "Gateway UUID: $GATEWAY_UUID"
echo "Agent name:   $AGENT_NAME"
echo "Endpoint:     $GUARD_URL/api/gateway/mini-pc/pairing-request"
echo ""

curl -k -sS \
  -H "Content-Type: application/json" \
  -X POST "$GUARD_URL/api/gateway/mini-pc/pairing-request" \
  --data "$PAYLOAD"

echo ""
echo "M9.5 manual pairing request sent."
echo "Status should be pending_admin_approval until M9.6 admin approval."