diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2026-06-23 18:49:56 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-23 18:49:56 +0300 |
| commit | 8b41d07f918d5f8e182cf2a7a355f568e4512ff3 (patch) | |
| tree | 09592f4a300ba67345a4fef91b9b212f55a693ef | |
| parent | 105c2470df751f9bff280255506640e63204e3bb (diff) | |
| parent | e6c87a4697e2e80f056f745c6321f3015e76ff1b (diff) | |
| download | vyos-1x-8b41d07f918d5f8e182cf2a7a355f568e4512ff3.tar.gz vyos-1x-8b41d07f918d5f8e182cf2a7a355f568e4512ff3.zip | |
Merge pull request #5283 from natali-rs1985/T8998
openvpn: T8998: fix ccd-exclusive without client-config-dir
| -rw-r--r-- | data/templates/openvpn/server.conf.j2 | 2 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_interfaces_openvpn.py | 28 |
2 files changed, 29 insertions, 1 deletions
diff --git a/data/templates/openvpn/server.conf.j2 b/data/templates/openvpn/server.conf.j2 index 19c8e226c..782307e67 100644 --- a/data/templates/openvpn/server.conf.j2 +++ b/data/templates/openvpn/server.conf.j2 @@ -102,7 +102,7 @@ ifconfig-pool {{ server.client_ip_pool.start }} {{ server.client_ip_pool.stop }} {% if server.max_connections is vyos_defined %} max-clients {{ server.max_connections }} {% endif %} -{% if server.client is vyos_defined %} +{% if server.client is vyos_defined or server.reject_unconfigured_clients is vyos_defined %} client-config-dir /run/openvpn/ccd/{{ ifname }} {% endif %} {% endif %} diff --git a/smoketest/scripts/cli/test_interfaces_openvpn.py b/smoketest/scripts/cli/test_interfaces_openvpn.py index b13ced003..28754026e 100755 --- a/smoketest/scripts/cli/test_interfaces_openvpn.py +++ b/smoketest/scripts/cli/test_interfaces_openvpn.py @@ -900,5 +900,33 @@ class TestInterfacesOpenVPN(VyOSUnitTestSHIM.TestCase): self.cli_delete(base_path) self.cli_commit() + def test_openvpn_server_reject_unconfigured_clients(self): + # T8998: reject-unconfigured-clients without server client entries + # must emit both client-config-dir and ccd-exclusive + interface = 'vtun5020' + path = base_path + [interface] + subnet = '10.20.30.0/24' + + self.cli_set(path + ['device-type', 'tun']) + self.cli_set(path + ['mode', 'server']) + self.cli_set(path + ['keep-alive', 'failure-count', '5']) + self.cli_set(path + ['keep-alive', 'interval', '5']) + self.cli_set(path + ['tls', 'ca-certificate', 'ovpn_test']) + self.cli_set(path + ['tls', 'certificate', 'ovpn_test']) + self.cli_set(path + ['tls', 'dh-params', 'ovpn_test']) + self.cli_set(path + ['server', 'subnet', subnet]) + self.cli_set(path + ['server', 'reject-unconfigured-clients']) + + self.cli_commit() + + config_file = f'/run/openvpn/{interface}.conf' + config = read_file(config_file) + + self.assertIn(f'client-config-dir /run/openvpn/ccd/{interface}', config) + self.assertIn('ccd-exclusive', config) + + self.assertTrue(process_named_running(PROCESS_NAME)) + self.assertIn(interface, interfaces()) + if __name__ == '__main__': unittest.main(verbosity=2, failfast=VyOSUnitTestSHIM.TestCase.debug_on()) |
