diff options
author | sarthurdev <965089+sarthurdev@users.noreply.github.com> | 2023-12-17 01:25:22 +0100 |
---|---|---|
committer | sarthurdev <965089+sarthurdev@users.noreply.github.com> | 2023-12-17 01:39:26 +0100 |
commit | 8e0a54676ff2ac90b7c24e4f05b05bcebc584bd3 (patch) | |
tree | cded61e59bb7a936d299ab3a8518ca80577a77d8 /python | |
parent | 03202504d559417266e437bbf53eb26ade187c07 (diff) | |
download | vyos-1x-8e0a54676ff2ac90b7c24e4f05b05bcebc584bd3.tar.gz vyos-1x-8e0a54676ff2ac90b7c24e4f05b05bcebc584bd3.zip |
dhcp: T3316: Kea DHCP and DHCPv6 fixes
* Move Kea socket permission change on-demand and speed up conf scripts
* Fix issue with DHCP reservations when no `ip-address` value
Diffstat (limited to 'python')
-rw-r--r-- | python/vyos/kea.py | 17 | ||||
-rw-r--r-- | python/vyos/utils/file.py | 4 |
2 files changed, 17 insertions, 4 deletions
diff --git a/python/vyos/kea.py b/python/vyos/kea.py index cb341e0f2..4a517da5f 100644 --- a/python/vyos/kea.py +++ b/python/vyos/kea.py @@ -23,7 +23,9 @@ from vyos.template import is_ipv6 from vyos.template import isc_static_route from vyos.template import netmask_from_cidr from vyos.utils.dict import dict_search_args +from vyos.utils.file import file_permissions from vyos.utils.file import read_file +from vyos.utils.process import cmd kea4_options = { 'name_server': 'domain-name-servers', @@ -119,10 +121,14 @@ def kea_parse_subnet(subnet, config): if 'disable' in host_config: continue - reservations.append({ - 'hw-address': host_config['mac_address'], - 'ip-address': host_config['ip_address'] - }) + obj = { + 'hw-address': host_config['mac_address'] + } + + if 'ip_address' in host_config: + obj['ip-address'] = host_config['ip_address'] + + reservations.append(obj) out['reservations'] = reservations unifi_controller = dict_search_args(config, 'vendor_option', 'ubiquiti', 'unifi_controller') @@ -275,6 +281,9 @@ def _ctrl_socket_command(path, command, args=None): if not os.path.exists(path): return None + if file_permissions(path) != '0775': + cmd(f'sudo chmod 775 {path}') + with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock: sock.connect(path) diff --git a/python/vyos/utils/file.py b/python/vyos/utils/file.py index 2af87a0ca..70ac1753b 100644 --- a/python/vyos/utils/file.py +++ b/python/vyos/utils/file.py @@ -149,6 +149,10 @@ def chmod_775(path): S_IROTH | S_IXOTH chmod(path, bitmask) +def file_permissions(path): + """ Return file permissions in string format, e.g '0755' """ + return oct(os.stat(path).st_mode)[4:] + def makedir(path, user=None, group=None): if os.path.exists(path): return |