commit ec6e7d04446ed655ab50996bb7d0060fc6a98572
Author: Jan Rękorajski <[email protected]>
Date: Sun Dec 29 18:57:03 2013 +0100
- added systemd support via service generator
- rel 2
openvpn-service-generator | 21 +++++++++++++++++++++
openvpn.spec | 32 +++++++++++++++++++++++++++++---
openvpn.sysconfig | 7 +++++++
openvpn.target | 7 +++++++
[email protected] | 16 ++++++++++++++++
5 files changed, 80 insertions(+), 3 deletions(-)
---
diff --git a/openvpn.spec b/openvpn.spec
index 32498be..a1e5018 100644
--- a/openvpn.spec
+++ b/openvpn.spec
@@ -6,7 +6,7 @@ Summary: VPN Daemon
Summary(pl.UTF-8): Serwer VPN
Name: openvpn
Version: 2.3.2
-Release: 1
+Release: 2
License: GPL v2
Group: Networking/Daemons
Source0:
http://swupdate.openvpn.net/community/releases/%{name}-%{version}.tar.gz
@@ -14,6 +14,9 @@ Source0:
http://swupdate.openvpn.net/community/releases/%{name}-%{version}.tar.g
Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}.tmpfiles
+Source4: openvpn-service-generator
+Source5: openvpn.target
+Source6: [email protected]
Patch0: %{name}-pam.patch
URL: http://www.openvpn.net/
BuildRequires: autoconf >= 2.59
@@ -84,14 +87,20 @@ sed -e 's,/''usr/lib/openvpn,%{_libdir}/%{name},'
%{SOURCE3} > contrib/update-re
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{%{_sysconfdir}/openvpn,%{_sbindir},%{_mandir}/man8}
\
$RPM_BUILD_ROOT{/etc/{rc.d/init.d,sysconfig},/var/run/openvpn,%{_includedir}} \
- $RPM_BUILD_ROOT{%{_libdir}/%{name}/plugins,/usr/lib/tmpfiles.d}
+
$RPM_BUILD_ROOT{%{_libdir}/%{name}/plugins,%{systemdtmpfilesdir},%{systemdunitdir}}
\
+ $RPM_BUILD_ROOT/lib/systemd/system-generators
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
-install %{SOURCE3} $RPM_BUILD_ROOT/usr/lib/tmpfiles.d/%{name}.conf
+install %{SOURCE3} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/%{name}.conf
+
+install -p %{SOURCE4}
$RPM_BUILD_ROOT/lib/systemd/system-generators/openvpn-service-generator
+install -p %{SOURCE5} $RPM_BUILD_ROOT%{systemdunitdir}/openvpn.target
+install -p %{SOURCE6} $RPM_BUILD_ROOT%{systemdunitdir}/[email protected]
+ln -s /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/openvpn.service
%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/plugins/*.la
@@ -101,12 +110,25 @@ rm -rf $RPM_BUILD_ROOT
%post
/sbin/chkconfig --add openvpn
%service openvpn restart "OpenVPN"
+%systemd_post openvpn.target
%preun
if [ "$1" = "0" ]; then
%service openvpn stop
/sbin/chkconfig --del openvpn
fi
+%systemd_preun openvpn.target
+
+%postun
+%systemd_reload
+
+%triggerpostun -- openvpn < 2.3.2-2
+[ -f /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm
+[ ${RPM_ENABLE_SYSTEMD_SERVICE:-yes} = no ] && exit 0
+[ "$(echo /etc/rc.d/rc[0-6].d/S[0-9][0-9]openvpn)" =
"/etc/rc.d/rc[0-6].d/S[0-9][0-9]openvpn" ] && exit 0
+export SYSTEMD_LOG_LEVEL=warning SYSTEMD_LOG_TARGET=syslog
+/bin/systemctl --quiet enable openvpn.target || :
+exit 0
%files
%defattr(644,root,root,755)
@@ -116,6 +138,10 @@ fi
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name}
%attr(755,root,root) %{_sbindir}/openvpn
%attr(754,root,root) /etc/rc.d/init.d/%{name}
+%attr(755,root,root) /lib/systemd/system-generators/%{name}-service-generator
+%{systemdunitdir}/%{name}.service
+%{systemdunitdir}/%{name}.target
+%{systemdunitdir}/%{name}@.service
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/plugins
%attr(755,root,root) %{_libdir}/%{name}/plugins/*.so
diff --git a/openvpn-service-generator b/openvpn-service-generator
new file mode 100644
index 0000000..5c05da1
--- /dev/null
+++ b/openvpn-service-generator
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+destunitdir=${1:-/tmp}
+
+# Do nothing if target is disabled
+[ -e /etc/systemd/system/multi-user.target.wants/openvpn.target ] || exit 0
+
+[ -f /etc/sysconfig/openvpn ] && . /etc/sysconfig/openvpn
+
+if [ -d $destunitdir/openvpn.target.wants ]; then
+ rm -f $destunitdir/openvpn.target.wants/openvpn@*.service
+else
+ mkdir -p $destunitdir/openvpn.target.wants
+fi
+
+for tun in $TUNNELS; do
+ [ -L $destunitdir/openvpn.target.wants/openvpn@$tun.service ] && \
+ continue
+ ln -s /lib/systemd/system/[email protected] \
+ $destunitdir/openvpn.target.wants/openvpn@$tun.service
+done
diff --git a/openvpn.sysconfig b/openvpn.sysconfig
index 42a4729..4fb33e6 100644
--- a/openvpn.sysconfig
+++ b/openvpn.sysconfig
@@ -7,5 +7,12 @@ SERVICE_RUN_NICE_LEVEL="+0"
#OPENVPN_OPT="--script-security 2"
# Tunnels to set up. For each tunnel name, there should be config file in
/etc/openvpn
+#
+# On systems running systemd after updating the list below you have to
+# restart systemd to regenerate [email protected] services
+# (systemctl --system daemon-reload), stop and start openvpn.target when
+# removing elements from list or restart openvpn.target when only adding
+# elements (systemctl stop openvpn.target / systemctl restart openvpn.target).
+#
#TUNNELS="mytunnel"
TUNNELS=""
diff --git a/openvpn.target b/openvpn.target
new file mode 100644
index 0000000..652626e
--- /dev/null
+++ b/openvpn.target
@@ -0,0 +1,7 @@
+[Unit]
+Description=Start openvpn tunnels
+After=network.target
+Wants=network.target
+
+[Install]
+WantedBy=multi-user.target
diff --git a/[email protected] b/[email protected]
new file mode 100644
index 0000000..4a2db14
--- /dev/null
+++ b/[email protected]
@@ -0,0 +1,16 @@
+[Unit]
+Description=OpenVPN tunnel on %I
+Requires=openvpn.target
+After=openvpn.target
+PropagateReloadFrom=openvpn.target
+
+[Service]
+Type=forking
+PrivateTmp=true
+EnvironmentFile=-/etc/sysconfig/openvpn
+PIDFile=/var/run/openvpn/%i.pid
+ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid
--config /etc/openvpn/%i.conf --cd /etc/openvpn $OPENVPN_OPT
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=openvpn.target
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/openvpn.git/commitdiff/ec6e7d04446ed655ab50996bb7d0060fc6a98572
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit