summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gilbert <floppym@gentoo.org>2015-05-12 01:11:06 +0000
committerMike Gilbert <floppym@gentoo.org>2015-05-12 01:11:06 +0000
commit6b088738ab413059e1c8b4bb834ce1aecc95170b (patch)
tree8e33e85531e92de1eeed672782612aca1332979e /net-misc/openconnect
parentversion bump (diff)
downloadgentoo-2-6b088738ab413059e1c8b4bb834ce1aecc95170b.tar.gz
gentoo-2-6b088738ab413059e1c8b4bb834ce1aecc95170b.tar.bz2
gentoo-2-6b088738ab413059e1c8b4bb834ce1aecc95170b.zip
Revamp init script. Should resolve bug 547970.
(Portage version: 2.2.18/cvs/Linux x86_64, signed Manifest commit with key 0BBEEA1FEA4843A4)
Diffstat (limited to 'net-misc/openconnect')
-rw-r--r--net-misc/openconnect/ChangeLog8
-rw-r--r--net-misc/openconnect/files/openconnect.init.in-r1137
-rw-r--r--net-misc/openconnect/files/openconnect.init.in-r489
-rw-r--r--net-misc/openconnect/openconnect-7.06-r1.ebuild159
4 files changed, 255 insertions, 138 deletions
diff --git a/net-misc/openconnect/ChangeLog b/net-misc/openconnect/ChangeLog
index c114d285d3d6..9d708c4a94b6 100644
--- a/net-misc/openconnect/ChangeLog
+++ b/net-misc/openconnect/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for net-misc/openconnect
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/openconnect/ChangeLog,v 1.44 2015/04/27 19:01:33 floppym Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/openconnect/ChangeLog,v 1.45 2015/05/12 01:11:06 floppym Exp $
+
+*openconnect-7.06-r1 (12 May 2015)
+
+ 12 May 2015; Mike Gilbert <floppym@gentoo.org> +files/openconnect.init.in-r4,
+ +openconnect-7.06-r1.ebuild, -files/openconnect.init.in-r1:
+ Revamp init script. Should resolve bug 547970.
27 Apr 2015; Mike Gilbert <floppym@gentoo.org> -openconnect-5.01.ebuild,
-openconnect-5.02.ebuild, -openconnect-5.03.ebuild,
diff --git a/net-misc/openconnect/files/openconnect.init.in-r1 b/net-misc/openconnect/files/openconnect.init.in-r1
deleted file mode 100644
index 72e3ab7123f3..000000000000
--- a/net-misc/openconnect/files/openconnect.init.in-r1
+++ /dev/null
@@ -1,137 +0,0 @@
-#!/sbin/runscript
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/openconnect/files/openconnect.init.in-r1,v 1.1 2013/06/23 12:43:56 hasufell Exp $
-
-VPN="${RC_SVCNAME#*.}"
-VPNLOG="/var/log/openconnect/${VPN}"
-VPNLOGFILE="${VPNLOG}/openconnect.log"
-VPNERRFILE="${VPNLOG}/openconnect.err"
-VPNPID="/run/openconnect/${VPN}.pid"
-VPNDIR="/etc/openconnect/${VPN}"
-PREUPSCRIPT="${VPNDIR}/preup.sh"
-PREDOWNSCRIPT="${VPNDIR}/predown.sh"
-POSTUPSCRIPT="${VPNDIR}/postup.sh"
-POSTDOWNSCRIPT="${VPNDIR}/postdown.sh"
-SERVER="server_${VPN}"
-PASSWORD="password_${VPN}"
-VPNOPTS="vpnopts_${VPN}"
-
-depend() {
- before netmount
-}
-
-checkconfig() {
- if [ $VPN = "openconnect" ]; then
- eerror "You cannot call openconnect directly. You must create a symbolic link to it with the vpn name:"
- echo
- eerror "ln -s /etc/init.d/openconnect /etc/init.d/openconnect.vpn0"
- echo
- eerror "And then call it instead:"
- echo
- eerror "/etc/init.d/openconnect.vpn0 start"
- return 1
- fi
-}
-
-checktuntap() {
- 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
- fi
-}
-
-start() {
- ebegin "Starting OpenConnect: ${VPN}"
-
- local tmp_SERVER tmp_VPNOPTS tmp_PASSWORD
- eval tmp_SERVER="\${${SERVER}}"
- eval tmp_VPNOPTS="\${${VPNOPTS}}"
- eval tmp_PASSWORD="\${${PASSWORD}}"
-
- checkconfig || return 1
-
- checktuntap || return 1
-
- if [ "${tmp_SERVER}" = "vpn.server.tld" ]; then
- eend 1 "${VPN} not configured"
- return 1
- fi
-
- if [ ! -e "${VPNLOG}" ]; then
- mkdir -p "${VPNLOG}"
- fi
-
- local piddir="${VPNPID%/*}"
- if [ ! -d "$piddir" ] ; then
- mkdir -p "$piddir"
- if [ $? -ne 0 ]; then
- eerror "Directory $piddir for pidfile does not exist and cannot be created"
- return 1
- fi
- fi
-
- if [ -x "${PREUPSCRIPT}" ] ; then
- "${PREUPSCRIPT}"
- fi
-
- start-stop-daemon --start \
- --make-pidfile \
- --pidfile "${VPNPID}" \
- --stderr "${VPNERRFILE}" \
- --stdout "${VPNLOGFILE}" \
- --background \
- --exec /usr/sbin/openconnect -- \
- --pid-file="${VPNPID}" \
- ${tmp_VPNOPTS} \
- ${tmp_SERVER} <<-E
- ${tmp_PASSWORD}
- E
-
- local retval=$?
-
- if [ ! ${retval} -eq 0 ]; then
- eend ${retval}
- return ${retval}
- fi
-
- if [ -x "${POSTUPSCRIPT}" ] ; then
- "${POSTUPSCRIPT}"
- fi
-
- eend $?
-}
-
-stop() {
- ebegin "Stopping OpenConnect: ${VPN}"
-
- checkconfig || return 1
-
- if [ -x "${PREDOWNSCRIPT}" ] ; then
- "${PREDOWNSCRIPT}"
- fi
-
- start-stop-daemon --pidfile "${VPNPID}" --stop /usr/sbin/openconnect
- local retval=$?
-
- if [ ! ${retval} -eq 0 ]; then
- eend ${retval}
- return ${retval}
- fi
-
-
- if [ -x "${POSTDOWNSCRIPT}" ] ; then
- "${POSTDOWNSCRIPT}"
- fi
- eend $?
-}
diff --git a/net-misc/openconnect/files/openconnect.init.in-r4 b/net-misc/openconnect/files/openconnect.init.in-r4
new file mode 100644
index 000000000000..9e322d513f92
--- /dev/null
+++ b/net-misc/openconnect/files/openconnect.init.in-r4
@@ -0,0 +1,89 @@
+#!/sbin/openrc-run
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/openconnect/files/openconnect.init.in-r4,v 1.1 2015/05/12 01:11:06 floppym Exp $
+
+VPN="${RC_SVCNAME#*.}"
+VPNDIR="/etc/openconnect/${VPN}"
+VPNLOG="/var/log/openconnect/${VPN}"
+VPNLOGFILE="${VPNLOG}/openconnect.log"
+VPNERRFILE="${VPNLOG}/openconnect.err"
+
+command="/usr/sbin/openconnect"
+name="OpenConnect: ${VPN}"
+pidfile="/run/openconnect/${VPN}.pid"
+retry="SIGINT/90"
+
+depend() {
+ before netmount
+}
+
+checkconfig() {
+ if [ $VPN = "openconnect" ]; then
+ eerror "You cannot call openconnect directly. You must create a symbolic link to it with the vpn name:"
+ eerror
+ eerror "ln -s /etc/init.d/openconnect /etc/init.d/openconnect.vpn0"
+ eerror
+ eerror "And then call it instead:"
+ eerror
+ eerror "/etc/init.d/openconnect.vpn0 start"
+ return 1
+ fi
+}
+
+checktuntap() {
+ if [ "$RC_UNAME" = "Linux" -a ! -e /dev/net/tun ] ; then
+ if ! modprobe tun ; then
+ eerror "TUN/TAP support is not available in this kernel"
+ return 1
+ fi
+ fi
+}
+
+run_hook() {
+ if [ -x "$1" ]; then
+ "$@"
+ fi
+}
+
+start_pre() {
+ checkconfig || return
+ checktuntap || return
+ checkpath -d "${VPNLOG}" || return
+ checkpath -d /run/openconnect || return
+ run_hook "${VPNDIR}/preup.sh"
+}
+
+start() {
+ local server vpnopts password
+ eval server=\$server_${VPN}
+ eval vpnopts=\$vpnopts_${VPN}
+ eval password=\$password_${VPN}
+
+ ebegin "Starting ${name}"
+ start-stop-daemon --start --exec "${command}" -- \
+ --background \
+ --interface="${VPN}" \
+ --pid-file="${pidfile}" \
+ ${vpnopts} \
+ "${server}" \
+ >> "${VPNLOGFILE}" \
+ 2>> "${VPNERRFILE}" \
+ <<EOF
+${password}
+EOF
+ eend $?
+}
+
+start_post() {
+ run_hook "${VPNDIR}/postup.sh"
+}
+
+stop_pre() {
+ checkconfig || return
+ run_hook "${VPNDIR}/predown.sh"
+}
+
+stop_post() {
+ run_hook "${VPNDIR}/postdown.sh"
+}
diff --git a/net-misc/openconnect/openconnect-7.06-r1.ebuild b/net-misc/openconnect/openconnect-7.06-r1.ebuild
new file mode 100644
index 000000000000..534842f5f6aa
--- /dev/null
+++ b/net-misc/openconnect/openconnect-7.06-r1.ebuild
@@ -0,0 +1,159 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/openconnect/openconnect-7.06-r1.ebuild,v 1.1 2015/05/12 01:11:06 floppym Exp $
+
+EAPI="5"
+
+PYTHON_COMPAT=( python2_7 )
+PYTHON_REQ_USE="xml"
+
+inherit eutils java-pkg-opt-2 linux-info python-any-r1 readme.gentoo
+
+DESCRIPTION="Free client for Cisco AnyConnect SSL VPN software"
+HOMEPAGE="http://www.infradead.org/openconnect.html"
+VPNC_VER=20140806
+SRC_URI="ftp://ftp.infradead.org/pub/${PN}/${P}.tar.gz
+ ftp://ftp.infradead.org/pub/vpnc-scripts/vpnc-scripts-${VPNC_VER}.tar.gz"
+
+LICENSE="LGPL-2.1 GPL-2"
+SLOT="0/5"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+IUSE="doc +gnutls gssapi java libproxy nls static-libs"
+ILINGUAS="ar cs de el en_GB en_US es eu fi fr gl id lt nl pa pl pt pt_BR sk sl tg ug uk zh_CN zh_TW"
+for lang in $ILINGUAS; do
+ IUSE="${IUSE} linguas_${lang}"
+done
+
+DEPEND="dev-libs/libxml2
+ sys-libs/zlib
+ !gnutls? (
+ >=dev-libs/openssl-1.0.1h:0[static-libs?]
+ )
+ gnutls? (
+ >=net-libs/gnutls-3[static-libs?] dev-libs/nettle
+ app-misc/ca-certificates
+ )
+ gssapi? ( virtual/krb5 )
+ libproxy? ( net-libs/libproxy )
+ nls? ( virtual/libintl )"
+RDEPEND="${DEPEND}
+ sys-apps/iproute2
+ !<sys-apps/openrc-0.13"
+DEPEND="${DEPEND}
+ virtual/pkgconfig
+ doc? ( ${PYTHON_DEPS} sys-apps/groff )
+ java? ( >=virtual/jdk-1.6 )
+ nls? ( sys-devel/gettext )"
+
+tun_tap_check() {
+ ebegin "Checking for TUN/TAP support"
+ if { ! linux_chkconfig_present TUN; }; then
+ eerror "Please enable TUN/TAP support in your kernel config, found at:"
+ eerror
+ eerror " Device Drivers --->"
+ eerror " [*] Network device support --->"
+ eerror " <*> Universal TUN/TAP device driver support"
+ eerror
+ eerror "and recompile your kernel ..."
+ die "no CONFIG_TUN support detected!"
+ fi
+ eend $?
+}
+
+pkg_setup() {
+ java-pkg-opt-2_pkg_setup
+
+ if use doc; then
+ python-any-r1_pkg_setup
+ fi
+
+ if use kernel_linux; then
+ get_version
+ if linux_config_exists; then
+ tun_tap_check
+ else
+ ewarn "Was unable to determine your kernel .config"
+ ewarn "Please note that OpenConnect requires CONFIG_TUN to be set in your"
+ ewarn "kernel .config, Without it, it will not work correctly."
+ # We don't die here, so it's possible to compile this package without
+ # kernel sources available. Required for cross-compilation.
+ fi
+ fi
+}
+
+src_configure() {
+ strip-linguas $ILINGUAS
+ echo ${LINGUAS} > po/LINGUAS
+ if ! use doc; then
+ # If the python cannot be found, the docs will not build
+ sed -e 's#"${ac_cv_path_PYTHON}"#""#' -i configure || die
+ fi
+
+ # stoken and liboath not in portage
+ econf \
+ --with-vpnc-script="${EPREFIX}/etc/openconnect/openconnect.sh" \
+ $(use_enable static-libs static) \
+ $(use_enable nls ) \
+ $(use_with !gnutls openssl) \
+ $(use_with gnutls ) \
+ $(use_with libproxy) \
+ --without-stoken \
+ $(use_with gssapi) \
+ $(use_with java)
+}
+
+DOC_CONTENTS="The init script for openconnect supports multiple vpn tunnels.
+
+You need to create a symbolic link to /etc/init.d/openconnect in /etc/init.d
+instead of calling it directly:
+
+ln -s /etc/init.d/openconnect /etc/init.d/openconnect.vpn0
+
+You can then start the vpn tunnel like this:
+
+/etc/init.d/openconnect.vpn0 start
+
+If you would like to run preup, postup, predown, and/or postdown scripts,
+You need to create a directory in /etc/openconnect with the name of the vpn:
+
+mkdir /etc/openconnect/vpn0
+
+Then add executable shell files:
+
+mkdir /etc/openconnect/vpn0
+cd /etc/openconnect/vpn0
+echo '#!/bin/sh' > preup.sh
+cp preup.sh predown.sh
+cp preup.sh postup.sh
+cp preup.sh postdown.sh
+chmod 755 /etc/openconnect/vpn0/*
+"
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ dodoc AUTHORS TODO
+ newinitd "${FILESDIR}"/openconnect.init.in-r4 openconnect
+ dodir /etc/openconnect
+ insinto /etc/openconnect
+ newconfd "${FILESDIR}"/openconnect.conf.in openconnect
+ exeinto /etc/openconnect
+ newexe "${WORKDIR}"/vpnc-scripts-${VPNC_VER}/vpnc-script openconnect.sh
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}"/openconnect.logrotate openconnect
+ keepdir /var/log/openconnect
+
+ # Remove useless .la files
+ prune_libtool_files --all
+
+ readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+ readme.gentoo_print_elog
+ if [[ -z ${REPLACING_VERSIONS} ]]; then
+ elog
+ elog "You may want to consider installing the following optional packages."
+ optfeature "resolvconf support" net-dns/openresolv
+ fi
+}