diff options
| author | Daniil Baturin <daniil@vyos.io> | 2025-11-20 13:14:58 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-20 13:14:58 +0000 |
| commit | b02565cb1ad928926d411fbaa48290c9f347154c (patch) | |
| tree | 8b9e8e734922c66ba7f464eba59d0b7b052308f3 /src | |
| parent | 4f2d7c38ca2a0c35e81e0bf8e9a0e4abdf7fdfcc (diff) | |
| parent | dbff37e91d2168a296509428e40e974479b40d80 (diff) | |
| download | vyos-1x-b02565cb1ad928926d411fbaa48290c9f347154c.tar.gz vyos-1x-b02565cb1ad928926d411fbaa48290c9f347154c.zip | |
Merge pull request #4858 from c-po/login-warning
login: T8024: show user warning for unconfigured RADIUS/TACACS source-address
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/system_login.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/conf_mode/system_login.py b/src/conf_mode/system_login.py index 2d799c064..2692f427f 100755 --- a/src/conf_mode/system_login.py +++ b/src/conf_mode/system_login.py @@ -45,6 +45,7 @@ from vyos.utils.configfs import delete_cli_node from vyos.utils.configfs import add_cli_node from vyos.utils.dict import dict_search from vyos.utils.file import move_recursive +from vyos.utils.network import is_addr_assigned from vyos.utils.permission import chown from vyos.utils.process import cmd from vyos.utils.process import call @@ -212,13 +213,17 @@ def verify(login): verify_vrf(login['radius']) - if 'source_address' in login['radius']: + if addresses := dict_search('radius.source_address', login): ipv4_count = 0 ipv6_count = 0 - for address in login['radius']['source_address']: + radius_vrf = dict_search('radius.vrf', login) + for address in addresses: if is_ipv4(address): ipv4_count += 1 else: ipv6_count += 1 + if not is_addr_assigned(address, vrf=radius_vrf): + Warning(f'Specified RADIUS source-address "{address}" is not assigned!') + if ipv4_count > 1: raise ConfigError('Only one IPv4 source-address can be set!') if ipv6_count > 1: @@ -235,13 +240,18 @@ def verify(login): fail = False if fail: - raise ConfigError('All RADIUS servers are disabled') + raise ConfigError('All TACACS servers are disabled') if tacacs_servers_count > MAX_TACACS_COUNT: raise ConfigError(f'Number of TACACS servers exceeded maximum of {MAX_TACACS_COUNT}!') verify_vrf(login['tacacs']) + if tmp := dict_search('tacacs.source_address', login): + tacacs_vrf = dict_search('tacacs.vrf', login) + if not is_addr_assigned(tmp, vrf=tacacs_vrf): + Warning(f'Specified TACACS source-address "{tmp}" is not assigned!') + if 'max_login_session' in login and 'timeout' not in login: raise ConfigError('"login timeout" must be configured!') |
