129 lines
2.5 KiB
Bash
129 lines
2.5 KiB
Bash
#!/bin/sh
|
|
. /lib/functions.sh
|
|
|
|
convert() {
|
|
secs=$1
|
|
csec=$(printf "%02d:%02d:%02d" $(($secs/3600)) $(($secs%3600/60)) $(($secs%60)))
|
|
}
|
|
|
|
clist() {
|
|
SDIR="/tmp/run"
|
|
|
|
STAT=$SDIR"/openvpn."$1".status"
|
|
|
|
COUNT=0
|
|
RT=0
|
|
TT="Virtual Address	Common Name	Real Address"
|
|
while read -r line; do
|
|
name="$line"
|
|
RTT=$(echo "$name" | grep "Virtual Address")
|
|
if [ ! -z "$RTT" ]; then
|
|
RT=1
|
|
fi
|
|
RTT=$(echo "$name" | grep "GLOBAL STATS")
|
|
if [ ! -z "$RTT" ]; then
|
|
RT=0
|
|
fi
|
|
if [ $RT = 1 ]; then
|
|
if [ $COUNT -gt 0 ]; then
|
|
vip=$(echo "$name" | cut -d, -f1)
|
|
com=$(echo "$name" | cut -d, -f2)
|
|
rel=$(echo "$name" | cut -d, -f3)
|
|
TT="$TT
$vip	$com	$rel"
|
|
fi
|
|
let COUNT=COUNT+1
|
|
fi
|
|
done < "$STAT"
|
|
if [ $COUNT -le 1 ]; then
|
|
TT="No clients"
|
|
COUNT=0
|
|
else
|
|
let COUNT=COUNT-1
|
|
fi
|
|
}
|
|
|
|
rm -f /tmp/vpn
|
|
|
|
vpn_instance() {
|
|
local s="$1"
|
|
echo "$s " >> /tmp/vpn
|
|
config_get config "$s" config
|
|
if [ -z $config ]; then
|
|
config_get_bool client "$s" client 0
|
|
else
|
|
client=1
|
|
fi
|
|
echo "$client" >> /tmp/vpn
|
|
config_get_bool enabled "$s" 'enabled' 0
|
|
echo "$enabled" >> /tmp/vpn
|
|
|
|
result=`ps | grep -i "/usr/sbin/openvpn --syslog openvpn($s)" | grep -v "grep" | wc -l`
|
|
if [ $result -ge 1 ]
|
|
then
|
|
echo "1" >> /tmp/vpn
|
|
else
|
|
echo "0" >> /tmp/vpn
|
|
fi
|
|
|
|
if [ -z $config ]; then
|
|
config_get port "$s" port
|
|
if [ -z $port ]; then
|
|
echo "1194" >> /tmp/vpn
|
|
else
|
|
echo "$port" >> /tmp/vpn
|
|
fi
|
|
config_get proto "$s" proto
|
|
if [ -z $proto ]; then
|
|
echo "udp" >> /tmp/vpn
|
|
else
|
|
echo "$proto" >> /tmp/vpn
|
|
fi
|
|
else
|
|
prott=$(cat "$config" | grep -i "proto " | tr " " ",")
|
|
prot=$(echo "$prott" | cut -d, -f2)
|
|
remtt=$(cat "$config" | grep -i -m 1 "remote " | tr " " ",")
|
|
remt=$(echo "$remtt" | cut -d, -f3)
|
|
echo "$remt" >> /tmp/vpn
|
|
echo "$prot" >> /tmp/vpn
|
|
fi
|
|
if [ $client = "0" ]; then
|
|
echo "---" >> /tmp/vpn
|
|
if [ $result -ge 1 ]; then
|
|
clist $s
|
|
echo "$COUNT" >> /tmp/vpn
|
|
echo "$TT" >> /tmp/vpn
|
|
else
|
|
echo "0" >> /tmp/vpn
|
|
echo "Not running" >> /tmp/vpn
|
|
fi
|
|
else
|
|
if [ -z $config ]; then
|
|
config_get remote "$s" remote
|
|
echo "$remote" >> /tmp/vpn
|
|
else
|
|
remtt=$(cat "$config" | grep -i -m 1 "remote " | tr " " ",")
|
|
remt=$(echo "$remtt" | cut -d, -f2)
|
|
echo "$remt" >> /tmp/vpn
|
|
fi
|
|
echo "---" >> /tmp/vpn
|
|
echo "not server" >> /tmp/vpn
|
|
fi
|
|
if [ $result -ge 1 ]
|
|
then
|
|
config_get laststart "$s" laststart
|
|
CURRTIME=$(date +%s)
|
|
let upt=CURRTIME-laststart
|
|
convert $upt
|
|
upt=$csec
|
|
else
|
|
upt="---"
|
|
fi
|
|
echo "$upt" >> /tmp/vpn
|
|
}
|
|
|
|
config_load 'openvpn'
|
|
config_foreach vpn_instance 'openvpn'
|
|
|
|
exit 0
|
|
|