]> git.pld-linux.org Git - packages/openvpn.git/blame - openvpn.init
- add --suppress-timestamps when systemd logs data
[packages/openvpn.git] / openvpn.init
CommitLineData
d84d9290
JK
1#!/bin/sh
2#
bad028c1 3# openvpn Start/stop the VPN daemon.
d84d9290 4#
3dfa4b8b 5# chkconfig: 2345 11 89
d84d9290 6#
086da148 7# description: OpenVPN is a robust and highly configurable VPN (Virtual \
bad028c1 8# Private Network) daemon
d84d9290
JK
9#
10
e30ecdce
ER
11# Get service config
12[ -f /etc/sysconfig/openvpn ] && . /etc/sysconfig/openvpn
13
14[ -n "$2" ] && TUNNELS="$2"
15
16# no tunnels. exit silently
17if [ -z "$TUNNELS" ]; then
18 case "$1" in
19 start|stop|restart|reload|force-reload)
20 exit 0
21 ;;
22 esac
23fi
24
d84d9290
JK
25# Source function library
26. /etc/rc.d/init.d/functions
27
b585287a 28# Source networking configuration.
29. /etc/sysconfig/network
30
b7a1516e 31# check if the tunnel $1 is up
bdda45fd 32tunlup() {
79d8ce42
ER
33 local tun="$1"
34 local pidfile=/var/run/openvpn/$tun.pid
35 local pid=$(cat $pidfile 2>/dev/null)
36 kill -0 $pid 2>/dev/null
37 return $?
38}
39
ec236b38 40# check if all the configured tunnels are up
79d8ce42 41tunlsup() {
bdda45fd
ER
42 ret=0
43 for tun in $TUNNELS; do
99cca032 44 tunlup $tun && continue
bdda45fd
ER
45 ret=1
46 done
47 return $ret
48}
49
058f90d9 50start() {
d84d9290 51 # Check if the service is already running?
26016463 52 if tunlsup; then
026907a7 53 msg_already_running "OpenVPN"
26016463 54 return
d84d9290 55 fi
26016463
ER
56
57 msg_starting "OpenVPN"; started
58 for tun in $TUNNELS; do
59 config="/etc/openvpn/$tun.conf"
60 if [ ! -f "$config" ]; then
61 nls "Invalid tunnel \`%s': missing config: %s" $tun "$config"
62 fail
63 RET=1
64 else
65 show "Starting OpenVPN tunnel %s" "$tun"
66 if tunlup $tun; then
67 started
68 continue
69 fi
70
71 daemon --pidfile /var/run/openvpn/$tun.pid /usr/sbin/openvpn --daemon --writepid /var/run/openvpn/$tun.pid \
72 --config $config --cd /etc/openvpn ${OPENVPN_OPT}
73 RET=$?
74 fi
75 [ $RETVAL -eq 0 ] && RETVAL=$RET
76 done
77 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/openvpn
058f90d9
ER
78}
79
80stop() {
26016463 81 if ! tunlsup; then
bad028c1 82 msg_not_running "OpenVPN"
26016463 83 return
bad028c1 84 fi
26016463
ER
85
86 # Stop daemons.
87 msg_stopping "OpenVPN"; started
88 for tun in $TUNNELS; do
89 pidfile=/var/run/openvpn/$tun.pid
90 [ -f "$pidfile" ] || continue
91 pid=`cat "$pidfile"`
92 show "Stopping OpenVPN tunnel %s" "$tun"; busy
93 killproc --pidfile openvpn/$tun.pid || err=1
94 done
95 rm -f /var/lock/subsys/openvpn >/dev/null 2>&1
058f90d9
ER
96}
97
26016463
ER
98reload() {
99 if ! tunlsup; then
100 msg_not_running "OpenVPN"
101 RETVAL=7
102 return
8d6fb2d1 103 fi
26016463
ER
104
105 msg_reloading "OpenVPN"; started
106 for tun in $TUNNELS; do
107 show "Reloading OpenVPN tunnel %s" "$tun"
108 killproc --pidfile openvpn/$tun.pid openvpn -HUP
109 [ $? -ne 0 -a $RETVAL -eq 0 ] && RETVAL=7
110 done
111}
112
113status() {
058f90d9
ER
114 nls "Configured tunnels:"
115 echo " $TUNNELS"
116 nls "Currently active tunnels:"
ec236b38
ER
117 for pidfile in /var/run/openvpn/*.pid; do
118 [ -f "$pidfile" ] || continue
119 tun=${pidfile#/var/run/openvpn/}
120 tun=${tun%.pid}
b9d252c1 121 tunlup $tun && echo -n " $tun($(cat $pidfile))"
058f90d9
ER
122 done
123 echo ""
32ead1cc 124 nm_ovpn_pid=$(ps -o pid= -C nm-openvpn-service | xargs)
a568127e
ER
125 if [ "$nm_ovpn_pid" ]; then
126 nls "NM ($nm_ovpn_pid) managed OpenVPN sessions"
127 ps -o pid,user,command --ppid=$nm_ovpn_pid
128 fi
ec236b38 129 tunlsup
26016463
ER
130 RETVAL=$?
131}
132
be1312a6
ER
133upstart_controlled --except status
134
26016463
ER
135RETVAL=0
136# See how we were called.
137case "$1" in
138 start)
139 start
140 ;;
141 stop)
142 stop
143 ;;
144 reload|force-reload)
145 reload
146 ;;
147 restart)
148 stop
149 sleep 1
150 start
151 ;;
152 status)
153 status
d84d9290
JK
154 ;;
155 *)
ede0a906 156 msg_usage "$0 {start|stop|restart|reload|force-reload|status}"
157 exit 3
92e35fb4 158 ;;
d84d9290
JK
159esac
160
161exit $RETVAL
This page took 0.096191 seconds and 4 git commands to generate.