diff options
| -rw-r--r-- | python/vyos/dicts.py | 53 | ||||
| -rw-r--r-- | python/vyos/initialsetup.py | 14 | ||||
| -rw-r--r-- | python/vyos/utils/__init__.py | 1 | ||||
| -rw-r--r-- | python/vyos/utils/auth.py (renamed from python/vyos/authutils.py) | 0 | ||||
| -rw-r--r-- | python/vyos/utils/dict.py | 37 | 
5 files changed, 45 insertions, 60 deletions
| diff --git a/python/vyos/dicts.py b/python/vyos/dicts.py deleted file mode 100644 index b12cda40f..000000000 --- a/python/vyos/dicts.py +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright (C) 2019 VyOS maintainers and contributors -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License version 2 or later as -# published by the Free Software Foundation. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program.  If not, see <http://www.gnu.org/licenses/>. - - -from vyos import ConfigError - - -class FixedDict(dict): -    """ -    FixedDict: A dictionnary not allowing new keys to be created after initialisation. - -    >>> f = FixedDict(**{'count':1}) -    >>> f['count'] = 2 -    >>> f['king'] = 3 -      File "...", line ..., in __setitem__ -    raise ConfigError(f'Option "{k}" has no defined default') -    """ - -    def __init__(self, **options): -        self._allowed = options.keys() -        super().__init__(**options) - -    def __setitem__(self, k, v): -        """ -        __setitem__ is a builtin which is called by python when setting dict values: -        >>> d = dict() -        >>> d['key'] = 'value' -        >>> d -        {'key': 'value'} - -        is syntaxic sugar for - -        >>> d = dict() -        >>> d.__setitem__('key','value') -        >>> d -        {'key': 'value'} -        """ -        if k not in self._allowed: -            raise ConfigError(f'Option "{k}" has no defined default') -        super().__setitem__(k, v) diff --git a/python/vyos/initialsetup.py b/python/vyos/initialsetup.py index 574e7892d..3b280dc6b 100644 --- a/python/vyos/initialsetup.py +++ b/python/vyos/initialsetup.py @@ -1,7 +1,7 @@  # initialsetup -- functions for setting common values in config file,  # for use in installation and first boot scripts  # -# Copyright (C) 2018 VyOS maintainers and contributors +# Copyright (C) 2018-2023 VyOS maintainers and contributors  #  # This library is free software; you can redistribute it and/or modify it under the terms of  # the GNU Lesser General Public License as published by the Free Software Foundation; @@ -12,10 +12,12 @@  # See the GNU Lesser General Public License for more details.  #  # You should have received a copy of the GNU Lesser General Public License along with this library; -# if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  +# if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  import vyos.configtree -import vyos.authutils + +from vyos.utils.auth import make_password_hash +from vyos.utils.auth import split_ssh_public_key  def set_interface_address(config, intf, addr, intf_type="ethernet"):      config.set(["interfaces", intf_type, intf, "address"], value=addr) @@ -35,8 +37,8 @@ def set_default_gateway(config, gateway):  def set_user_password(config, user, password):      # Make a password hash -    hash = vyos.authutils.make_password_hash(password) -  +    hash = make_password_hash(password) +      config.set(["system", "login", "user", user, "authentication", "encrypted-password"], value=hash)      config.set(["system", "login", "user", user, "authentication", "plaintext-password"], value="") @@ -48,7 +50,7 @@ def set_user_level(config, user, level):      config.set(["system", "login", "user", user, "level"], value=level)  def set_user_ssh_key(config, user, key_string): -    key = vyos.authutils.split_ssh_public_key(key_string, defaultname=user) +    key = split_ssh_public_key(key_string, defaultname=user)      config.set(["system", "login", "user", user, "authentication", "public-keys", key["name"], "key"], value=key["data"])      config.set(["system", "login", "user", user, "authentication", "public-keys", key["name"], "type"], value=key["type"]) diff --git a/python/vyos/utils/__init__.py b/python/vyos/utils/__init__.py index 6cca4e935..f2783113a 100644 --- a/python/vyos/utils/__init__.py +++ b/python/vyos/utils/__init__.py @@ -13,6 +13,7 @@  # You should have received a copy of the GNU Lesser General Public  # License along with this library.  If not, see <http://www.gnu.org/licenses/>. +from vyos.utils import auth  from vyos.utils import boot  from vyos.utils import commit  from vyos.utils import convert diff --git a/python/vyos/authutils.py b/python/vyos/utils/auth.py index a59858d72..a59858d72 100644 --- a/python/vyos/authutils.py +++ b/python/vyos/utils/auth.py diff --git a/python/vyos/utils/dict.py b/python/vyos/utils/dict.py index 66fe6dad3..9484eacdd 100644 --- a/python/vyos/utils/dict.py +++ b/python/vyos/utils/dict.py @@ -13,7 +13,6 @@  # You should have received a copy of the GNU Lesser General Public  # License along with this library.  If not, see <http://www.gnu.org/licenses/>. -  def colon_separated_to_dict(data_string, uniquekeys=False):      """ Converts a string containing newline-separated entries          of colon-separated key-value pairs into a dict. @@ -270,3 +269,39 @@ def check_mutually_exclusive_options(d, keys, required=False):      if required and (len(present_keys) < 1):          raise ValueError(f"At least one of the following options is required: {orig_keys}") + +class FixedDict(dict): +    """ +    FixedDict: A dictionnary not allowing new keys to be created after initialisation. + +    >>> f = FixedDict(**{'count':1}) +    >>> f['count'] = 2 +    >>> f['king'] = 3 +      File "...", line ..., in __setitem__ +    raise ConfigError(f'Option "{k}" has no defined default') +    """ + +    from vyos import ConfigError + +    def __init__(self, **options): +        self._allowed = options.keys() +        super().__init__(**options) + +    def __setitem__(self, k, v): +        """ +        __setitem__ is a builtin which is called by python when setting dict values: +        >>> d = dict() +        >>> d['key'] = 'value' +        >>> d +        {'key': 'value'} + +        is syntaxic sugar for + +        >>> d = dict() +        >>> d.__setitem__('key','value') +        >>> d +        {'key': 'value'} +        """ +        if k not in self._allowed: +            raise ConfigError(f'Option "{k}" has no defined default') +        super().__setitem__(k, v) | 
