]> gitweb.fluxo.info Git - scripts.git/commitdiff
Adding openvpn-resolv-conf
authorSilvio Rhatto <rhatto@riseup.net>
Sat, 27 Sep 2014 18:20:04 +0000 (15:20 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Sat, 27 Sep 2014 18:20:04 +0000 (15:20 -0300)
openvpn-resolv-conf [new file with mode: 0755]

diff --git a/openvpn-resolv-conf b/openvpn-resolv-conf
new file mode 100755 (executable)
index 0000000..48d83ca
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# Parses DHCP options from OpenVPN to update resolv.conf.
+# To use set as 'up' and 'down' script in your openvpn config:
+# up /etc/openvpn/update-resolv-conf
+# down /etc/openvpn/update-resolv-conf
+#
+# credit:
+# * Thomas Hood <jdthood@yahoo.co.uk>
+# * Chris Hanson
+# * chlauber@bnc.ch
+#
+# Licensed under the GNU GPL
+# 
+
+[ -x /sbin/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="$part3"
+        fi
+      fi
+    done
+    R=""
+    if [ "$IF_DNS_SEARCH" ] ; then
+      R="${R}search $IF_DNS_SEARCH\n"
+    fi
+    for NS in $IF_DNS_NAMESERVERS ; do
+      R="${R}nameserver $NS"
+    done
+    echo -n "$R" | /sbin/resolvconf -a "${dev}.inet"
+    ;;
+  down)
+    /sbin/resolvconf -d "${dev}.inet"
+    ;;
+esac