Skip to content

Commit

Permalink
enhances WireGuard VPN implementation #77
Browse files Browse the repository at this point in the history
  • Loading branch information
bb-Ricardo committed Dec 2, 2022
1 parent 4186d5d commit b5e9fc3
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 79 deletions.
63 changes: 34 additions & 29 deletions fritzinfluxdb/classes/fritzbox/service_definitions/vpn_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("connected"),
"tags_function": lambda data: {"name": data.get("name")}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "IPSec"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.vpnInfo.userConnections"), dict)
},
Expand All @@ -55,7 +55,7 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("active"),
"tags_function": lambda data: {"name": data.get("name")}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "IPSec"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.vpnInfo.userConnections"), dict)
},
Expand All @@ -65,7 +65,7 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("virtualAddress"),
"tags_function": lambda data: {"name": data.get("name")}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "IPSec"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.vpnInfo.userConnections"), dict)
},
Expand All @@ -75,7 +75,7 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("address"),
"tags_function": lambda data: {"name": data.get("name")}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "IPSec"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.vpnInfo.userConnections"), dict)
},
Expand All @@ -87,6 +87,9 @@ def prepare_json_response_data(response):
if x.get("connected") is True]
)
),
"tags": {
"vpn_type": "IPSec"
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.vpnInfo.userConnections"), dict)
}
}
Expand Down Expand Up @@ -118,7 +121,7 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("connected"),
"tags_function": lambda data: {"name": data.get("name"), "vpntype": "IPSec"}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "IPSec"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.init.userConnections"), dict)
},
Expand All @@ -128,7 +131,7 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("active"),
"tags_function": lambda data: {"name": data.get("name"), "vpntype": "IPSec"}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "IPSec"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.init.userConnections"), dict)
},
Expand All @@ -138,7 +141,7 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("virtualAddress"),
"tags_function": lambda data: {"name": data.get("name"), "vpntype": "IPSec"}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "IPSec"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.init.userConnections"), dict)
},
Expand All @@ -148,7 +151,7 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("address"),
"tags_function": lambda data: {"name": data.get("name"), "vpntype": "IPSec"}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "IPSec"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.init.userConnections"), dict)
},
Expand All @@ -160,7 +163,9 @@ def prepare_json_response_data(response):
if x.get("connected") is True]
)
),
"tags_function": lambda data: {"vpntype": "IPSec"},
"tags": {
"vpn_type": "IPSec"
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.init.userConnections"), dict)
}
}
Expand All @@ -169,10 +174,7 @@ def prepare_json_response_data(response):

lua_services.append({
"name": "VPN Users - WireGuard",
"os_versions": [
"7.39",
"7.50"
],
"os_min_versions": "7.39",
"method": "POST",
"params": {
"page": "shareWireguard",
Expand All @@ -181,21 +183,22 @@ def prepare_json_response_data(response):
},
"response_parser": prepare_json_response_data,
"value_instances": {
"myfritz_host_name": {
"data_path": "data.init.server",
"type": str
},
"vpn_type": {
"data_path": "data.init.type", # currently falsely returns "IPSec Xauth PSK"
"type": str
},
# currently covered by VPN IPSec service
# "myfritz_host_name": {
# "data_path": "data.init.server",
# "type": str
# },
# "vpn_type": {
# "data_path": "data.init.type", # currently falsely returns "IPSec Xauth PSK"
# "type": str
# },
"vpn_user_connected": {
"data_path": "data.init.boxConnections",
"type": dict,
"next": {
"type": str,
"value_function": lambda data: data.get("connected"),
"tags_function": lambda data: {"name": data.get("name"), "vpntype": "WireGuard"}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "WireGuard"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.init.boxConnections"), dict)
},
Expand All @@ -205,7 +208,7 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("active"),
"tags_function": lambda data: {"name": data.get("name"), "vpntype": "WireGuard"}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "WireGuard"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.init.boxConnections"), dict)
},
Expand All @@ -215,7 +218,7 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("remoteNet"),
"tags_function": lambda data: {"name": data.get("name"), "vpntype": "WireGuard"}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "WireGuard"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.init.boxConnections"), dict)
},
Expand All @@ -225,19 +228,21 @@ def prepare_json_response_data(response):
"next": {
"type": str,
"value_function": lambda data: data.get("remoteIp"),
"tags_function": lambda data: {"name": data.get("name"), "vpntype": "WireGuard"}
"tags_function": lambda data: {"name": data.get("name"), "vpn_type": "WireGuard"}
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.init.boxConnections"), dict)
},
"vpn_user_num_active": {
"type": int,
"value_function": (lambda data:
len(
len(
[x for x in grab(data, "data.init.boxConnections", fallback=dict()).values()
if x.get("connected") is True]
)
),
"tags_function": lambda data: {"vpntype": "WireGuard"},
)
),
"tags": {
"vpn_type": "WireGuard"
},
"exclude_filter_function": lambda data: not isinstance(grab(data, "data.init.boxConnections"), dict)
}
}
Expand Down
Loading

0 comments on commit b5e9fc3

Please sign in to comment.