diff options
author | srividya0208 <a.srividya@vyos.io> | 2022-05-06 09:28:13 -0400 |
---|---|---|
committer | John Estabrook <jestabro@vyos.io> | 2023-03-07 12:00:04 -0600 |
commit | bdfd55a2847df1b130a74b50e83747d57b714532 (patch) | |
tree | 033a66a9ad328fb1ce3ced8421660eb6e8a42ac7 /src/op_mode/show_openvpn.py | |
parent | c4afde0f76a3bd66df975e823f317fce6efae75b (diff) | |
download | vyos-1x-bdfd55a2847df1b130a74b50e83747d57b714532.tar.gz vyos-1x-bdfd55a2847df1b130a74b50e83747d57b714532.zip |
openvpn: T4381: Add tunnel ip column for status command
Added the tunnel ip column to see the assigned ip address in server mode
(cherry picked from commit 500c182c4fa4e0fa030b7c68139fbe948266c49b)
Diffstat (limited to 'src/op_mode/show_openvpn.py')
-rwxr-xr-x | src/op_mode/show_openvpn.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/op_mode/show_openvpn.py b/src/op_mode/show_openvpn.py index f7b99cc0d..9a5adcffb 100755 --- a/src/op_mode/show_openvpn.py +++ b/src/op_mode/show_openvpn.py @@ -26,10 +26,10 @@ outp_tmpl = """ {% if clients %} OpenVPN status on {{ intf }} -Client CN Remote Host Local Host TX bytes RX bytes Connected Since ---------- ----------- ---------- -------- -------- --------------- +Client CN Remote Host Tunnel IP Local Host TX bytes RX bytes Connected Since +--------- ----------- --------- ---------- -------- -------- --------------- {% for c in clients %} -{{ "%-15s"|format(c.name) }} {{ "%-21s"|format(c.remote) }} {{ "%-21s"|format(local) }} {{ "%-9s"|format(c.tx_bytes) }} {{ "%-9s"|format(c.rx_bytes) }} {{ c.online_since }} +{{ "%-15s"|format(c.name) }} {{ "%-21s"|format(c.remote) }} {{ "%-15s"|format(c.tunnel) }} {{ "%-21s"|format(local) }} {{ "%-9s"|format(c.tx_bytes) }} {{ "%-9s"|format(c.rx_bytes) }} {{ c.online_since }} {% endfor %} {% endif %} """ @@ -50,6 +50,19 @@ def bytes2HR(size): output="{0:.1f} {1}".format(size, suff[suffIdx]) return output +def get_vpn_tunnel_address(peer, interface): + lst = [] + status_file = '/var/run/openvpn/{}.status'.format(interface) + + with open(status_file, 'r') as f: + lines = f.readlines() + for line in lines: + if peer in line: + lst.append(line) + tunnel_ip = lst[1].split(',')[0] + + return tunnel_ip + def get_status(mode, interface): status_file = '/var/run/openvpn/{}.status'.format(interface) # this is an empirical value - I assume we have no more then 999999 @@ -110,7 +123,7 @@ def get_status(mode, interface): 'tx_bytes': bytes2HR(line.split(',')[3]), 'online_since': line.split(',')[4] } - + client["tunnel"] = get_vpn_tunnel_address(client['remote'], interface) data['clients'].append(client) continue else: @@ -173,5 +186,7 @@ if __name__ == '__main__': if len(remote_host) >= 1: client['remote'] = str(remote_host[0]) + ':' + remote_port + client['tunnel'] = 'N/A' + tmpl = jinja2.Template(outp_tmpl) print(tmpl.render(data)) |