diff options
author | 2015-05-12 01:11:06 +0000 | |
---|---|---|
committer | 2015-05-12 01:11:06 +0000 | |
commit | 6b088738ab413059e1c8b4bb834ce1aecc95170b (patch) | |
tree | 8e33e85531e92de1eeed672782612aca1332979e /net-misc/openconnect | |
parent | version bump (diff) | |
download | gentoo-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/ChangeLog | 8 | ||||
-rw-r--r-- | net-misc/openconnect/files/openconnect.init.in-r1 | 137 | ||||
-rw-r--r-- | net-misc/openconnect/files/openconnect.init.in-r4 | 89 | ||||
-rw-r--r-- | net-misc/openconnect/openconnect-7.06-r1.ebuild | 159 |
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 +} |