2026-02-19 07:22:25 +00:00
|
|
|
#!/usr/bin/env sh
|
|
|
|
|
set -e
|
|
|
|
|
|
2026-02-19 07:33:45 +00:00
|
|
|
PERSIST_DIR="/data/defined"
|
2026-02-19 07:22:25 +00:00
|
|
|
SYSTEM_DIR="/etc/defined"
|
|
|
|
|
|
2026-02-19 07:33:45 +00:00
|
|
|
# Ensure persistent directory exists
|
|
|
|
|
mkdir -p "${PERSIST_DIR}"
|
2026-02-19 07:22:25 +00:00
|
|
|
|
2026-02-19 07:33:45 +00:00
|
|
|
# Restore persisted config if it exists
|
|
|
|
|
if [ -f "${PERSIST_DIR}/config.yml" ]; then
|
|
|
|
|
cp -a "${PERSIST_DIR}/." "${SYSTEM_DIR}/"
|
|
|
|
|
echo "Restored persisted dnclient config."
|
2026-02-19 07:22:25 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Read enrollment code from HA options
|
|
|
|
|
ENROLLMENT_CODE="$(cat /data/options.json | sed -n 's/.*"enrollment_code" *: *"\([^"]*\)".*/\1/p')"
|
|
|
|
|
|
|
|
|
|
# Only set enrollment code if non-empty and host is not already enrolled
|
2026-02-19 07:33:45 +00:00
|
|
|
if [ -n "${ENROLLMENT_CODE}" ] && [ ! -f "${SYSTEM_DIR}/config.yml" ]; then
|
2026-02-19 07:22:25 +00:00
|
|
|
export DN_ENROLLMENT_CODE="${ENROLLMENT_CODE}"
|
|
|
|
|
echo "Enrolling host with provided enrollment code..."
|
|
|
|
|
fi
|
|
|
|
|
|
2026-02-19 07:33:45 +00:00
|
|
|
# Persist config on shutdown
|
|
|
|
|
trap 'echo "Persisting config..."; cp -a "${SYSTEM_DIR}/." "${PERSIST_DIR}/"; exit 0' TERM INT
|
|
|
|
|
|
2026-02-19 07:22:25 +00:00
|
|
|
echo "Starting dnclient..."
|
2026-02-19 07:33:45 +00:00
|
|
|
dnclient &
|
|
|
|
|
DNCLIENT_PID=$!
|
|
|
|
|
|
|
|
|
|
# Wait a moment for enrollment to complete, then persist
|
|
|
|
|
sleep 5
|
|
|
|
|
cp -a "${SYSTEM_DIR}/." "${PERSIST_DIR}/" 2>/dev/null || true
|
|
|
|
|
|
|
|
|
|
wait ${DNCLIENT_PID}
|