Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.49 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # Parses DHCP options from openvpn to update resolv.conf
  4. # To use set as 'up' and 'down' script in your openvpn *.conf:
  5. # up /etc/openvpn/update-resolv-conf
  6. # down /etc/openvpn/update-resolv-conf
  7. #
  8. # Used snippets of resolvconf script by Thomas Hood and Chris Hanson.
  9. # Licensed under the GNU GPL.  See /usr/share/common-licenses/GPL.
  10. #
  11. # Example envs set from openvpn:
  12. #
  13. #     foreign_option_1='dhcp-option DNS 193.43.27.132'
  14. #     foreign_option_2='dhcp-option DNS 193.43.27.133'
  15. #     foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
  16. #
  17.  
  18. if [ ! -x /sbin/resolvconf ] ; then
  19.     logger "[OpenVPN:update-resolve-conf] missing binary /sbin/resolvconf";
  20.     exit 0;
  21. fi
  22.  
  23. [ "$script_type" ] || exit 0
  24. [ "$dev" ] || exit 0
  25.  
  26. split_into_parts()
  27. {
  28.     part1="$1"
  29.     part2="$2"
  30.     part3="$3"
  31. }
  32.  
  33. case "$script_type" in
  34.   up)
  35.     NMSRVRS=""
  36.     SRCHS=""
  37.     foreign_options=$(printf '%s\n' ${!foreign_option_*} | sort -t _ -k 3 -g)
  38.     for optionvarname in ${foreign_options} ; do
  39.         option="${!optionvarname}"
  40.         echo "$option"
  41.         split_into_parts $option
  42.         if [ "$part1" = "dhcp-option" ] ; then
  43.             if [ "$part2" = "DNS" ] ; then
  44.                 NMSRVRS="${NMSRVRS:+$NMSRVRS }$part3"
  45.             elif [ "$part2" = "DOMAIN" ] ; then
  46.                 SRCHS="${SRCHS:+$SRCHS }$part3"
  47.             fi
  48.         fi
  49.     done
  50.     R=""
  51.     [ "$SRCHS" ] && R="search $SRCHS
  52. "
  53.     for NS in $NMSRVRS ; do
  54.             R="${R}nameserver $NS
  55. "
  56.     done
  57.     echo -n "$R" | /sbin/resolvconf -a "${dev}.openvpn"
  58.     ;;
  59.   down)
  60.     /sbin/resolvconf -d "${dev}.openvpn"
  61.     ;;
  62. esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement