summaryrefslogtreecommitdiff
blob: 3119a99231eefbf191e39ae9669512af8d620559 (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
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/openvpn/openvpn-2.0.2-r1.ebuild,v 1.1 2005/10/13 14:09:10 uberlord Exp $

inherit eutils gnuconfig multilib

DESCRIPTION="OpenVPN is a robust and highly flexible tunneling application compatible with many OSes."
SRC_URI="http://openvpn.net/release/openvpn-${PV}.tar.gz"
HOMEPAGE="http://openvpn.net/"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~ppc ~ppc-macos ~sparc ~x86"
IUSE="examples iproute2 minimal selinux ssl static threads"

RDEPEND=">=dev-libs/lzo-1.07
	iproute2? ( sys-apps/iproute2 )
	selinux? ( sec-policy/selinux-openvpn )
	ssl? ( >=dev-libs/openssl-0.9.6 )"
DEPEND="${RDEPEND}
	virtual/os-headers"

src_unpack() {
	unpack "${A}"
	gnuconfig_update
}

src_compile() {
	econf \
		$(use_enable iproute2) \
		$(use_enable ssl) \
		$(use_enable ssl crypto) \
		$(use_enable threads pthread) \
		|| die "configure failed"
	use static && sed -e -i '/^LIBS/s/LIBS = /LIBS = -static /' Makefile
	emake || die "make failed"

	if ! use minimal ; then
		cd plugin
		for i in $( ls 2>/dev/null ); do
			[[ ${i} == "README" || ${i} == "examples" ]] && continue
			einfo "Building ${i} plugin"
			cd "${i}"
			emake || die "make failed"
			cd ..
		done
		cd ..
	fi
}

src_install() {
	make DESTDIR="${D}" install || die "make install failed"

	# install documentation
	dodoc AUTHORS ChangeLog INSTALL PORTS README

	# Empty dir
	dodir /etc/openvpn
	keepdir /etc/openvpn

	# Install the init script
	newinitd "${FILESDIR}/openvpn.init" openvpn

	# Install easy-rsa stuffs
	dodir "/usr/share/${PN}/easy-rsa"
	exeinto "/usr/share/${PN}/easy-rsa"
	doexe easy-rsa/2.0/*
	exeopts -m0644

	# install examples, controlled by the respective useflag
	if use examples ; then
		docinto examples
		dodoc -r sample-{config-files,keys,scripts} contrib
	fi

	# Install plugins
	if ! use minimal ; then
		dodir "/usr/share/${PN}/plugins"
		exeinto "/usr/share/${PN}/plugins"
		doexe plugin/*/*.so
	fi
}

pkg_postinst() {
	ewarn "WARNING: The openvpn init script has changed"
	ewarn ""
	einfo "The openvpn init script expects to find the configuration file"
	einfo "openvpn.conf in /etc/openvpn along with any extra files it may need."
	einfo ""
	einfo "To create more VPNs, simply create a new .conf file for it and"
	einfo "then create a symlink to the openvpn init script from a link called"
	einfo "openvpn.newconfname - like so"
	einfo "   cd /etc/openvpn"
	einfo "   ${EDITOR##*/} foo.conf"
	einfo "   cd /etc/init.d"
	einfo "   ln -s openvpn openvpn.foo"
	einfo ""
	einfo "You can then treat openvpn.foo as any other service, so you can"
	einfo "stop one vpn and start another if you need to."
	if ! use minimal ; then
		einfo ""
		einfo "plugins have been installed into /usr/$(get_libdir)/${PN}"
	fi
	einfo ""
	einfo "It is recommended that you create your tun/tap interfaces using"
	einfo "the net.tun0/net.tap0 scripts provided by baselayout instead of"
	einfo "using the 'server' directive in openvpn configuration files."
	einfo "This will insure that the interface really is up after openvpn"
	einfo "starts."
	einfo "Note that you cannot use net.tun0/net.tap0 and the server option,"
	einfo "otherwise openvpn will not start."
	ebeep
}