Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37044338
en ru br
Репозитории ALT
S:3.12.0-alt2
5.1: 3.3.2-alt6
www.altlinux.org/Changes

Группа :: Система/Настройка/Сеть
Пакет: openresolv

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: openresolv-3.12.0-alt2.patch
Скачать


 Makefile             |   4 +-
 dnsmasq.in           |   8 ++--
 libc.in              |   9 +++--
 named.in             |  32 +++++++---------
 resolvconf.8.in      |   2 +-
 resolvconf.conf      |  18 +++++++--
 resolvconf.conf.5.in |   2 +-
 resolvconf.in        | 102 +++++++--------------------------------------------
 8 files changed, 57 insertions(+), 120 deletions(-)
diff --git a/Makefile b/Makefile
index 73fbb9a..2a24ba2 100644
--- a/Makefile
+++ b/Makefile
@@ -72,9 +72,9 @@ proginstall: ${TARGET}
 	${INSTALL} -m ${DOCMODE} resolvconf.conf ${DESTDIR}${SYSCONFDIR}
 	${INSTALL} -d ${DESTDIR}${LIBEXECDIR}
 	${INSTALL} -m ${DOCMODE} ${SUBSCRIBERS} ${DESTDIR}${LIBEXECDIR}
-	${INSTALL} -d ${DESTDIR}${LIBEXECDIR}/libc.d
+	${INSTALL} -d ${DESTDIR}${SYSCONFDIR}/hooks/resolv.conf.d
 	${INSTALL} -m ${DOCMODE} ${LIBC_SUBSCRIBERS} \
-		${DESTDIR}${LIBEXECDIR}/libc.d
+		${DESTDIR}${SYSCONFDIR}/hooks/resolv.conf.d
 
 maninstall:
 	${INSTALL} -d ${DESTDIR}${MANDIR}/man8
diff --git a/dnsmasq.in b/dnsmasq.in
index 8014eed..c0c03c8 100644
--- a/dnsmasq.in
+++ b/dnsmasq.in
@@ -28,11 +28,13 @@
 
 [ -f "@SYSCONFDIR@"/resolvconf.conf ] || exit 0
 . "@SYSCONFDIR@/resolvconf.conf" || exit 1
-[ -z "${dnsmasq_conf}${dnsmasq_resolv}" ] && exit 0
+[ -z "$dnsmasq_conf" -o -z "$dnsmasq_resolv" ] && exit 0
 [ -z "$RESOLVCONF" ] && eval "$(@SBINDIR@/resolvconf -v)"
 NL="
 "
 
+DBUS_SEND="${DBUS_SEND:-/usr/bin/dbus-send}"
+
 : ${dnsmasq_pid:=/var/run/dnsmasq.pid}
 [ -s "$dnsmasq_pid" ] || dnsmasq_pid=/var/run/dnsmasq/dnsmasq.pid
 [ -s "$dnsmasq_pid" ] || unset dnsmasq_pid
@@ -47,7 +49,7 @@ newresolv="$newconf"
 # Check for DBus support in the binary
 dbus=false
 dbus_ex=false
-dbus_introspect=$(dbus-send --print-reply --system \
+dbus_introspect=$($DBUS_SEND --print-reply --system \
 	--dest=uk.org.thekelleys.dnsmasq \
 	/uk/org/thekelleys/dnsmasq \
 	org.freedesktop.DBus.Introspectable.Introspect \
@@ -203,7 +205,7 @@ if $dbus; then
 	else
 		method=SetServers
 	fi
-	dbus-send --system --dest=uk.org.thekelleys.dnsmasq \
+	$DBUS_SEND --system --dest=uk.org.thekelleys.dnsmasq \
  		/uk/org/thekelleys/dnsmasq uk.org.thekelleys.$method \
   		$dbusdest
 	dbus-send --system --dest=uk.org.thekelleys.dnsmasq \
diff --git a/libc.in b/libc.in
index 2b291b7..ef21de1 100644
--- a/libc.in
+++ b/libc.in
@@ -174,7 +174,7 @@ case "${resolv_conf_passthrough:-NO}" in
 	# Hold our new resolv.conf in a variable to save on temporary files
 	newconf="$signature$NL"
 	if [ -n "$resolv_conf_head" ]; then
-		newconf="$newconf$resolv_conf_head$NL"
+		newconf="$newconf$(printf "$resolv_conf_head")$NL"
 	fi
 
 	[ -n "$domain" ] && newconf="${newconf}domain $domain$NL"
@@ -200,7 +200,7 @@ case "${resolv_conf_passthrough:-NO}" in
 	fi
 
 	if [ -n "$resolv_conf_tail" ]; then
-		newconf="$newconf$resolv_conf_tail$NL"
+		newconf="$newconf$(printf "$resolv_conf_tail")$NL"
 	fi
 	;;
 esac
@@ -239,7 +239,10 @@ fi
 
 retval=0
 # Notify users of the resolver
-for script in "$LIBEXECDIR"/libc.d/*; do
+for script in "$SYSCONFDIR"/hooks/resolv.conf.d/*; do
+	# Don't run *.rpm* and *~ scripts.
+	[ "${script%.rpm*}" = "$script" -a "${script%\~}" = "$script" ] || continue
+
 	if [ -f "$script" ]; then
 		if [ -x "$script" ]; then
 			"$script" "$@"
diff --git a/named.in b/named.in
index 3301896..143b20c 100644
--- a/named.in
+++ b/named.in
@@ -28,29 +28,22 @@
 
 [ -f "@SYSCONFDIR@"/resolvconf.conf ] || exit 0
 . "@SYSCONFDIR@/resolvconf.conf" || exit 1
-[ -z "${named_zones}${named_options}" ] && exit 0
+[ -n "$named_zones" -a -n "$named_options" -a \
+	-d "${named_zones%/*}" -a -d "${named_options%/*}" ] || exit 0
 [ -z "$RESOLVCONF" ] && eval "$(@SBINDIR@/resolvconf -v)"
 NL="
 "
 
-# Platform specific kludges
-if [ -z "${named_service}${named_restart}" ] &&
-   [ -d "$RCDIR" ] && ! [ -x "$RCDIR"/named ]
-then
-	if [ -x "$RCDIR"/bind9 ]; then
-		# Debian and derivatives
-		named_service=bind9
-	elif [ -x "$RCDIR"/rc.bind ]; then
-		# Slackware
-		named_service=rc.bind
-	fi
-fi
-: ${named_service:=named}
+: ${named_service:=bind}
 
-: ${named_pid:=/var/run/$named_service.pid}
-[ -s "$named_pid" ] || named_pid=/var/run/$named_service/$named_service.pid
-[ -s "$named_pid" ] || unset named_pid
+list_own_zones()
+{
+    find "${named_zones%/*}" \
+	-type f \( -name '*.conf' -a \! -name "${named_zones##*/}" \) \
+	-exec sed -n 's/zone[[:space:]]\+"\([^"]\+\)\".*/\1/p' '{}' \+ |grep -v 'in-addr\.arpa$'|tr '\n' ' '
+}
 
+ownzones=" $(list_own_zones) "
 newoptions="# Generated by resolvconf$NL"
 newzones="$newoptions"
 
@@ -66,7 +59,9 @@ if [ -n "$forward" ]; then
 fi
 
 for d in $DOMAINS; do
-	newzones="${newzones}zone \"${d%%:*}\" {$NL"
+	zone="${d%%:*}"
+	[ -n "${ownzones## *$zone* }" ] || continue
+	newzones="${newzones}zone \"$zone\" {$NL"
 	newzones="$newzones	type forward;$NL"
 	newzones="$newzones	forward first;$NL	forwarders {$NL"
 	ns="${d#*:}"
@@ -116,3 +111,4 @@ if $changed; then
 		@SBINDIR@/resolvconf -r ${named_service}
 	fi
 fi
+exit 0
diff --git a/resolvconf.8.in b/resolvconf.8.in
index 39020e9..8f63b45 100644
--- a/resolvconf.8.in
+++ b/resolvconf.8.in
@@ -302,7 +302,7 @@ Configuration file for
 Directory of subscribers which are run every time
 .Nm
 adds, deletes or updates.
-.It Pa @LIBEXECDIR@/libc.d
+.It Pa /etc/hooks/resolv.conf.d
 Directory of subscribers which are run after the libc subscriber is run.
 .It Pa @VARDIR@
 State directory for
diff --git a/resolvconf.conf b/resolvconf.conf
index 4f5f2e6..c75ea6e 100644
--- a/resolvconf.conf
+++ b/resolvconf.conf
@@ -1,7 +1,19 @@
 # Configuration for resolvconf(8)
 # See resolvconf.conf(5) for details
 
+resolv_conf_head='# Do not edit manually, use\n# /etc/net/ifaces/<interface>/resolv.conf instead.'
 resolv_conf=/etc/resolv.conf
-# If you run a local name server, you should uncomment the below line and
-# configure your subscribers configuration files below.
-#name_servers=127.0.0.1
+
+# These interfaces will always be processed first.
+interface_order='lo lo[0-9]* lo.*'
+
+# These interfaces will be processed next, unless they have a metric.
+dynamic_order='tap[0-9]* tun[0-9]* vpn vpn[0-9]* wg[0-9]* ppp[0-9]* ippp[0-9]*'
+
+#Configuration files for named subscriber.
+named_zones=/var/lib/bind/etc/resolvconf-zones.conf
+named_options=/var/lib/bind/etc/resolvconf-options.conf
+
+#Configuration files for dnsmasq subscriber.
+dnsmasq_conf=/etc/dnsmasq.conf.d/60-resolvconf
+dnsmasq_resolv=/etc/resolv.conf.dnsmasq
diff --git a/resolvconf.conf.5.in b/resolvconf.conf.5.in
index b36e867..8044676 100644
--- a/resolvconf.conf.5.in
+++ b/resolvconf.conf.5.in
@@ -69,7 +69,7 @@ If set, these interfaces will not be processed.
 These interfaces will always be processed first.
 If unset, defaults to the following:-
 .Bd -compact -literal -offset indent
-lo lo[0-9]*
+lo lo[0-9]* lo.*
 .Ed
 .It Sy dynamic_order
 These interfaces will be processed next, unless they have a metric.
diff --git a/resolvconf.in b/resolvconf.in
index 198096b..dddba5c 100644
--- a/resolvconf.in
+++ b/resolvconf.in
@@ -45,7 +45,7 @@ unset interface_order state_dir
 local_nameservers="127.* 0.0.0.0 255.255.255.255 ::1"
 
 dynamic_order="tap[0-9]* tun[0-9]* vpn vpn[0-9]* wg[0-9]* ppp[0-9]* ippp[0-9]*"
-interface_order="lo lo[0-9]*"
+interface_order="lo lo[0-9]* lo.*"
 name_server_blacklist="0.0.0.0"
 
 # Support original resolvconf configuration layout
@@ -298,95 +298,15 @@ detect_init()
 {
 	[ -n "$RESTARTCMD" ] && return 0
 
-	# Detect the running init system.
-	# As systemd and OpenRC can be installed on top of legacy init
-	# systems we try to detect them first.
-	status="@STATUSARG@"
-	: ${status:=status}
-	if [ -x /bin/systemctl ] && [ -S /run/systemd/private ]; then
-		RESTARTCMD='
-			if /bin/systemctl --quiet is-active $1.service
-			then
-				/bin/systemctl restart $1.service
-			fi'
-	elif [ -x /usr/bin/systemctl ] && [ -S /run/systemd/private ]; then
-		RESTARTCMD='
-			if /usr/bin/systemctl --quiet is-active $1.service
-			then
-				/usr/bin/systemctl restart $1.service
-			fi'
-	elif [ -x /sbin/rc-service ] &&
-	     { [ -s /libexec/rc/init.d/softlevel ] ||
-	     [ -s /run/openrc/softlevel ]; }
-	then
-		RESTARTCMD='/sbin/rc-service -i $1 -- -Ds restart'
-	elif [ -x /usr/sbin/invoke-rc.d ]; then
-		RCDIR=/etc/init.d
-		RESTARTCMD='
-		   if /usr/sbin/invoke-rc.d --quiet $1 status >/dev/null 2>&1
-		   then
-			/usr/sbin/invoke-rc.d $1 restart
-		   fi'
-	elif [ -x /sbin/service ]; then
-		# Old RedHat
-		RCDIR=/etc/init.d
-		RESTARTCMD='
-			if /sbin/service $1; then
-				/sbin/service $1 restart
-			fi'
-	elif [ -x /usr/sbin/service ]; then
-		# Could be FreeBSD
-		RESTARTCMD="
-			if /usr/sbin/service \$1 $status >/dev/null 2>&1
-			then
-				/usr/sbin/service \$1 restart
-			fi"
-	elif [ -x /bin/sv ]; then
-		RESTARTCMD='/bin/sv status $1 >/dev/null 2>&1 &&
-			    /bin/sv try-restart $1'
-	elif [ -x /usr/bin/sv ]; then
-		RESTARTCMD='/usr/bin/sv status $1 >/dev/null 2>&1 &&
-			    /usr/bin/sv try-restart $1'
-	elif [ -e /etc/arch-release ] && [ -d /etc/rc.d ]; then
-		RCDIR=/etc/rc.d
-		RESTARTCMD='
-			if [ -e /var/run/daemons/$1 ]
-			then
-				/etc/rc.d/$1 restart
-			fi'
-	elif [ -e /etc/slackware-version ] && [ -d /etc/rc.d ]; then
-		RESTARTCMD='
-			if /etc/rc.d/rc.$1 status >/dev/null 2>&1
-			then
-				/etc/rc.d/rc.$1 restart
-			fi'
-	elif [ -e /etc/rc.d/rc.subr ] && [ -d /etc/rc.d ]; then
-		# OpenBSD
-		RESTARTCMD='
-			if /etc/rc.d/$1 check >/dev/null 2>&1
-			then
-				/etc/rc.d/$1 restart
-			fi'
+	local SYSTEMCTL=systemctl
+	local SERVICE=service
+
+	if sd_booted; then
+		RESTARTCMD="$SYSTEMCTL --quiet is-active \"\$1\".service && $SYSTEMCTL restart \"\$1\".service ||:"
 	else
-		for x in /etc/init.d/rc.d /etc/rc.d /etc/init.d; do
-			[ -d $x ] || continue
-			RESTARTCMD="
-				if $x/\$1 $status >/dev/null 2>&1
-				then
-					$x/\$1 restart
-				fi"
-			break
-		done
+		RESTARTCMD="$SERVICE \"\$1\" status 1>/dev/null 2>&1 && $SERVICE \"\$1\" restart ||:"
 	fi
 
-	if [ -z "$RESTARTCMD" ]; then
-		if [ "$_NOINIT_WARNED" != true ]; then
-			warn "could not detect a useable init system"
-			_NOINIT_WARNED=true
-		fi
-		return 1
-	fi
-	_NOINIT_WARNED=
 	return 0
 }
 
@@ -915,7 +835,7 @@ a)
 	# Set metric and private before creating the interface resolv.conf file
 	# to ensure that it will have the correct flags
 	[ ! -d "$METRICDIR" ] && mkdir "$METRICDIR"
-	oldmetric="$METRICDIR/"*" $iface"
+	oldmetric="$(echo "$METRICDIR/"*" $iface")"
 	newmetric=
 	if [ -n "$IF_METRIC" ]; then
 		# Pad metric to 6 characters, so 5 is less than 10
@@ -1059,11 +979,12 @@ esac
 
 # Try and detect a suitable init system for our scripts
 detect_init
-export RESTARTCMD RCDIR _NOINIT_WARNED
+export RESTARTCMD RCDIR
 
 eval "$(make_vars)"
 export RESOLVCONF DOMAINS SEARCH NAMESERVERS LOCALNAMESERVERS
 : ${list_resolv:=list_resolv -l}
+export PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin"
 retval=0
 
 # Run scripts in the same directory resolvconf is run from
@@ -1071,6 +992,9 @@ retval=0
 cd "$_PWD"
 for script in "$LIBEXECDIR"/*; do
 	if [ -f "$script" ]; then
+		# Don't run *.rpm* and *~ scripts.
+		[ "${script%.rpm*}" = "$script" -a "${script%\~}" = "$script" ] || continue
+
 		eval script_enabled="\$${script##*/}"
 		case "${script_enabled:-YES}" in
 		[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) ;;
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin