From 219a6dab8995aad9ac4860cc1a84d6f3509a03a4 Mon Sep 17 00:00:00 2001 From: wbx Date: Sun, 17 May 2009 14:41:34 +0200 Subject: Initial import --- package/vpnc/Config.in | 9 +++ package/vpnc/Makefile | 36 +++++++++++ package/vpnc/files/vpnc-route | 30 +++++++++ package/vpnc/files/vpnc-script | 118 ++++++++++++++++++++++++++++++++++++ package/vpnc/files/vpnc.conf | 8 +++ package/vpnc/ipkg/vpnc.conffiles | 4 ++ package/vpnc/ipkg/vpnc.control | 6 ++ package/vpnc/patches/patch-Makefile | 51 ++++++++++++++++ package/vpnc/patches/patch-config_c | 12 ++++ 9 files changed, 274 insertions(+) create mode 100644 package/vpnc/Config.in create mode 100644 package/vpnc/Makefile create mode 100755 package/vpnc/files/vpnc-route create mode 100755 package/vpnc/files/vpnc-script create mode 100644 package/vpnc/files/vpnc.conf create mode 100644 package/vpnc/ipkg/vpnc.conffiles create mode 100755 package/vpnc/ipkg/vpnc.control create mode 100644 package/vpnc/patches/patch-Makefile create mode 100644 package/vpnc/patches/patch-config_c (limited to 'package/vpnc') diff --git a/package/vpnc/Config.in b/package/vpnc/Config.in new file mode 100644 index 000000000..25a0050c1 --- /dev/null +++ b/package/vpnc/Config.in @@ -0,0 +1,9 @@ +config ADK_PACKAGE_VPNC + prompt "vpnc.............................. VPN client for Cisco 3000" + tristate + default n + select ADK_KPACKAGE_KMOD_TUN + select ADK_PACKAGE_LIBGPG_ERROR + select ADK_PACKAGE_LIBGCRYPT + help + Client for cisco3000 VPN Concentrator. diff --git a/package/vpnc/Makefile b/package/vpnc/Makefile new file mode 100644 index 000000000..8936a9fe2 --- /dev/null +++ b/package/vpnc/Makefile @@ -0,0 +1,36 @@ +# $Id$ +#- +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include ${TOPDIR}/rules.mk + +PKG_NAME:= vpnc +PKG_VERSION:= 0.4.0 +PKG_RELEASE:= 2 +PKG_MD5SUM:= 604807e7dd90fce00a4e2344ee29c76d + +MASTER_SITES:= http://www.unix-ag.uni-kl.de/~massar/vpnc/ + +PKG_DEPENDS:= libgcrypt libgpg-error kmod-tun + +include ${TOPDIR}/mk/package.mk + +$(eval $(call PKG_template,VPNC,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${ARCH})) + +BUILD_STYLE:= auto +XAKE_FLAGS+= CC="${TARGET_CC}" \ + OFLAGS="${TARGET_CFLAGS}" \ + OS="Linux" \ + STAGING_DIR=${STAGING_DIR} \ + PREFIX=/usr +INSTALL_STYLE:= auto + +post-install: + echo 'Depends: ${PKG_DEPENDS}' >>${IDIR_VPNC}/CONTROL/control + ${CP} ${WRKINST}/* ${IDIR_VPNC}/ + ${CP} files/vpnc-route ${IDIR_VPNC}/etc/vpnc/ + ${CP} files/vpnc-script ${IDIR_VPNC}/etc/vpnc/ + ${CP} files/vpnc.conf ${IDIR_VPNC}/etc/vpnc/ + +include ${TOPDIR}/mk/pkg-bottom.mk diff --git a/package/vpnc/files/vpnc-route b/package/vpnc/files/vpnc-route new file mode 100755 index 000000000..f39eb1355 --- /dev/null +++ b/package/vpnc/files/vpnc-route @@ -0,0 +1,30 @@ +#!/bin/sh + +#* VPNGATEWAY -- vpn gateway address (always present) +#* TUNDEV -- tunnel device (always present) +#* INTERNAL_IP4_ADDRESS -- address (always present) + +# define which traffic should be routed through the tunnel device +# any traffic that is not bound to a local interface will be +# mangled by the "main" routing table, so we add our rules to +# the main routing table + +# the setup for remote traffic and already bound traffic is done by +# the hotplug scripts. + +if [ "x$TUNDEV" == "x" ]; then + echo "No TUNDEV given. Script must be called from vpnc-script" + exit 1; +fi +case "$1" in + start) + # for each subnet that should be reached from this machine over the vpn tunnel, + # add a line like this: + # ip route add some.sub.net/msk dev $TUNDEV src $INTERNAL_IP4_ADDRESS + ;; + stop) + # remove the routing entries + ;; +esac; +exit 0; + diff --git a/package/vpnc/files/vpnc-script b/package/vpnc/files/vpnc-script new file mode 100755 index 000000000..16f1111fa --- /dev/null +++ b/package/vpnc/files/vpnc-script @@ -0,0 +1,118 @@ +#!/bin/sh +#* reason -- why this script was called, one of: pre-init connect disconnect +#* VPNGATEWAY -- vpn gateway address (always present) +#* TUNDEV -- tunnel device (always present) +#* INTERNAL_IP4_ADDRESS -- address (always present) +#* INTERNAL_IP4_NETMASK -- netmask (often unset) +#* INTERNAL_IP4_DNS -- list of dns serverss +#* INTERNAL_IP4_NBNS -- list of wins servers +#* CISCO_DEF_DOMAIN -- default domain name +#* CISCO_BANNER -- banner from server +#* CISCO_SPLIT_INC -- number of networks in split-network-list +#* CISCO_SPLIT_INC_%d_ADDR -- network address +#* CISCO_SPLIT_INC_%d_MASK -- subnet mask (for example: 255.255.255.0) +#* CISCO_SPLIT_INC_%d_MASKLEN -- subnet masklen (for example: 24) +#* CISCO_SPLIT_INC_%d_PROTOCOL -- protocol (often just 0) +#* CISCO_SPLIT_INC_%d_SPORT -- source port (often just 0) +#* CISCO_SPLIT_INC_%d_DPORT -- destination port (often just 0) + +do_pre_init() { + # bevore doing anything, make shure, the tun module is loaded and the + # tun device nodes exist. + if (exec 6<> /dev/net/tun) > /dev/null 2>&1 ; then + : + else # can't open /dev/net/tun + test -e /proc/sys/kernel/modprobe && `cat /proc/sys/kernel/modprobe` tun 2>/dev/null + # fix for broken devfs in kernel 2.6.x + if [ "`readlink /dev/net/tun`" = misc/net/tun \ + -a ! -e /dev/net/misc/net/tun -a -e /dev/misc/net/tun ] ; then + ln -sf /dev/misc/net/tun /dev/net/tun + fi + # make sure tun device exists + if [ ! -e /dev/net/tun ]; then + mkdir -p /dev/net + mknod -m 0640 /dev/net/tun c 10 200 + fi + fi + echo "pre-init successful." +} + +do_connect() { + # after connection is established, we should update resolv.conf + # and the kernel routing table + + # set up the interface + ifconfig $TUNDEV $INTERNAL_IP4_ADDRESS pointopoint $INTERNAL_IP4_ADDRESS mtu 1412 up + + # set up the route to the remote side and remove any cached routes + ip route add `ip route get "$VPNGATEWAY"` + ip route flush cache + + # set up the default routes via vpnc-route + echo "starting vpnc-route" + /etc/vpnc/vpnc-route start + + if [ "x$INTERNAL_IP4_DNS" != "x" ]; then + # set up the dns servers (add to resolv.conf) + echo "setting up DNS server" + # simply add the given servers to the resolv.conf file + echo "" > /var/run/vpnc/resolv.conf + for dns in $INTERNAL_IP4_DNS; do + echo "nameserver $dns" >> /var/run/vpnc/resolv.conf + done; + cat /etc/resolv.conf >> /var/run/vpnc/resolv.conf + mv /var/run/vpnc/resolv.conf /etc/resolv.conf + # keep the DNS server IPs for shutdown + echo "$INTERNAL_IP4_DNS" > /var/run/vpnc/dnsserver + fi + +} + +do_disconnect() { + # remove the nameserver from resolv.conf + # and restore the old routing table + + # remove route to gateway + ip route del $VPNGATEWAY + + # remove default routes + /etc/vpnc/vpnc-route stop + + # remove the dns servers from resolv.conf + if [ -f /var/run/vpnc/dnsserver ]; then + re_dns=""; + for dns in `cat /var/run/vpnc/dnsserver`; do + echo "removing DNS server $dns"; + if [ "x$re_dns" == "x" ]; then + re_dns=\($dns\); + else + re_dns=$re_dns\|\($dns\); + fi; + done; + echo "re_dns=$re_dns" + cat /etc/resolv.conf | grep -v -E "($re_dns)|(^\ *$)" > /var/run/vpnc/resolv.conf + mv /var/run/vpnc/resolv.conf /etc/resolv.conf + rm /var/run/vpnc/dnsserver + fi; + + # deconfigure network interface + ifconfig $TUNDEV down +} + +case "$reason" in + pre-init) + do_pre_init + ;; + connect) + do_connect + ;; + disconnect) + do_disconnect + ;; + *) + echo "unknown reason '$reason'. Maybe vpnc-script is out of date" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/package/vpnc/files/vpnc.conf b/package/vpnc/files/vpnc.conf new file mode 100644 index 000000000..3f515e08c --- /dev/null +++ b/package/vpnc/files/vpnc.conf @@ -0,0 +1,8 @@ +IPSec gateway vpn-gateway.tld +IPSec ID group_id +IPSec secret group_password +Xauth username your_username +Xauth password your_password +# DNSUpdate no + + diff --git a/package/vpnc/ipkg/vpnc.conffiles b/package/vpnc/ipkg/vpnc.conffiles new file mode 100644 index 000000000..a25d8a07c --- /dev/null +++ b/package/vpnc/ipkg/vpnc.conffiles @@ -0,0 +1,4 @@ +/etc/vpnc/vpnc.conf +/etc/vpnc/vpnc-script +/etc/vpnc/vpnc-route + diff --git a/package/vpnc/ipkg/vpnc.control b/package/vpnc/ipkg/vpnc.control new file mode 100755 index 000000000..d2db146ac --- /dev/null +++ b/package/vpnc/ipkg/vpnc.control @@ -0,0 +1,6 @@ +Package: vpnc +Section: net +Architecture: mipsel +Priority: optional +Description: client for cisco3000 VPN Concentrator. +Depends: libgpg-error, libgcrypt, kmod-tun diff --git a/package/vpnc/patches/patch-Makefile b/package/vpnc/patches/patch-Makefile new file mode 100644 index 000000000..bb3a255a3 --- /dev/null +++ b/package/vpnc/patches/patch-Makefile @@ -0,0 +1,51 @@ +$Id$ +--- vpnc-0.4.0.orig/Makefile 2007-02-19 21:51:12.000000000 +0100 ++++ vpnc-0.4.0/Makefile 2007-04-21 18:39:46.000000000 +0200 +@@ -35,12 +35,11 @@ VERSION := $(shell sh mk-version) + RELEASE_VERSION := $(shell cat VERSION) + + CC=gcc +-CFLAGS += -W -Wall -O3 -Wmissing-declarations -Wwrite-strings -g ++CFLAGS += -W -Wall -O3 -Wmissing-declarations -Wwrite-strings -g -I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include $(OFLAGS) + CPPFLAGS = -DVERSION=\"$(VERSION)\" +-LDFLAGS = -g $(shell libgcrypt-config --libs) +-CFLAGS += $(shell libgcrypt-config --cflags) ++LDFLAGS = -g -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib -lgcrypt -lgpg-error + +-ifeq ($(shell uname -s), SunOS) ++ifeq ($(OS), SunOS) + LDFLAGS += -lnsl -lresolv -lsocket + endif + +@@ -84,21 +83,21 @@ distclean : clean + -rm -f vpnc-debug.c vpnc-debug.h vpnc.ps .depend + + install : all +- install -d $(DESTDIR)$(ETCDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(MANDIR)/man8 +- install vpnc-script $(DESTDIR)$(ETCDIR) +- install -m 600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf ++ install -d $(DESTDIR)$(ETCDIR) $(DESTDIR)$(SBINDIR) ++# install vpnc-script $(DESTDIR)$(ETCDIR) ++# install -m 600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf + install vpnc vpnc-disconnect $(DESTDIR)$(SBINDIR) +- install pcf2vpnc $(DESTDIR)$(BINDIR) +- install vpnc.8 $(DESTDIR)$(MANDIR)/man8 ++# install pcf2vpnc $(DESTDIR)$(BINDIR) ++# install vpnc.8 $(DESTDIR)$(MANDIR)/man8 + + install-strip : all +- install -d $(DESTDIR)$(ETCDIR) $(DESTDIR)$(SBINDIR) $(DESTDIR)$(MANDIR)/man8 +- install vpnc-script $(DESTDIR)$(ETCDIR) +- install -m 600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf +- install pcf2vpnc $(DESTDIR)$(BINDIR) ++ install -d $(DESTDIR)$(ETCDIR) $(DESTDIR)$(SBINDIR) ++# install vpnc-script $(DESTDIR)$(ETCDIR) ++# install -m 600 vpnc.conf $(DESTDIR)$(ETCDIR)/default.conf ++# install pcf2vpnc $(DESTDIR)$(BINDIR) + install -s vpnc $(DESTDIR)$(SBINDIR) + install vpnc-disconnect $(DESTDIR)$(SBINDIR) +- install vpnc.8 $(DESTDIR)$(MANDIR)/man8 ++# install vpnc.8 $(DESTDIR)$(MANDIR)/man8 + + uninstall : + rm -f $(DESTDIR)$(SBINDIR)/vpnc \ diff --git a/package/vpnc/patches/patch-config_c b/package/vpnc/patches/patch-config_c new file mode 100644 index 000000000..ce5cb30e9 --- /dev/null +++ b/package/vpnc/patches/patch-config_c @@ -0,0 +1,12 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- vpnc-0.4.0.orig/config.c 2007-02-16 18:22:06.000000000 +0100 ++++ vpnc-0.4.0/config.c 2008-10-16 12:55:57.000000000 +0200 +@@ -485,7 +485,7 @@ static char *get_config_filename(const c + { + char *realname; + +- asprintf(&realname, "%s%s%s", index(name, '/') ? "" : "/etc/vpnc/", name, add_dot_conf ? ".conf" : ""); ++ asprintf(&realname, "%s%s%s", strchr(name, '/') ? "" : "/etc/vpnc/", name, add_dot_conf ? ".conf" : ""); + return realname; + } + -- cgit v1.2.3