From 30a6eaa9aac247d9516705a16e99bc7961dce59f Mon Sep 17 00:00:00 2001 From: Emil Palm Date: Tue, 5 May 2020 15:26:16 +0200 Subject: [PATCH] Fixing issue #14 --- openvpn_status/utils.py | 5 +++++ tests/data/openvpn-status.txt | 3 +++ tests/test_parser.py | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/openvpn_status/utils.py b/openvpn_status/utils.py index a20af8e..1530878 100644 --- a/openvpn_status/utils.py +++ b/openvpn_status/utils.py @@ -14,6 +14,7 @@ RE_VIRTUAL_ADDR_MAC = re.compile( u'^{0}:{0}:{0}:{0}:{0}:{0}$'.format(u'[a-f0-9]{2}'), re.I) RE_VIRTUAL_ADDR_NETWORK = re.compile(u'/(\\d{1,3})$') +RE_VIRTUAL_ADDR_CLIENT = re.compile(u'C$') def parse_time(time): @@ -39,6 +40,10 @@ def parse_vaddr(virtual_addr): if match and 0 < int(match.group(1)) <= 128: return ipaddress.ip_network(virtual_addr) + match = RE_VIRTUAL_ADDR_CLIENT.search(virtual_addr) + if match: + return ipaddress.ip_address(RE_VIRTUAL_ADDR_CLIENT.sub('', virtual_addr)) + return ipaddress.ip_address(virtual_addr) diff --git a/tests/data/openvpn-status.txt b/tests/data/openvpn-status.txt index 923b853..4eb1900 100644 --- a/tests/data/openvpn-status.txt +++ b/tests/data/openvpn-status.txt @@ -15,6 +15,9 @@ Virtual Address,Common Name,Real Address,Last Ref 192.168.255.135,foo@example.com,10.10.10.10:49503,Thu Jun 18 08:12:09 2015 192.168.255.126,bar@example.com,10.10.10.10:64169,Thu Jun 18 08:11:55 2015 22:1d:63:bf:62:38,tap@example.com,10.0.0.100:55712,Thu Oct 19 20:14:19 2017 +192.168.255.126C,bar@example.com,10.10.10.10:64169,Thu Jun 18 08:11:55 2015 +192.168.255.16C,bar@example.com,10.10.10.10:64169,Thu Jun 18 08:11:55 2015 +192.168.255.1C,bar@example.com,10.10.10.10:64169,Thu Jun 18 08:11:55 2015 GLOBAL STATS Max bcast/mcast queue length,0 END diff --git a/tests/test_parser.py b/tests/test_parser.py index cd2e684..00a0639 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -25,7 +25,7 @@ def test_parser(openvpn_status): status = parser.parse() assert len(status.client_list) == 5 - assert len(status.routing_table) == 7 + assert len(status.routing_table) == 9 assert status.global_stats.max_bcast_mcast_queue_len == 0 assert status.updated_at == datetime.datetime(2015, 6, 18, 8, 12, 15)