clawdie-iso/live/operator-session/clawdie-live-resolver

60 lines
1.8 KiB
Text
Raw Permalink Normal View History

#!/bin/sh
# Clawdie operator USB resolver guard.
#
# FreeBSD installer-derived memsticks may leave /etc/resolv.conf pointing at
# /tmp/bsdinstall_etc/resolv.conf. On this live USB /tmp is tmpfs, so that
# target disappears at boot and DNS breaks even when DHCP, link, and routing
# are otherwise healthy. Repair only missing or installer-scratch resolver
# files; leave a valid operator/DHCP-managed resolver untouched.
# PROVIDE: clawdie_live_resolver
# REQUIRE: FILESYSTEMS
# BEFORE: netif NETWORKING avahi_daemon
# KEYWORD: nojail
. /etc/rc.subr
name="clawdie_live_resolver"
rcvar="${name}_enable"
start_cmd="${name}_start"
stop_cmd=":"
clawdie_live_resolver_recreate() {
rm -f /etc/resolv.conf
{
echo "# Created by clawdie_live_resolver."
echo "# DHCP/NetworkMgr may replace this file after interfaces come up."
} >/etc/resolv.conf
chmod 0644 /etc/resolv.conf
}
clawdie_live_resolver_start() {
_target=""
if [ -L /etc/resolv.conf ]; then
_target="$(readlink /etc/resolv.conf 2>/dev/null || true)"
case "$_target" in
/tmp/bsdinstall_etc/*)
echo "${name}: replacing installer resolver symlink ${_target}"
clawdie_live_resolver_recreate
return 0
;;
*)
if [ ! -e /etc/resolv.conf ]; then
echo "${name}: replacing dangling resolver symlink ${_target}"
clawdie_live_resolver_recreate
fi
return 0
;;
esac
fi
if [ ! -e /etc/resolv.conf ]; then
echo "${name}: creating missing /etc/resolv.conf"
clawdie_live_resolver_recreate
fi
}
load_rc_config "$name"
: "${clawdie_live_resolver_enable:=YES}"
run_rc_command "$1"