Mon Sep 8 16:57:02 2014 UTC ()
Add SMF manifest for openvpn.
Provided by Ernst Glatz in https://github.com/joyent/pkgsrc/pull/218


(wiedi)
diff -r1.53 -r1.54 pkgsrc/net/openvpn/Makefile
diff -r0 -r1.1 pkgsrc/net/openvpn/files/smf/manifest.xml
diff -r0 -r1.1 pkgsrc/net/openvpn/files/smf/openvpn.sh

cvs diff -r1.53 -r1.54 pkgsrc/net/openvpn/Makefile (expand / switch to unified diff)

--- pkgsrc/net/openvpn/Makefile 2014/07/20 17:43:29 1.53
+++ pkgsrc/net/openvpn/Makefile 2014/09/08 16:57:01 1.54
@@ -1,16 +1,17 @@ @@ -1,16 +1,17 @@
1# $NetBSD: Makefile,v 1.53 2014/07/20 17:43:29 adam Exp $ 1# $NetBSD: Makefile,v 1.54 2014/09/08 16:57:01 wiedi Exp $
2 2
3DISTNAME= ${OPENVPN_DISTNAME} 3DISTNAME= ${OPENVPN_DISTNAME}
 4PKGREVISION= 1
4CATEGORIES= net 5CATEGORIES= net
5MASTER_SITES= ${OPENVPN_MASTER_SITES} 6MASTER_SITES= ${OPENVPN_MASTER_SITES}
6EXTRACT_SUFX= .tar.xz 7EXTRACT_SUFX= .tar.xz
7 8
8MAINTAINER= pkgsrc-users@NetBSD.org 9MAINTAINER= pkgsrc-users@NetBSD.org
9HOMEPAGE= http://openvpn.net/ 10HOMEPAGE= http://openvpn.net/
10COMMENT= Easy-to-use SSL VPN daemon 11COMMENT= Easy-to-use SSL VPN daemon
11LICENSE= gnu-gpl-v2 12LICENSE= gnu-gpl-v2
12 13
13PKG_DESTDIR_SUPPORT= user-destdir 14PKG_DESTDIR_SUPPORT= user-destdir
14 15
15USE_LIBTOOL= yes 16USE_LIBTOOL= yes
16USE_TOOLS+= aclocal autoconf autom4te grep:run pkg-config 17USE_TOOLS+= aclocal autoconf autom4te grep:run pkg-config
@@ -22,26 +23,28 @@ CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSC @@ -22,26 +23,28 @@ CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSC
22 23
23USE_OLD_DES_API= yes 24USE_OLD_DES_API= yes
24TEST_TARGET= check 25TEST_TARGET= check
25 26
26PKG_SYSCONFSUBDIR= openvpn 27PKG_SYSCONFSUBDIR= openvpn
27DATADIR= ${PREFIX}/share/${PKGBASE} 28DATADIR= ${PREFIX}/share/${PKGBASE}
28EGDIR= ${PREFIX}/share/examples/${PKGBASE} 29EGDIR= ${PREFIX}/share/examples/${PKGBASE}
29RCD_SCRIPTS= openvpn 30RCD_SCRIPTS= openvpn
30 31
31INSTALLATION_DIRS+= ${EGDIR}/config 32INSTALLATION_DIRS+= ${EGDIR}/config
32INSTALLATION_DIRS+= ${EGDIR}/keys 33INSTALLATION_DIRS+= ${EGDIR}/keys
33INSTALLATION_DIRS+= ${EGDIR}/scripts 34INSTALLATION_DIRS+= ${EGDIR}/scripts
34 35
 36SMF_METHODS+= openvpn
 37
35.include "../../mk/bsd.prefs.mk" 38.include "../../mk/bsd.prefs.mk"
36 39
37PKG_GROUPS= ${OPENVPN_GROUP} 40PKG_GROUPS= ${OPENVPN_GROUP}
38PKG_USERS= ${OPENVPN_USER}:${OPENVPN_GROUP} 41PKG_USERS= ${OPENVPN_USER}:${OPENVPN_GROUP}
39PKG_GECOS.${OPENVPN_USER}= OpenVPN\ server\ user 42PKG_GECOS.${OPENVPN_USER}= OpenVPN\ server\ user
40 43
41MESSAGE_SUBST+= OPENVPN_PLUGINSDIR=${PREFIX}/${OPENVPN_PLUGINSDIR} 44MESSAGE_SUBST+= OPENVPN_PLUGINSDIR=${PREFIX}/${OPENVPN_PLUGINSDIR}
42 45
43post-install: 46post-install:
44 set -e; cd ${WRKSRC}/sample/sample-config-files; for file in *; do \ 47 set -e; cd ${WRKSRC}/sample/sample-config-files; for file in *; do \
45 ${INSTALL_DATA} $$file ${DESTDIR}${EGDIR}/config; \ 48 ${INSTALL_DATA} $$file ${DESTDIR}${EGDIR}/config; \
46 done 49 done
47 set -e; cd ${WRKSRC}/sample/sample-scripts; for file in *; do \ 50 set -e; cd ${WRKSRC}/sample/sample-scripts; for file in *; do \

File Added: pkgsrc/net/openvpn/files/smf/manifest.xml
<?xml version="1.0" ?>
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<service_bundle type="manifest" name="export">
	<service name='@SMF_PREFIX@/@SMF_NAME@' type="service" version="0">
		<create_default_instance enabled="true"/>
		<dependency name="fs" grouping="require_all" restart_on="none" type="service">
			<service_fmri value="svc:/system/filesystem/local"/>
		</dependency>
		<dependency name="net" grouping="require_all" restart_on="none" type="service">
			<service_fmri value="svc:/network/loopback"/>
		</dependency>
		<exec_method name="start"   type="method" exec="@PREFIX@/@SMF_METHOD_FILE.openvpn@ start %{config}" timeout_seconds="60" >
		<method_context working_directory='@PKG_SYSCONFDIR@' />
		</exec_method>
		<exec_method name="stop"    type="method" exec="@PREFIX@/@SMF_METHOD_FILE.openvpn@ stop"      timeout_seconds="60" />
		<property_group name="startd" type="framework">
		<propval name="duration" type="astring" value="child"/>
		</property_group>
		<property_group name="application" type="application">
			<propval name="config" type="astring" value="@PKG_SYSCONFDIR@/openvpn.conf"/>
		</property_group>
		<stability value="External"/>
		<template>
			<common_name>
				<loctext xml:lang="C">openvpn</loctext>
			</common_name>
			<documentation>
				<manpage title="openvpn" section="8" manpath="man"/>
				<doc_link name="openvpn.net" uri="http://openvpn.net/index.php/manuals"/>
			</documentation>
		</template>
	</service>
</service_bundle>

File Added: pkgsrc/net/openvpn/files/smf/openvpn.sh
#!@SMF_METHOD_SHELL@
#
# $NetBSD: openvpn.sh,v 1.1 2014/09/08 16:57:01 wiedi Exp $
#
# Init script for openvpn (SMF).
#
. /lib/svc/share/smf_include.sh




METHOD=$1
CONFIG=$2
PATH="@PREFIX@/sbin:@PREFIX@/bin:@PREFIX@/gnu/bin:/usr/bin:/usr/sbin"
SCRIPTNAME=$(basename $0)
INSTANCE=$(echo $SMF_FMRI | sed s_.*:__)
PIDFILE="@VARBASE@/run/openvpn-$INSTANCE.pid"

case $METHOD in
start)
	if [[ ! -f $CONFIG ]]
	then
		echo "ERROR: Openvpn config file \""$CONFIG"\" doesn't exist"
		exit $SMF_EXIT_ERR_CONFIG
	fi
	@PREFIX@/sbin/openvpn --config ${CONFIG} --writepid ${PIDFILE}

;;
stop)
	if [[ -s ${PIDFILE} ]]
	then
		kill $(cat ${PIDFILE}) 2>/dev/null
		[[ $? -eq 0 ]] && rm -f ${PIDFILE}

	else
		echo "ERROR: \""$PIDFILE"\" pidfile  doesn't exist"
		exit $SMF_EXIT_ERR_CONFIG
	fi
;;

*)
	echo "usage : "
	echo "$SCRIPTNAME { start | stop } "
	echo ""
	exit $SMF_EXIT_ERR_CONFIG
esac

exit $SMF_EXIT_OK