#!/bin/sh . /usr/lib/libmodcgi.sh . /mod/etc/conf/openvpn.cfg NAMES="${OPENVPN_CONFIG_NAMES#*\#}" NAMES="openvpn${NAMES//#/\nopenvpn_}" MODE="${OPENVPN_MODE#*\#}" LOG="${OPENVPN_LOGFILE#*\#}" nth() { echo -e "${2//#/\n}" | sed -n "$1 p" } cgi_begin "OpenVPN Clients" sec_begin '$(lang de:"Verbundene VPN-Clients" en:"Connected clients")' sec-connected echo "<p>$(lang de:"Laut Status-Datei sind folgende Clients verbunden:" en:"Status file entries of connected sessions:") </p>" c=1 for config in $(echo -e "$NAMES"); do if [ "yes" = "$(nth $c $LOG)" -a "server" = "$(nth $c $MODE)" -a -r /var/log/${config}.log ]; then [ $OPENVPN_CONFIG_COUNT -gt 1 ] && echo "<b>$(lang de:"Konfiguration" en:"Configuration") <i>${config}</i></b> " echo '<table width="100%" border="1" rules="rows">' echo "<tr><th align="left">Clientname</th><th align="left">IP</th><th align="left">$(lang de:"verbunden seit" en:"connected since")</th></tr>" sed -n '/Since/,/ROUTING/ s%\(^[^\,]*\)\,\([0-9\.]*\)[^\,]*\,[0-9]*\,[0-9]*\,\(.*\)%<tr> <td>\1</td><td>\2</td><td>\3</td></tr>% p' /var/log/${config}.log echo "</table>" echo "<small>($(lang de:"Status von" en:"Status at"): $(sed -n 's/^Updated\,//p' /var/log/${config}.log )) </small><p></p>" fi let c++ done echo '<p><small><i>$(lang de:"Angezeigt nur für konfigurierte Server mit angewählter Option \"Statusprotokoll\"" en:"Shown only for server configurations with selected option \"Log status\"") </i></small></p>' sec_end cgi_end