]> Frank Brehm's Git Trees - config/bruni/etc.git/commitdiff
committing changes in /etc after emerge run
authorfrank <frank@bruni.home.brehm-online.com>
Mon, 16 Jan 2012 19:25:50 +0000 (20:25 +0100)
committerFrank Brehm <root@bruni.home.brehm-online.com>
Mon, 16 Jan 2012 19:25:50 +0000 (20:25 +0100)
Package changes:
+net-misc/openvpn-2.1.4

.etckeeper
conf.d/openvpn [new file with mode: 0644]
env.d/65openvpn [new file with mode: 0644]
init.d/openvpn [new file with mode: 0755]
openvpn/.keep_net-misc_openvpn-0 [new file with mode: 0644]
openvpn/down.sh [new file with mode: 0755]
openvpn/up.sh [new file with mode: 0755]

index f01ac2608b160b49377d70a5eb0a488393eb787b..3fca03dfdc5b7a29f39e70e237a31e2037ad8083 100755 (executable)
@@ -188,6 +188,7 @@ maybe chmod 0644 './conf.d/net'
 maybe chmod 0644 './conf.d/network'
 maybe chmod 0644 './conf.d/ntp-client'
 maybe chmod 0644 './conf.d/ntpd'
+maybe chmod 0644 './conf.d/openvpn'
 maybe chmod 0644 './conf.d/pciparm'
 maybe chmod 0644 './conf.d/pydoc-2.7'
 maybe chmod 0644 './conf.d/pydoc-3.1'
@@ -375,6 +376,7 @@ maybe chmod 0644 './env.d/50ncurses'
 maybe chmod 0644 './env.d/51dconf'
 maybe chmod 0644 './env.d/60python-docs-2.7'
 maybe chmod 0644 './env.d/60python-docs-3.1'
+maybe chmod 0644 './env.d/65openvpn'
 maybe chmod 0644 './env.d/70less'
 maybe chmod 0644 './env.d/80mercurial'
 maybe chmod 0644 './env.d/80subversion-extras'
@@ -661,6 +663,7 @@ maybe chmod 0755 './init.d/nscd'
 maybe chmod 0755 './init.d/ntp-client'
 maybe chmod 0755 './init.d/ntpd'
 maybe chmod 0755 './init.d/numlock'
+maybe chmod 0755 './init.d/openvpn'
 maybe chmod 0755 './init.d/pciparm'
 maybe chmod 0755 './init.d/php-fpm'
 maybe chmod 0755 './init.d/procfs'
@@ -832,6 +835,10 @@ maybe chmod 0400 './openldap/ssl/ldap.key'
 maybe chown ldap './openldap/ssl/ldap.pem'
 maybe chgrp ldap './openldap/ssl/ldap.pem'
 maybe chmod 0400 './openldap/ssl/ldap.pem'
+maybe chmod 0755 './openvpn'
+maybe chmod 0644 './openvpn/.keep_net-misc_openvpn-0'
+maybe chmod 0755 './openvpn/down.sh'
+maybe chmod 0755 './openvpn/up.sh'
 maybe chmod 0755 './pam.d'
 maybe chmod 0644 './pam.d/chage'
 maybe chmod 0644 './pam.d/chfn'
diff --git a/conf.d/openvpn b/conf.d/openvpn
new file mode 100644 (file)
index 0000000..72510c3
--- /dev/null
@@ -0,0 +1,18 @@
+# OpenVPN automatically creates an /etc/resolv.conf (or sends it to
+# resolvconf) if given DNS information by the OpenVPN server.
+# Set PEER_DNS="no" to stop this.
+PEER_DNS="yes"
+
+# OpenVPN can run in many modes. Most people will want the init script
+# to automatically detect the mode and try and apply a good default
+# configuration and setup scripts. However, there are cases where the
+# OpenVPN configuration looks like a client, but it's really a peer or
+# something else. DETECT_CLIENT controls this behaviour.
+DETECT_CLIENT="yes"
+
+# If DETECT_CLIENT is no and you have your own scripts to re-enter the openvpn
+# init script (ie, it first becomes "inactive" and the script then starts the
+# script again to make it "started") then you can state this below.
+# In other words, unless you understand service dependencies and are a
+# competent shell scripter, don't set this.
+RE_ENTER="no"
diff --git a/env.d/65openvpn b/env.d/65openvpn
new file mode 100644 (file)
index 0000000..4ddb034
--- /dev/null
@@ -0,0 +1 @@
+CONFIG_PROTECT="/usr/share/openvpn/easy-rsa"
diff --git a/init.d/openvpn b/init.d/openvpn
new file mode 100755 (executable)
index 0000000..d65e6f8
--- /dev/null
@@ -0,0 +1,133 @@
+#!/sbin/runscript
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+VPNDIR=${VPNDIR:-/etc/openvpn}
+VPN=${SVCNAME#*.}
+if [ -n "${VPN}" ] && [ ${SVCNAME} != "openvpn" ]; then
+       VPNPID="/var/run/openvpn.${VPN}.pid"
+else
+       VPNPID="/var/run/openvpn.pid"
+fi
+VPNCONF="${VPNDIR}/${VPN}.conf"
+
+depend() {
+       need localmount net
+       use dns
+       after bootmisc
+}
+
+checkconfig() {
+       # Linux has good dynamic tun/tap creation
+       if [ $(uname -s) = "Linux" ] ; then
+               if [ ! -e /dev/net/tun ]; then
+                       if ! modprobe tun ; then
+                               eerror "TUN/TAP support is not available" \
+                                       "in this kernel"
+                               return 1
+                       fi
+               fi
+               if [ -h /dev/net/tun ] && [ -c /dev/misc/net/tun ]; then
+                       ebegin "Detected broken /dev/net/tun symlink, fixing..."
+                       rm -f /dev/net/tun
+                       ln -s /dev/misc/net/tun /dev/net/tun
+                       eend $?
+               fi
+               return 0
+       fi
+
+       # Other OS's don't, so we rely on a pre-configured interface
+       # per vpn instance
+       local ifname=$(sed -n -e 's/[[:space:]]*dev[[:space:]][[:space:]]*\([^[:space:]]*\).*/\1/p' "${VPNCONF}")
+       if [ -z ${ifname} ] ; then
+               eerror "You need to specify the interface that this openvpn" \
+                       "instance should use" \
+                       "by using the dev option in ${VPNCONF}"
+               return 1
+       fi
+
+       if ! ifconfig "${ifname}" >/dev/null 2>/dev/null ; then
+               # Try and create it
+               echo > /dev/"${ifname}" >/dev/null
+       fi
+       if ! ifconfig "${ifname}" >/dev/null 2>/dev/null ; then
+               eerror "${VPNCONF} requires interface ${ifname}" \
+                       "but that does not exist"
+               return 1
+       fi
+}
+
+start() {
+       # If we are re-called by the openvpn gentoo-up.sh script
+       # then we don't actually want to start openvpn
+       [ "${IN_BACKGROUND}" = "true" ] && return 0
+       
+       ebegin "Starting ${SVCNAME}"
+
+       checkconfig || return 1
+
+       local args="" reenter=${RE_ENTER:-no}
+       # If the config file does not specify the cd option, we do
+       # But if we specify it, we override the config option which we do not want
+       if ! grep -q "^[        ]*cd[   ].*" "${VPNCONF}" ; then
+               args="${args} --cd ${VPNDIR}"
+       fi
+       
+       # We mark the service as inactive and then start it.
+       # When we get an authenticated packet from the peer then we run our script
+       # which configures our DNS if any and marks us as up.
+       if [ "${DETECT_CLIENT:-yes}" = "yes" ] && \
+       grep -q "^[     ]*remote[       ].*" "${VPNCONF}" ; then
+               reenter="yes"
+               args="${args} --up-delay --up-restart"
+               args="${args} --script-security 2"
+               args="${args} --up /etc/openvpn/up.sh"
+               args="${args} --down-pre --down /etc/openvpn/down.sh"
+
+               # Warn about setting scripts as we override them
+               if grep -Eq "^[         ]*(up|down)[    ].*" "${VPNCONF}" ; then
+                       ewarn "WARNING: You have defined your own up/down scripts"
+                       ewarn "As you're running as a client, we now force Gentoo specific"
+                       ewarn "scripts to be run for up and down events."
+                       ewarn "These scripts will call /etc/openvpn/${SVCNAME}-{up,down}.sh"
+                       ewarn "where you can put your own code."
+               fi
+
+               # Warn about the inability to change ip/route/dns information when
+               # dropping privs
+               if grep -q "^[  ]*user[         ].*" "${VPNCONF}" ; then
+                       ewarn "WARNING: You are dropping root privileges!"
+                       ewarn "As such openvpn may not be able to change ip, routing"
+                       ewarn "or DNS configuration."
+               fi
+       else
+               # So we're a server. Run as openvpn unless otherwise specified
+               grep -q "^[     ]*user[         ].*" "${VPNCONF}" || args="${args} --user openvpn"
+               grep -q "^[     ]*group[        ].*" "${VPNCONF}" || args="${args} --group openvpn"
+       fi
+
+       # Ensure that our scripts get the PEER_DNS variable
+       [ -n "${PEER_DNS}" ] && args="${args} --setenv PEER_DNS ${PEER_DNS}"
+
+       [ "${reenter}" = "yes" ] && mark_service_inactive "${SVCNAME}"
+       start-stop-daemon --start --exec /usr/sbin/openvpn --pidfile "${VPNPID}" \
+               -- --config "${VPNCONF}" --writepid "${VPNPID}" --daemon \
+               --setenv SVCNAME "${SVCNAME}" ${args}
+       eend $? "Check your logs to see why startup failed"
+}
+
+stop() {
+       # If we are re-called by the openvpn gentoo-down.sh script
+       # then we don't actually want to stop openvpn
+       if [ "${IN_BACKGROUND}" = "true" ] ; then
+               mark_service_inactive "${SVCNAME}"
+               return 0
+       fi
+
+       ebegin "Stopping ${SVCNAME}"
+       start-stop-daemon --stop --quiet \
+               --exec /usr/sbin/openvpn --pidfile "${VPNPID}"
+       eend $?
+}
+
+# vim: set ts=4 :
diff --git a/openvpn/.keep_net-misc_openvpn-0 b/openvpn/.keep_net-misc_openvpn-0
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/openvpn/down.sh b/openvpn/down.sh
new file mode 100755 (executable)
index 0000000..1c70db0
--- /dev/null
@@ -0,0 +1,33 @@
+#!/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)
+
+# If we have a service specific script, run this now
+if [ -x /etc/openvpn/"${SVCNAME}"-down.sh ] ; then
+       /etc/openvpn/"${SVCNAME}"-down.sh "$@"
+fi
+
+# Restore resolv.conf to how it was
+if [ "${PEER_DNS}" != "no" ]; then
+       if [ -x /sbin/resolvconf ] ; then
+               /sbin/resolvconf -d "${dev}"
+       elif [ -e /etc/resolv.conf-"${dev}".sv ] ; then
+               # Important that we copy instead of move incase resolv.conf is
+               # a symlink and not an actual file
+               cp /etc/resolv.conf-"${dev}".sv /etc/resolv.conf
+               rm -f /etc/resolv.conf-"${dev}".sv
+       fi
+fi
+
+if [ -n "${SVCNAME}" ]; then
+       # Re-enter the init script to start any dependant services
+       if /etc/init.d/"${SVCNAME}" --quiet status ; then
+               export IN_BACKGROUND=true
+               /etc/init.d/"${SVCNAME}" --quiet stop
+       fi
+fi
+
+exit 0
+
+# vim: ts=4 :
diff --git a/openvpn/up.sh b/openvpn/up.sh
new file mode 100755 (executable)
index 0000000..4a88687
--- /dev/null
@@ -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 SVCNAME env var
+# as we could have >1 openvpn service
+
+if [ -n "${SVCNAME}" ]; then
+       # If we have a service specific script, run this now
+       if [ -x /etc/openvpn/"${SVCNAME}"-up.sh ] ; then
+               /etc/openvpn/"${SVCNAME}"-up.sh "$@"
+       fi
+
+       # Re-enter the init script to start any dependant services
+       if ! /etc/init.d/"${SVCNAME}" --quiet status ; then
+               export IN_BACKGROUND=true
+               /etc/init.d/${SVCNAME} --quiet start
+       fi
+fi
+
+exit 0
+
+# vim: ts=4 :