diff options
author | A. Wilcox <awilcox@wilcox-tech.com> | 2018-09-09 02:51:33 +0000 |
---|---|---|
committer | A. Wilcox <awilcox@wilcox-tech.com> | 2018-09-09 02:51:33 +0000 |
commit | 00c6813ddc64d0a3d0a5cab119f91c58317217e5 (patch) | |
tree | 0f729b8e939a5e56df46665eac2bdb28d302e66e /user/openvpn/openvpn.up | |
parent | d79900b0d3cb63401768ec787f39234f29dc67be (diff) | |
parent | 7e6bb9bcded19718f013101a9502093712900f85 (diff) | |
download | packages-00c6813ddc64d0a3d0a5cab119f91c58317217e5.tar.gz packages-00c6813ddc64d0a3d0a5cab119f91c58317217e5.tar.bz2 packages-00c6813ddc64d0a3d0a5cab119f91c58317217e5.tar.xz packages-00c6813ddc64d0a3d0a5cab119f91c58317217e5.zip |
Merge branch 'user/openvpn/1' into 'master'
user/openvpn: pull in
Imported from Alpine. This is my first attempt at porting an Alpine package!
See merge request !52
Diffstat (limited to 'user/openvpn/openvpn.up')
-rw-r--r-- | user/openvpn/openvpn.up | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/user/openvpn/openvpn.up b/user/openvpn/openvpn.up new file mode 100644 index 000000000..2923bef7a --- /dev/null +++ b/user/openvpn/openvpn.up @@ -0,0 +1,82 @@ +#!/bin/sh +# Copyright (c) 2006-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# Contributed by Roy Marples (uberlord@gentoo.org) + +# Setup our resolv.conf +# Vitally important that we use the domain entry in resolv.conf so we +# can setup the nameservers are for the domain ONLY in resolvconf if +# we're using a decent dns cache/forwarder like dnsmasq and NOT nscd/libc. +# nscd/libc users will get the VPN nameservers before their other ones +# and will use the first one that responds - maybe the LAN ones? +# non resolvconf users just the the VPN resolv.conf + +# FIXME:- if we have >1 domain, then we have to use search :/ +# We need to add a flag to resolvconf to say +# "these nameservers should only be used for the listed search domains +# if other global nameservers are present on other interfaces" +# This however, will break compatibility with Debians resolvconf +# A possible workaround would be to just list multiple domain lines +# and try and let resolvconf handle it + +if [ "${PEER_DNS}" != "no" ]; then + NS= + DOMAIN= + SEARCH= + i=1 + while true ; do + eval opt=\$foreign_option_${i} + [ -z "${opt}" ] && break + if [ "${opt}" != "${opt#dhcp-option DOMAIN *}" ] ; then + if [ -z "${DOMAIN}" ] ; then + DOMAIN="${opt#dhcp-option DOMAIN *}" + else + SEARCH="${SEARCH}${SEARCH:+ }${opt#dhcp-option DOMAIN *}" + fi + elif [ "${opt}" != "${opt#dhcp-option DNS *}" ] ; then + NS="${NS}nameserver ${opt#dhcp-option DNS *}\n" + fi + i=$((${i} + 1)) + done + + if [ -n "${NS}" ] ; then + DNS="# Generated by openvpn for interface ${dev}\n" + if [ -n "${SEARCH}" ] ; then + DNS="${DNS}search ${DOMAIN} ${SEARCH}\n" + elif [ -n "${DOMAIN}" ]; then + DNS="${DNS}domain ${DOMAIN}\n" + fi + DNS="${DNS}${NS}" + if [ -x /sbin/resolvconf ] ; then + printf "${DNS}" | /sbin/resolvconf -a "${dev}" + else + # Preserve the existing resolv.conf + if [ -e /etc/resolv.conf ] ; then + cp /etc/resolv.conf /etc/resolv.conf-"${dev}".sv + fi + printf "${DNS}" > /etc/resolv.conf + chmod 644 /etc/resolv.conf + fi + fi +fi + +# Below section is Gentoo specific +# Quick summary - our init scripts are re-entrant and set the RC_SVCNAME env var +# as we could have >1 openvpn service + +if [ -n "${RC_SVCNAME}" ]; then + # If we have a service specific script, run this now + if [ -x /etc/openvpn/"${RC_SVCNAME}"-up.sh ] ; then + /etc/openvpn/"${RC_SVCNAME}"-up.sh "$@" + fi + + # Re-enter the init script to start any dependant services + if ! /etc/init.d/"${RC_SVCNAME}" --quiet status ; then + export IN_BACKGROUND=true + /etc/init.d/${RC_SVCNAME} --quiet start + fi +fi + +exit 0 + +# vim: ts=4 : |