Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Apr 2007 07:50:04 -0000
From:      Matthias Andree <matthias.andree@gmx.de>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        gkozyrev@gmail.com, vd@FreeBSD.org, dsh@vlink.ru
Subject:   ports/111997: [MAINTAINER] security/openvpn: add multiple-profile feature to rc script
Message-ID:  <20070422072420.8F04DDEA1@merlin.emma.line.org>
Resent-Message-ID: <200704220750.l3M7o30R042618@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         111997
>Category:       ports
>Synopsis:       [MAINTAINER] security/openvpn: add multiple-profile feature to rc script
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Sun Apr 22 07:50:03 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator:     Matthias Andree
>Release:        FreeBSD 6.2-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD merlin.emma.line.org 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #18: Sun Jan 14 13:10:49 CET 2007
>Description:
- Add multiple profile support to rc script (backwards compatible).
- Bump portrevision.
- Update note about OpenVPN 2.0.X newer releases.

This is a revised edition of Gleb Kozyrev's patch (vd: patch-3.diff)

Supersedes: ports/108371
Submitted by: Denis Shaposhnikov and Gleb Kozyrev

Generated with FreeBSD Port Tools 0.77
>How-To-Repeat:
>Fix:

--- openvpn-2.0.6_5.patch begins here ---
diff -ruN --exclude=CVS /usr/ports/security/openvpn/Makefile /root/ports/security/openvpn/Makefile
--- /usr/ports/security/openvpn/Makefile	Sun Feb  4 20:14:20 2007
+++ /root/ports/security/openvpn/Makefile	Sun Feb  4 22:36:03 2007
@@ -7,13 +7,13 @@
 
 PORTNAME=	openvpn
 # -----------------------------------------------------
-# DO NOT BOTHER TO SEND NOTICES ABOUT 2.0.8 AS IT FIXES
+# DO NOT BOTHER TO SEND NOTICES ABOUT 2.0.9 AS IT FIXES
 # WINDOWS-ONLY BUGS THAT DON'T AFFECT *BSD AND THUS
 # DOES NOT WARRANT A PORT UPGRADE! AND UPGRADE REQUESTS
-# WILL BE DROPPED.       -- Matthias Andree, 2006-10-01
+# WILL BE DROPPED.       -- Matthias Andree, 2007-02-04
 # -----------------------------------------------------
 PORTVERSION=	2.0.6
-PORTREVISION=	4
+PORTREVISION=	5
 CATEGORIES=	security net
 # MASTER_SITES points to hosts in distinct data centers,
 # so just one MASTER_SITES entry should be OK.
diff -ruN --exclude=CVS /usr/ports/security/openvpn/files/openvpn.sh.in /root/ports/security/openvpn/files/openvpn.sh.in
--- /usr/ports/security/openvpn/files/openvpn.sh.in	Mon Feb 20 21:47:39 2006
+++ /root/ports/security/openvpn/files/openvpn.sh.in	Sun Feb  4 23:01:09 2007
@@ -1,11 +1,12 @@
 #!/bin/sh
 #
-# openvpn.sh - load tun/tap driver and start OpenVPN daemon
+# openvpn.sh - load tun/tap driver and start OpenVPN daemon(s)
 #
-# (C) Copyright 2005 by Matthias Andree
-# based on suggestions by Matthias Grimm and Dirk Gouders
+# (C) Copyright 2005,2007 by Matthias Andree
+# based on suggestions by Matthias Grimm, Dirk Gouders,
+# profiles feature by Denis Shaposhnikov and Gleb Kozyrev
 #
-# Made in Northrhine-Westphalia, Germany
+# This script is under the new BSD license.
 #
 # $FreeBSD: ports/security/openvpn/files/openvpn.sh.in,v 1.4 2006/02/20 20:47:39 dougb Exp $
 # 
@@ -37,6 +38,7 @@
 #
 # # optional:
 # openvpn_flags=""	# openvpn command line flags
+# openvpn_configdir="%%PREFIX%%/etc/openvpn"			# config directory
 # openvpn_configfile="%%PREFIX%%/etc/openvpn/openvpn.conf" 	# --config file
 # openvpn_dir="%%PREFIX%%/etc/openvpn"				# --cd directory
 #
@@ -44,6 +46,21 @@
 # file and directory where keys and certificates reside differ from the above
 # settings.
 #
+# Add "openvpn_profiles" to run several instances of openvpn with
+# different parameters. Consider the following example:
+#
+#     openvpn_enable="YES"
+#     openvpn_profiles="default tcp"
+#
+# This will run two instances of openvpn: one with default config and pidfile
+# and the other with config file %%PREFIX%%/etc/openvpn/tcp.conf
+# and pidfile /var/run/openvpn_tcp.pid
+#
+# You may specify different locations by setting openvpn_NAME_xxx variables:
+#
+#     openvpn_tcp_configfile="%%PREFIX%%/etc/other/openvpn_tcp.conf"
+#     openvpn_tcp_pidfile="/var/run/openpvn_tcp.pid"
+#
 # Note that we deliberately refrain from unloading drivers.
 #
 # For further documentation, please see openvpn(8).
@@ -78,6 +95,54 @@
 	rm -f "$pidfile" || warn "Could not remove $pidfile."
 }
 
+setup_profile_vars()
+{
+	name=openvpn_$1
+	eval ": \${openvpn_${1}_configfile=${openvpn_configdir}/${1}.conf}"
+	eval ": \${openvpn_${1}_dir=${openvpn_dir}}"
+	eval ": \${openvpn_${1}_flags=${openvpn_flags}}"
+	eval ": \${openvpn_${1}_pidfile=/var/run/openvpn_${1}.pid}"
+	eval "pidfile=\"\${openvpn_${1}_pidfile}\""
+	eval "required_files=\"\${openvpn_${1}_configfile}\""
+	eval "command_args=\"--cd \${openvpn_${1}_dir} --daemon --config \${openvpn_${1}_configfile} --writepid \${pidfile}\""
+}
+
+start_profiles()
+{
+	unset start_cmd start_precmd
+	for _profile in ${openvpn_profiles}; do
+		setup_profile_vars $_profile
+		run_rc_command "${rc_arg}"
+	done
+}
+
+stop_profiles()
+{
+	unset stop_cmd
+	for _profile in ${openvpn_profiles}; do
+		setup_profile_vars $_profile
+		run_rc_command "${rc_arg}"
+	done
+}
+
+status_profiles()
+{
+	unset status_cmd
+	for _profile in ${openvpn_profiles}; do
+		setup_profile_vars $_profile
+		run_rc_command "${rc_arg}"
+	done
+}
+
+reload_profiles()
+{
+	unset reload_cmd
+	for _profile in ${openvpn_profiles}; do
+		setup_profile_vars $_profile
+		run_rc_command "${rc_arg}"
+	done
+}
+
 # support SIGHUP to reparse configuration file
 extra_commands="reload"
 
@@ -93,11 +158,32 @@
 stop_postcmd="stop_postcmd"
 
 load_rc_config ${name}
+
 : ${openvpn_enable="NO"}
 : ${openvpn_flags=""}
 : ${openvpn_if=""}
+: ${openvpn_configdir="${prefix}/etc/openvpn"}
 : ${openvpn_configfile="${prefix}/etc/openvpn/openvpn.conf"}
 : ${openvpn_dir="${prefix}/etc/openvpn"}
+: ${openvpn_profiles="default"}
+: ${openvpn_default_configfile="${openvpn_configfile}"}
+: ${openvpn_default_pidfile="${pidfile}"}
+
 required_files="${openvpn_configfile}"
 command_args="--cd ${openvpn_dir} --daemon --config ${openvpn_configfile} --writepid ${pidfile}"
-run_rc_command "$1"
+
+cmd="$1"
+if [ $# -gt 0 ]; then
+	shift
+fi
+
+[ -n "$*" ] && openvpn_profiles="$*"
+
+if [ -n "${openvpn_profiles}" -a "${openvpn_profiles}" != "default" ]; then
+	start_cmd="start_profiles"
+	stop_cmd="stop_profiles"
+	status_cmd="status_profiles"
+	reload_cmd="reload_profiles"
+fi
+
+run_rc_command "$cmd"
--- openvpn-2.0.6_5.patch ends here ---

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070422072420.8F04DDEA1>