commit:     e7ea3fbeadbd0524ea7d7498a8eb563b0b780495
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Sat Oct  2 05:54:38 2021 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Sat Oct  2 06:00:09 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e7ea3fbe

net-vpn/openconnect: revise init script

Remove warnings about removal of variables.
Restore sample conf.d file.
Allow for missing config file.
Use eval to allow quoted whitespace in vpnopts.

Bug: https://bugs.gentoo.org/733614
Closes: https://bugs.gentoo.org/763579
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 net-vpn/openconnect/files/openconnect.conf.in      |   2 +-
 net-vpn/openconnect/files/openconnect.initd        | 109 +++++++++++++++++++++
 ...t-8.10-r2.ebuild => openconnect-8.10-r3.ebuild} |   5 +-
 net-vpn/openconnect/openconnect-9999.ebuild        |   5 +-
 4 files changed, 118 insertions(+), 3 deletions(-)

diff --git a/net-vpn/openconnect/files/openconnect.conf.in 
b/net-vpn/openconnect/files/openconnect.conf.in
index 53b14e61378..7e44f569c0c 100644
--- a/net-vpn/openconnect/files/openconnect.conf.in
+++ b/net-vpn/openconnect/files/openconnect.conf.in
@@ -23,4 +23,4 @@
 server_vpn0="vpn.server.tld"
 password_vpn0="YOUR_PASSWORD"
 # Any OPENCONNECT options my go here (see openconnect --help)
-vpnopts_vpn0="-l --passwd-on-stdin --user=YOUR_USERNAME 
--script=/etc/openconnect/openconnect.sh"
+vpnopts_vpn0="-l --passwd-on-stdin --user=YOUR_USERNAME"

diff --git a/net-vpn/openconnect/files/openconnect.initd 
b/net-vpn/openconnect/files/openconnect.initd
new file mode 100644
index 00000000000..7b33920f498
--- /dev/null
+++ b/net-vpn/openconnect/files/openconnect.initd
@@ -0,0 +1,109 @@
+#!/sbin/openrc-run
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+VPN="${RC_SVCNAME#*.}"
+VPNCONF=/etc/openconnect/${VPN}.conf
+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"
+stopsig="SIGINT"
+
+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
+       return 0
+}
+
+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"
+}
+
+ssd_helper() {
+       if [ -n "${password}" ]; then
+               start-stop-daemon "$@" <<EOF
+${password}
+EOF
+       else
+               start-stop-daemon "$@"
+       fi
+}
+
+start() {
+       local server vpnopts password
+       eval server=\$server_${VPN}
+       eval vpnopts=\$vpnopts_${VPN}
+       eval password=\$password_${VPN}
+
+       local config=
+       if [ -e "${VPNCONF}" ]; then
+               config="--config=${VPNCONF}"
+       fi
+
+       # Allow quoted whitespace in vpnopts.
+       eval set -- ${vpnopts}
+
+       ebegin "Starting ${name}"
+       ssd_helper --start \
+               --exec "${command}" \
+               --pidfile "${pidfile}" \
+               -- \
+               --background \
+               ${config} \
+               --interface="${VPN}" \
+               --pid-file="${pidfile}" \
+               "$@" \
+               "${server}" \
+               >> "${VPNLOGFILE}" \
+               2>> "${VPNERRFILE}"
+       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-vpn/openconnect/openconnect-8.10-r2.ebuild 
b/net-vpn/openconnect/openconnect-8.10-r3.ebuild
similarity index 96%
rename from net-vpn/openconnect/openconnect-8.10-r2.ebuild
rename to net-vpn/openconnect/openconnect-8.10-r3.ebuild
index ba71fcaef77..8b5c8962bee 100644
--- a/net-vpn/openconnect/openconnect-8.10-r2.ebuild
+++ b/net-vpn/openconnect/openconnect-8.10-r3.ebuild
@@ -129,8 +129,11 @@ src_install() {
        default
        find "${ED}" -name '*.la' -delete || die
 
-       newinitd "${FILESDIR}"/openconnect.initd.8.10 openconnect
        dodoc "${FILESDIR}"/README.OpenRC
+
+       newconfd "${FILESDIR}"/openconnect.conf.in openconnect
+       newinitd "${FILESDIR}"/openconnect.initd openconnect
+
        insinto /etc/logrotate.d
        newins "${FILESDIR}"/openconnect.logrotate openconnect
 

diff --git a/net-vpn/openconnect/openconnect-9999.ebuild 
b/net-vpn/openconnect/openconnect-9999.ebuild
index ba71fcaef77..8b5c8962bee 100644
--- a/net-vpn/openconnect/openconnect-9999.ebuild
+++ b/net-vpn/openconnect/openconnect-9999.ebuild
@@ -129,8 +129,11 @@ src_install() {
        default
        find "${ED}" -name '*.la' -delete || die
 
-       newinitd "${FILESDIR}"/openconnect.initd.8.10 openconnect
        dodoc "${FILESDIR}"/README.OpenRC
+
+       newconfd "${FILESDIR}"/openconnect.conf.in openconnect
+       newinitd "${FILESDIR}"/openconnect.initd openconnect
+
        insinto /etc/logrotate.d
        newins "${FILESDIR}"/openconnect.logrotate openconnect
 

Reply via email to