01-wifi 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/bin/sh
  2. # WiFi hotplug script - triggers on wireless events
  3. # Install to /etc/hotplug.d/wireless/
  4. #
  5. # Event names match package/src/client2server-unified.lua:
  6. # wifi_connected / wifi_disconnected
  7. # Source UCI config (set by /etc/init.d/client2server)
  8. SERVER_URL="${SERVER_URL:-}"
  9. ROUTER_ID="${ROUTER_ID:-}"
  10. TOKEN="${TOKEN:-}"
  11. if [ -z "$SERVER_URL" ] || [ -z "$ROUTER_ID" ]; then
  12. # Fall back to UCI directly (when called outside init.d context)
  13. SERVER_URL=$(uci get client2server.server.url 2>/dev/null)
  14. ROUTER_ID=$(uci get client2server.router.id 2>/dev/null)
  15. TOKEN=$(uci get client2server.server.token 2>/dev/null)
  16. fi
  17. # Final fallback (sane default)
  18. SERVER_URL="${SERVER_URL:-http://127.0.0.1:3843}"
  19. ROUTER_ID="${ROUTER_ID:-$(cat /proc/sys/kernel/hostname 2>/dev/null || echo unknown)}"
  20. log() {
  21. logger -t client2server-hotplug -p user.info "$1"
  22. }
  23. send_event() {
  24. local event_type="$1"
  25. local data="$2"
  26. json="{\"router_id\":\"$ROUTER_ID\",\"event\":\"$event_type\",\"data\":$data}"
  27. if [ -n "$TOKEN" ]; then
  28. curl -s -m 3 -X POST "$SERVER_URL/api/events" \
  29. -H "Content-Type: application/json" \
  30. -H "Authorization: Bearer $TOKEN" \
  31. -d "$json" >/dev/null 2>&1
  32. else
  33. curl -s -m 3 -X POST "$SERVER_URL/api/events" \
  34. -H "Content-Type: application/json" \
  35. -d "$json" >/dev/null 2>&1
  36. fi
  37. log "Sent: $event_type"
  38. }
  39. # Handle WiFi client association
  40. case "$ACTION" in
  41. associate|associated)
  42. if [ -n "$MACADDR" ]; then
  43. log "WiFi CONNECTED: $MACADDR on $INTERFACE"
  44. send_event "wifi_connected" "{\"mac\":\"$MACADDR\",\"interface\":\"$INTERFACE\"}"
  45. fi
  46. ;;
  47. disassociate|disassociated|deauth|expired)
  48. if [ -n "$MACADDR" ]; then
  49. log "WiFi DISCONNECTED: $MACADDR on $INTERFACE"
  50. send_event "wifi_disconnected" "{\"mac\":\"$MACADDR\",\"interface\":\"$INTERFACE\"}"
  51. fi
  52. ;;
  53. esac