| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/bin/sh
- # DHCP hotplug script - triggers on DHCP events
- # Install to /etc/hotplug.d/dhcp/
- #
- # Events emitted (must match client2server-unified.lua's handler):
- # dhcp_lease_new / dhcp_lease_expire
- #
- # Events are spooled to /var/run/client2server/buffer and the Lua agent
- # is woken via SIGHUP. If the agent is offline (internet down), events
- # accumulate on disk and are flushed on reconnect.
- SCRIPT_DIR="$(dirname "$0")"
- # Source the shared lib from its canonical install location.
- # Falls back to the development path (hotplug/_lib.sh) for tests.
- if [ -f /usr/share/client2server/hotplug-lib.sh ]; then
- # shellcheck disable=SC1091
- . /usr/share/client2server/hotplug-lib.sh
- elif [ -f "$SCRIPT_DIR/_lib.sh" ]; then
- # shellcheck disable=SC1091
- . "$SCRIPT_DIR/_lib.sh"
- else
- logger -t client2server-hotplug -p user.err "hotplug-lib.sh not found"
- exit 1
- fi
- # Handle DHCP events
- # add - new lease (or renew with new IP)
- # update - lease renewed (same IP, new expiry)
- # old - lease rebind/old
- # del - lease released
- # remove - alias for del in some builds
- case "$ACTION" in
- add|update|old)
- if [ -n "$MAC" ] && [ -n "$IP" ]; then
- log_msg "DHCP LEASE NEW: $MAC -> $IP ($HOSTNAME)"
- send_event "dhcp_lease_new" \
- "{\"mac\":\"$MAC\",\"ip\":\"$IP\",\"hostname\":\"$HOSTNAME\"}"
- fi
- ;;
- del|remove)
- if [ -n "$MAC" ] && [ -n "$IP" ]; then
- log_msg "DHCP LEASE EXPIRE: $MAC -> $IP"
- send_event "dhcp_lease_expire" \
- "{\"mac\":\"$MAC\",\"old_ip\":\"$IP\"}"
- fi
- ;;
- esac
|