blob: 7acea78d7a12c22c232a32bb6a8c8aac22fb199f (
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
|
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/openvpn/openvpn-2.0.9.ebuild,v 1.7 2009/08/29 17:52:12 nixnut Exp $
inherit eutils 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 hppa ~mips ppc ppc64 ~sh ~sparc x86 ~sparc-fbsd ~x86-fbsd"
IUSE="examples iproute2 minimal pam passwordsave selinux ssl static threads"
RESTRICT="!ssl? ( test )"
RDEPEND=">=dev-libs/lzo-1.07
kernel_linux? (
iproute2? ( sys-apps/iproute2 ) !iproute2? ( sys-apps/net-tools )
)
!minimal? ( pam? ( virtual/pam ) )
selinux? ( sec-policy/selinux-openvpn )
ssl? ( >=dev-libs/openssl-0.9.6 )"
DEPEND="${RDEPEND}
virtual/os-headers"
pkg_setup() {
if use iproute2 ; then
if built_with_use sys-apps/iproute2 minimal ; then
eerror "iproute2 support requires that sys-apps/iproute2 was not"
eerror "built with the minimal USE flag"
die "iproute2 support not available"
fi
fi
}
src_unpack() {
unpack ${A}
cd "${S}"
epatch "${FILESDIR}/${P}-pam.patch"
epatch "${FILESDIR}/${P}-persistent.patch"
}
src_compile() {
local myconf=""
# We cannot use use_enable with iproute2 as the Makefile stupidly
# enables it with --disable-iproute2
use iproute2 && myconf="${myconf} --enable-iproute2"
use minimal && myconf="${myconf} --disable-plugins"
econf ${myconf} \
$(use_enable passwordsave password-save) \
$(use_enable ssl) \
$(use_enable ssl crypto) \
$(use_enable threads pthread) \
|| die "configure failed"
use static && sed -i -e '/^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
[[ ${i} == "auth-pam" ]] && ! use pam && 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 PORTS README
# Empty dir
dodir /etc/openvpn
keepdir /etc/openvpn
# Install the init script
newinitd "${FILESDIR}/openvpn.init" openvpn
# install examples, controlled by the respective useflag
if use examples ; then
# dodoc does not supportly support directory traversal, #15193
insinto /usr/share/doc/${PF}/examples
doins -r sample-{config-files,keys,scripts} contrib
prepalldocs
fi
# Install plugins and easy-rsa
if ! use minimal ; then
cd easy-rsa/2.0
exeinto "/usr/share/${PN}/easy-rsa"
doexe build-* clean-all inherit-inter list-crl pkitool revoke-full \
sign-req whichopensslcnf
insinto "/usr/share/${PN}/easy-rsa"
doins README openssl-0.9.6.cnf openssl.cnf vars
cd ../..
exeinto "/usr/$(get_libdir)/${PN}"
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
}
|