net-misc/stunnel: reload configuration using HUP, bug #588054
authorAnthony G. Basile <blueness@gentoo.org>
Wed, 6 Jul 2016 11:20:44 +0000 (07:20 -0400)
committerAnthony G. Basile <blueness@gentoo.org>
Wed, 6 Jul 2016 11:20:44 +0000 (07:20 -0400)
Package-Manager: portage-2.2.28

net-misc/stunnel/files/stunnel-r1 [new file with mode: 0644]
net-misc/stunnel/stunnel-5.34-r1.ebuild [new file with mode: 0644]

diff --git a/net-misc/stunnel/files/stunnel-r1 b/net-misc/stunnel/files/stunnel-r1
new file mode 100644 (file)
index 0000000..e7eee32
--- /dev/null
@@ -0,0 +1,51 @@
+#!/sbin/openrc-run
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+extra_started_commands="reload"
+SERVICENAME=${SVCNAME#*.}
+SERVICENAME=${SERVICENAME:-stunnel}
+STUNNEL_CONFIGFILE=${STUNNEL_CONFIGFILE:-/etc/stunnel/${SERVICENAME}.conf}
+
+depend() {
+    need net
+    before logger
+}
+
+get_config() {
+       if [ ! -e ${STUNNEL_CONFIGFILE} ] ; then
+               eerror "You need to create ${STUNNEL_CONFIGFILE} first."
+               return 1
+       fi
+       CHROOT=$(grep "^chroot" ${STUNNEL_CONFIGFILE} | sed "s;.*= *;;")
+       [ -n "${CHROOT}" ] && CHROOT="--chroot ${CHROOT}"
+       PIDFILE=$(grep "^pid" ${STUNNEL_CONFIGFILE} | sed "s;.*= *;;")
+       PIDFILE=${PIDFILE:-/run/stunnel/${SERVICENAME}.pid}
+}
+
+start() {
+       get_config || return 1
+       checkpath -d -m 0775 -o root:stunnel /run/stunnel
+       if [ "$(dirname ${PIDFILE})" != "/run" ]; then
+               checkpath -d -m 0755 -o stunnel:stunnel -q $(dirname ${PIDFILE})
+       fi
+       ebegin "Starting ${SVCNAME}"
+       start-stop-daemon --start --pidfile "${PIDFILE}" ${CHROOT} \
+                         --exec /usr/bin/stunnel -- ${STUNNEL_CONFIGFILE} ${STUNNEL_OPTIONS}
+       eend $? "Failed to start ${SVCNAME}"
+}
+
+stop() {
+       get_config || return 1
+       ebegin "Stopping ${SVCNAME}"
+       start-stop-daemon --stop --quiet --pidfile ${PIDFILE}
+       eend $? "Failed to stop ${SVCNAME}"
+}
+
+reload() {
+       get_config || return 1
+       ebegin "Reloading ${SVCNAME}"
+       start-stop-daemon --signal HUP --pidfile ${PIDFILE} --name stunnel
+       eend $?
+}
diff --git a/net-misc/stunnel/stunnel-5.34-r1.ebuild b/net-misc/stunnel/stunnel-5.34-r1.ebuild
new file mode 100644 (file)
index 0000000..53ee300
--- /dev/null
@@ -0,0 +1,93 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit ssl-cert eutils multilib systemd user
+
+DESCRIPTION="TLS/SSL - Port Wrapper"
+HOMEPAGE="http://www.stunnel.org/index.html"
+SRC_URI="ftp://ftp.stunnel.org/stunnel/archive/${PV%%.*}.x/${P}.tar.gz
+       http://www.usenix.org.uk/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz
+       http://ftp.nluug.nl/pub/networking/stunnel/archive/${PV%%.*}.x/${P}.tar.gz
+       http://www.namesdir.com/mirrors/stunnel/archive/${PV%%.*}.x/${P}.tar.gz
+       http://stunnel.cybermirror.org/archive/${PV%%.*}.x/${P}.tar.gz
+       http://mirrors.zerg.biz/stunnel/archive/${PV%%.*}.x/${P}.tar.gz
+       ftp://mirrors.go-parts.com/stunnel/archive/${PV%%.*}.x/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x86-macos"
+IUSE="ipv6 libressl selinux stunnel3 tcpd"
+
+DEPEND="tcpd? ( sys-apps/tcp-wrappers )
+       !libressl? ( dev-libs/openssl:0 )
+       libressl? ( dev-libs/libressl )"
+RDEPEND="${DEPEND}
+       stunnel3? ( dev-lang/perl )
+       selinux? ( sec-policy/selinux-stunnel )"
+
+RESTRICT="test"
+
+pkg_setup() {
+       enewgroup stunnel
+       enewuser stunnel -1 -1 -1 stunnel
+}
+
+src_prepare() {
+       # Hack away generation of certificate
+       sed -i -e "s/^install-data-local:/do-not-run-this:/" \
+               tools/Makefile.in || die "sed failed"
+
+       # libressl compat
+       epatch "${FILESDIR}"/stunnel-compat-libressl.patch
+
+       echo "CONFIG_PROTECT=\"/etc/stunnel/stunnel.conf\"" > "${T}"/20stunnel
+}
+
+src_configure() {
+       econf \
+               --libdir="${EPREFIX}/usr/$(get_libdir)" \
+               $(use_enable ipv6) \
+               $(use_enable tcpd libwrap) \
+               --with-ssl="${EPREFIX}"/usr \
+               --disable-fips
+}
+
+src_install() {
+       emake DESTDIR="${D}" install
+       rm -rf "${ED}"/usr/share/doc/${PN}
+       rm -f "${ED}"/etc/stunnel/stunnel.conf-sample \
+               "${ED}"/usr/share/man/man8/stunnel.{fr,pl}.8
+       use stunnel3 || rm -f "${ED}"/usr/bin/stunnel3
+
+       # The binary was moved to /usr/bin with 4.21,
+       # symlink for backwards compatibility
+       dosym ../bin/stunnel /usr/sbin/stunnel
+
+       dodoc AUTHORS BUGS CREDITS PORTS README TODO ChangeLog
+       dohtml doc/stunnel.html doc/en/VNC_StunnelHOWTO.html tools/ca.html \
+               tools/importCA.html
+
+       insinto /etc/stunnel
+       doins "${FILESDIR}"/stunnel.conf
+       newinitd "${FILESDIR}"/stunnel-r1 stunnel
+
+       doenvd "${T}"/20stunnel
+
+       systemd_dounit "${S}/tools/stunnel.service"
+       systemd_newtmpfilesd "${FILESDIR}"/stunnel.tmpfiles.conf stunnel.conf
+}
+
+pkg_postinst() {
+       if [ ! -f "${EROOT}"/etc/stunnel/stunnel.key ]; then
+               install_cert /etc/stunnel/stunnel
+               chown stunnel:stunnel "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem}
+               chmod 0640 "${EROOT}"/etc/stunnel/stunnel.{crt,csr,key,pem}
+       fi
+
+       einfo "If you want to run multiple instances of stunnel, create a new config"
+       einfo "file ending with .conf in /etc/stunnel/. **Make sure** you change "
+       einfo "\'pid= \' with a unique filename."
+}