Skip to content

Commit

Permalink
Merge c4cdf68 into b66494d
Browse files Browse the repository at this point in the history
  • Loading branch information
nemesifier committed May 4, 2023
2 parents b66494d + c4cdf68 commit 2cd04c4
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 4 deletions.
11 changes: 7 additions & 4 deletions netjsonconfig/backends/openwrt/converters/wireguard_peers.py
Expand Up @@ -12,12 +12,15 @@ class WireguardPeers(OpenWrtConverter):

def to_intermediate_loop(self, block, result, index=None):
result.setdefault('network', [])
result['network'].append(self.__intermediate_peer(block))
result['network'].append(self.__intermediate_peer(block, index))
return result

def __intermediate_peer(self, peer):
interface = peer.pop("interface")
peer.update({'.type': f'wireguard_{interface}', '.name': f'wgpeer_{interface}'})
def __intermediate_peer(self, peer, index):
interface = peer.pop('interface')
uci_name = f'wgpeer_{interface}'
if index > 1:
uci_name = f'{uci_name}_{index}'
peer.update({'.type': f'wireguard_{interface}', '.name': uci_name})
if not peer.get('endpoint_host') and 'endpoint_port' in peer:
del peer['endpoint_port']
return self.sorted_dict(peer)
Expand Down
47 changes: 47 additions & 0 deletions tests/openwrt/test_wireguard.py
Expand Up @@ -254,3 +254,50 @@ def test_parse_wireguard_peer(self):
}
o = OpenWrt(native=native)
self.assertEqual(o.config, expected)

_multiple_peers_netjson = {
"wireguard_peers": [
{
"interface": "wg0",
"public_key": "rn+isMBpyQ4HX6ZzE709bKnZw5IaLZoIS3hIjmfKCkk=",
"allowed_ips": ["10.0.0.1/32"],
"preshared_key": "oPZmGdHBseaV1TF0julyElNuJyeKs2Eo+o62R/09IB4=",
"persistent_keepalive": 30,
"route_allowed_ips": True,
},
{
"interface": "wg0",
"public_key": "e8yh3kIrMjLVZPi5DS1BU3j3mWkYWrCXvnLSvNkW7HM=",
"allowed_ips": ["10.0.0.2/32"],
"preshared_key": "oPZmGdHBseaV1TF0julyElNuJyeKs2Eo+o62R/09IB4=",
"persistent_keepalive": 30,
"route_allowed_ips": True,
},
]
}

_multiple_peers_uci = """package network
config wireguard_wg0 'wgpeer_wg0'
list allowed_ips '10.0.0.1/32'
option persistent_keepalive '30'
option preshared_key 'oPZmGdHBseaV1TF0julyElNuJyeKs2Eo+o62R/09IB4='
option public_key 'rn+isMBpyQ4HX6ZzE709bKnZw5IaLZoIS3hIjmfKCkk='
option route_allowed_ips '1'
config wireguard_wg0 'wgpeer_wg0_2'
list allowed_ips '10.0.0.2/32'
option persistent_keepalive '30'
option preshared_key 'oPZmGdHBseaV1TF0julyElNuJyeKs2Eo+o62R/09IB4='
option public_key 'e8yh3kIrMjLVZPi5DS1BU3j3mWkYWrCXvnLSvNkW7HM='
option route_allowed_ips '1'
"""

def test_render_multiple_wireguard_peers(self):
o = OpenWrt(self._multiple_peers_netjson)
expected = self._tabs(self._multiple_peers_uci)
self.assertEqual(o.render(), expected)

def test_parse_multiple_wireguard_peers(self):
o = OpenWrt(native=self._multiple_peers_uci)
self.assertEqual(o.config, self._multiple_peers_netjson)

0 comments on commit 2cd04c4

Please sign in to comment.