summaryrefslogtreecommitdiff
blob: 2b112489ad0c7d6efa0e39e19c9a9ef55599db42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

EAPI="5"

PYTHON_COMPAT=( python2_7 )
PYTHON_REQ_USE="xml"

inherit eutils linux-info python-any-r1

DESCRIPTION="Free client for Cisco AnyConnect SSL VPN software"
HOMEPAGE="http://www.infradead.org/openconnect.html"
# New versions of openconnect-script can be found here:
# http://git.infradead.org/users/dwmw2/vpnc-scripts.git/history/HEAD:/vpnc-script
SRC_URI="ftp://ftp.infradead.org/pub/${PN}/${P}.tar.gz
	https://dev.gentoo.org/~hasufell/distfiles/openconnect-script-20140311.tar.xz"

LICENSE="LGPL-2.1 GPL-2"
SLOT="0/3"
KEYWORDS="~amd64 ~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
	java? ( virtual/jre )"
DEPEND="${DEPEND}
	virtual/pkgconfig
	doc? ( ${PYTHON_DEPS} sys-apps/groff )
	java? ( virtual/jdk )
	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() {
	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
	# Override vpn-script test since the build system violates the sandbox and
	# needs the path set to the real default path after it's installed
	sed -e "s#-x \"\$with_vpnc_script\"#-n \"${WORKDIR}/openconnect-script\"#" \
		-i configure || die
	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=/etc/openconnect/openconnect.sh \
		$(use_enable static-libs static) \
		$(use_enable nls ) \
		$(use_with !gnutls openssl) \
		$(use_with gnutls ) \
		$(use_with libproxy) \
		--without-stoken \
		--without-liboath \
		$(use_with gssapi) \
		$(use_with java)
}

src_install() {
	emake DESTDIR="${D}" install

	dodoc AUTHORS TODO
	newinitd "${FILESDIR}"/openconnect.init.in-r2 openconnect
	dodir /etc/openconnect
	insinto /etc/openconnect
	newconfd "${FILESDIR}"/openconnect.conf.in openconnect
	exeinto /etc/openconnect
	newexe "${WORKDIR}"/openconnect-script openconnect.sh
	insinto /etc/logrotate.d
	newins "${FILESDIR}"/openconnect.logrotate openconnect
	keepdir /var/log/openconnect

	# Remove useless .la files
	find "${D}" -name '*.la' -delete || die "la file removal failed"
}

pkg_postinst() {
	elog "The init script for openconnect has changed and now supports multiple vpn tunnels."
	elog
	elog "You need to create a symbolic link to /etc/init.d/openconnect in /etc/init.d"
	elog "instead of calling it directly:"
	elog
	elog "ln -s /etc/init.d/openconnect /etc/init.d/openconnect.vpn0"
	elog
	elog "You can then start the vpn tunnel like this:"
	elog
	elog "/etc/init.d/openconnect.vpn0 start"
	elog
	elog "If you would like to run preup, postup, predown, and/or postdown scripts,"
	elog "You need to create a directory in /etc/openconnect with the name of the vpn:"
	elog
	elog "mkdir /etc/openconnect/vpn0"
	elog
	elog "Then add executable shell files:"
	elog
	elog "mkdir /etc/openconnect/vpn0"
	elog "cd /etc/openconnect/vpn0"
	elog "echo '#!/bin/sh' > preup.sh"
	elog "cp preup.sh predown.sh"
	elog "cp preup.sh postup.sh"
	elog "cp preup.sh postdown.sh"
	elog "chmod 755 /etc/openconnect/vpn0/*"
}