浏览代码

remove scoped ipv6 resolvers

Joe Polny 4 年之前
父节点
当前提交
2bde43c6e9
共有 1 个文件被更改,包括 9 次插入2 次删除
  1. 9 2
      docker-entrypoint.sh

+ 9 - 2
docker-entrypoint.sh

@@ -21,9 +21,16 @@ fi
 
 
 # Compute the DNS resolvers for use in the templates - if the IP contains ":", it's IPv6 and must be enclosed in []
 # Compute the DNS resolvers for use in the templates - if the IP contains ":", it's IPv6 and must be enclosed in []
 export RESOLVERS=$(awk '$1 == "nameserver" {print ($2 ~ ":")? "["$2"]": $2}' ORS=' ' /etc/resolv.conf | sed 's/ *$//g')
 export RESOLVERS=$(awk '$1 == "nameserver" {print ($2 ~ ":")? "["$2"]": $2}' ORS=' ' /etc/resolv.conf | sed 's/ *$//g')
+
+SCOPED_IPV6_REGEX="\[fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}\]"
+
 if [ "x$RESOLVERS" = "x" ]; then
 if [ "x$RESOLVERS" = "x" ]; then
-    echo "Warning: unable to determine DNS resolvers for nginx" >&2
-    unset RESOLVERS
+	echo "Warning: unable to determine DNS resolvers for nginx" >&2
+	unset RESOLVERS
+elif [[ $RESOLVERS =~ $SCOPED_IPV6_REGEX ]]; then
+	echo -n "Warning: Scoped IPv6 addresses removed from resolvers: " >&2
+	echo $RESOLVERS | grep -Eo $SCOPED_IPV6_REGEX | paste -s -d ' ' >&2
+	export RESOLVERS=$(echo $RESOLVERS | sed -r "s/$SCOPED_IPV6_REGEX//g" | xargs echo -n)
 fi
 fi
 
 
 # If the user has run the default command and the socket doesn't exist, fail
 # If the user has run the default command and the socket doesn't exist, fail