From f820b00ab5b68d0acc0ab04caa8a7be37bdde80a Mon Sep 17 00:00:00 2001 From: syncbq Date: Sun, 30 Dec 2012 14:38:36 -0500 Subject: [PATCH] network/openresolv: Added (management framework for resolv.conf) Signed-off-by: dsomero --- network/openresolv/README | 19 ++++ network/openresolv/openresolv.SlackBuild | 115 +++++++++++++++++++++++ network/openresolv/openresolv.info | 10 ++ network/openresolv/slack-desc | 19 ++++ network/openresolv/update-resolv-conf | 54 +++++++++++ 5 files changed, 217 insertions(+) create mode 100644 network/openresolv/README create mode 100644 network/openresolv/openresolv.SlackBuild create mode 100644 network/openresolv/openresolv.info create mode 100644 network/openresolv/slack-desc create mode 100644 network/openresolv/update-resolv-conf diff --git a/network/openresolv/README b/network/openresolv/README new file mode 100644 index 0000000000..6601c417ed --- /dev/null +++ b/network/openresolv/README @@ -0,0 +1,19 @@ +management framework for resolv.conf + +Allows multiple daemons to manage resolv.conf and configures +local resolvers such as dnsmasq and unbound. + +This package may require some manual configuration. Please +read resolvconf(8) and resolvconf.conf(5) for detailed +instructions. + +If using openvpn and the following lines were added to +openvpn client configuration file: + +up /etc/openvpn/update-resolv-conf +down /etc/openvpn/update-resolv-conf + +by passing OPENVPN=yes to the SlackBuild script, it will +copy update-resolv-conf file to /etc/openvpn folder. + +Please consult update-resolv-conf before doing this. \ No newline at end of file diff --git a/network/openresolv/openresolv.SlackBuild b/network/openresolv/openresolv.SlackBuild new file mode 100644 index 0000000000..0d8d3b9b21 --- /dev/null +++ b/network/openresolv/openresolv.SlackBuild @@ -0,0 +1,115 @@ +#!/bin/sh + +# Slackware build script for openresolv + +# Copyright 2012 synbq Bucharest +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PRGNAM=openresolv +VERSION=${VERSION:-3.5.3} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i486 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +# Enable OPENVPN - Defaulting to no +if [ "${OPENVPN:-no}" = "no" ]; then + USE_OPENVPN="" +else + if [ -d /etc/openvpn ]; then + USE_OPENVPN="cp $CWD/update-resolv-conf $PKG/etc/openvpn/" + else + echo "You must to have openvpn installed" + exit 1 + fi +fi + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar jxvf $CWD/$PRGNAM-$VERSION.tar.bz2 +cd $PRGNAM-$VERSION +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --build=$ARCH-slackware-linux + +make +make install DESTDIR=$PKG + +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +if [ "${OPENVPN}" = "yes" ]; then + mkdir -p $PKG/etc/openvpn + $USE_OPENVPN +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/network/openresolv/openresolv.info b/network/openresolv/openresolv.info new file mode 100644 index 0000000000..8c0cf459b7 --- /dev/null +++ b/network/openresolv/openresolv.info @@ -0,0 +1,10 @@ +PRGNAM="openresolv" +VERSION="3.5.3" +HOMEPAGE="http://roy.marples.name/projects/openresolv" +DOWNLOAD="http://roy.marples.name/downloads/openresolv/openresolv-3.5.3.tar.bz2" +MD5SUM="3801d1edef2658205dabfdb9ea559806" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="" +MAINTAINER="syncbq" +EMAIL="syncrico@gmail.com" diff --git a/network/openresolv/slack-desc b/network/openresolv/slack-desc new file mode 100644 index 0000000000..25399c7708 --- /dev/null +++ b/network/openresolv/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +openresolv: openresolv (management framework for resolv.conf) +openresolv: +openresolv: Allows multiple daemons to manage resolv.conf and configures local +openresolv: resolvers such as dnsmasq and unbound. +openresolv: This package may require some manual configuration. +openresolv: Please read resolvconf(8) and resolvconf.conf(5) for detailed +openresolv: instructions. +openresolv: +openresolv: Visit the openresolv project online: +openresolv: http://roy.marples.name/projects/openresolv +openresolv: diff --git a/network/openresolv/update-resolv-conf b/network/openresolv/update-resolv-conf new file mode 100644 index 0000000000..5a9d17b169 --- /dev/null +++ b/network/openresolv/update-resolv-conf @@ -0,0 +1,54 @@ +#!/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 +# and Chris Hanson +# Licensed under the GNU GPL. See /usr/share/common-licenses/GPL. +# +# 05/2006 chlauber@bnc.ch +# +# 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 /usr/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="$IF_DNS_SEARCH $part3" + fi + fi + done + R="" + for SS in $IF_DNS_SEARCH ; do + R="${R}search $SS +" + done + for NS in $IF_DNS_NAMESERVERS ; do + R="${R}nameserver $NS +" + done + echo -n "$R" | /usr/sbin/resolvconf -a "${dev}.inet" + ;; +down) + /usr/sbin/resolvconf -d "${dev}.inet" + ;; +esac +