summaryrefslogtreecommitdiff
path: root/src/op_mode/show_openvpn.py
diff options
context:
space:
mode:
authorsrividya0208 <a.srividya@vyos.io>2022-05-06 09:28:13 -0400
committerJohn Estabrook <jestabro@vyos.io>2023-03-07 12:00:04 -0600
commitbdfd55a2847df1b130a74b50e83747d57b714532 (patch)
tree033a66a9ad328fb1ce3ced8421660eb6e8a42ac7 /src/op_mode/show_openvpn.py
parentc4afde0f76a3bd66df975e823f317fce6efae75b (diff)
downloadvyos-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-xsrc/op_mode/show_openvpn.py23
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))