diff options
| author | John Estabrook <jestabro@sentrium.io> | 2019-12-03 11:26:12 -0600 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-12-03 11:26:12 -0600 | 
| commit | 3ea9bcedd56b898005ce9c69148347a73f0d5d7e (patch) | |
| tree | da670c6d31d9cef41de2fb21d460e5818cbfd574 /python | |
| parent | 41212805fa9db0db590b8207372a3d2ec7382fef (diff) | |
| parent | 145b937d3d8e3734d987b5486fe861f660c6e79b (diff) | |
| download | vyos-1x-3ea9bcedd56b898005ce9c69148347a73f0d5d7e.tar.gz vyos-1x-3ea9bcedd56b898005ce9c69148347a73f0d5d7e.zip | |
Merge pull request #170 from jestabro/T1801
T1801: move escaping of backslashes into configtree
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/config.py | 6 | ||||
| -rw-r--r-- | python/vyos/configtree.py | 7 | ||||
| -rw-r--r-- | python/vyos/util.py | 6 | 
3 files changed, 7 insertions, 12 deletions
| diff --git a/python/vyos/config.py b/python/vyos/config.py index e6a41a92d..13b2c107e 100644 --- a/python/vyos/config.py +++ b/python/vyos/config.py @@ -69,7 +69,6 @@ import json  import subprocess  import vyos.configtree -import vyos.util  class VyOSError(Exception): @@ -112,11 +111,6 @@ class Config(object):          else:              session_config_text = running_config_text -        # The output of showConfig does not escape backslashes, as is expected -        # by ConfigTree(). -        session_config_text = vyos.util.escape_backslash(session_config_text) -        running_config_text = vyos.util.escape_backslash(running_config_text) -          self._session_config = vyos.configtree.ConfigTree(session_config_text)          self._running_config = vyos.configtree.ConfigTree(running_config_text) diff --git a/python/vyos/configtree.py b/python/vyos/configtree.py index 77cffe90b..0274f3573 100644 --- a/python/vyos/configtree.py +++ b/python/vyos/configtree.py @@ -18,6 +18,12 @@ import json  from ctypes import cdll, c_char_p, c_void_p, c_int +def escape_backslash(string: str) -> str: +    """Escape single backslashes in string that are not in escape sequence""" +    p = re.compile(r'(?<!\\)[\\](?!b|f|n|r|t|\\[^bfnrt])') +    result = p.sub(r'\\\\', string) +    return result +  def strip_comments(s):      """ Split a config string into the config section and the trailing comments """      INITIAL = 0 @@ -169,6 +175,7 @@ class ConfigTree(object):          self.__destroy.argtypes = [c_void_p]          config_section, comments_section = strip_comments(config_string) +        config_section = escape_backslash(config_section)          config = self.__from_string(config_section.encode())          if config is None:              msg = self.__get_error().decode() diff --git a/python/vyos/util.py b/python/vyos/util.py index 659a702fd..67a602f7a 100644 --- a/python/vyos/util.py +++ b/python/vyos/util.py @@ -199,9 +199,3 @@ def is_admin() -> bool:      current_user = getpass.getuser()      (_, _, _, admin_group_members) = grp.getgrnam('sudo')      return current_user in admin_group_members - -def escape_backslash(string: str) -> str: -    """Escape single backslashes in string that are not in escape sequence""" -    p = re.compile(r'(?<!\\)[\\](?!b|f|n|r|t|\\[^bfnrt])') -    result = p.sub(r'\\\\', string) -    return result | 
