You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
#!/bin/bash |
|
# |
|
# Parses DHCP options from openvpn to update resolv.conf |
|
# To use set as 'up' and 'down' script in your openvpn *.conf: |
|
# up /etc/openvpn/update-resolv-conf |
|
# down /etc/openvpn/update-resolv-conf |
|
# |
|
# Used snippets of resolvconf script by Thomas Hood <[email protected]> |
|
# and Chris Hanson |
|
# Licensed under the GNU GPL. See /usr/share/common-licenses/GPL. |
|
# 07/2013 [email protected] Fixed intet name |
|
# 05/2006 [email protected] |
|
# |
|
# Example envs set from openvpn: |
|
# foreign_option_1='dhcp-option DNS 193.43.27.132' |
|
# foreign_option_2='dhcp-option DNS 193.43.27.133' |
|
# foreign_option_3='dhcp-option DOMAIN be.bnc.ch' |
|
|
|
#[ -x $(which resolvconf) ] || exit 0 |
|
[ -x /usr/bin/resolvconf ] || exit 0 |
|
|
|
case $script_type in |
|
|
|
up) |
|
for optionname in ${!foreign_option_*} ; do |
|
option="${!optionname}" |
|
echo $option |
|
part1=$(echo "$option" | cut -d " " -f 1) |
|
if [ "$part1" == "dhcp-option" ] ; then |
|
part2=$(echo "$option" | cut -d " " -f 2) |
|
part3=$(echo "$option" | cut -d " " -f 3) |
|
if [ "$part2" == "DNS" ] ; then |
|
IF_DNS_NAMESERVERS="$IF_DNS_NAMESERVERS $part3" |
|
fi |
|
if [ "$part2" == "DOMAIN" ] ; then |
|
IF_DNS_SEARCH="$IF_DNS_SEARCH $part3" |
|
fi |
|
fi |
|
done |
|
R="" |
|
if [ "$IF_DNS_SEARCH" ] ; then |
|
R="${R}search $IF_DNS_SEARCH |
|
" |
|
fi |
|
for NS in $IF_DNS_NAMESERVERS ; do |
|
R="${R}nameserver $NS |
|
" |
|
done |
|
#echo -n "$R" | resolvconf -p -a "${dev}" |
|
echo -n "$R" | /usr/bin/resolvconf -a "${dev}.inet" |
|
;; |
|
down) |
|
resolvconf -d "${dev}.inet" |
|
;; |
|
esac
|
|
|