60 lines
1.8 KiB
Text
60 lines
1.8 KiB
Text
|
|
#!/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"
|