29 lines
921 B
Bash
Executable file
29 lines
921 B
Bash
Executable file
#!/usr/local/bin/bash
|
|
set -euo pipefail
|
|
|
|
readonly DHCPD_CONF_FILE='/etc/dhcpd.conf'
|
|
readonly DHCPD_LEASES_FILE='/var/db/dhcpd.leases'
|
|
readonly UNBOUND_LOCAL_DATA_FILE='/var/unbound/etc/local-data-dhcpd.conf'
|
|
UNBOUND_LOCAL_DATA_FILE_TMP="$(mktemp)"
|
|
readonly UNBOUND_LOCAL_DATA_FILE_TMP
|
|
|
|
get_file_modify_time() {
|
|
stat -f %m "$1"
|
|
}
|
|
|
|
if [ -e "$UNBOUND_LOCAL_DATA_FILE" ]; then
|
|
UNBOUND_LOCAL_DATA_FILE_MODIFY_TIME="$(get_file_modify_time "$UNBOUND_LOCAL_DATA_FILE")"
|
|
|
|
if [ "$UNBOUND_LOCAL_DATA_FILE_MODIFY_TIME" -gt "$(get_file_modify_time "$DHCPD_CONF_FILE")" ]; then
|
|
if [ "$UNBOUND_LOCAL_DATA_FILE_MODIFY_TIME" -gt "$(get_file_modify_time "$DHCPD_LEASES_FILE")" ]; then
|
|
exit 0
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
../dhcpd/list_active_assignments | ../unbound/local-data-file-generator > "$UNBOUND_LOCAL_DATA_FILE_TMP"
|
|
|
|
mv "$UNBOUND_LOCAL_DATA_FILE_TMP" "$UNBOUND_LOCAL_DATA_FILE"
|
|
chmod 644 "$UNBOUND_LOCAL_DATA_FILE"
|
|
|
|
rcctl reload unbound
|