summaryrefslogtreecommitdiff
path: root/python/vyos
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2019-11-17 21:13:19 +0100
committerChristian Poessinger <christian@poessinger.com>2019-11-17 21:13:19 +0100
commitd3b689ecb951c49dddf0402f36f51a2e0d8216b3 (patch)
tree1048aec8ff2347696643d92a4bf48170936b4201 /python/vyos
parent80375d2be96c53f2fa4a827f93105dc32931401f (diff)
parent4e4f1dbd745952a24d70c3e2d7dc495d675dff34 (diff)
downloadvyos-1x-d3b689ecb951c49dddf0402f36f51a2e0d8216b3.tar.gz
vyos-1x-d3b689ecb951c49dddf0402f36f51a2e0d8216b3.zip
Merge branch 'current' of github.com:vyos/vyos-1x into equuleus
* 'current' of github.com:vyos/vyos-1x: dns: T1786: add proper processing of 'system disable-dhcp-nameservers' openvpn: fix typo in op-mode command on display rx bytes T1801: escape isolated backslashes before passing to ConfigTree() wireless: T1627: fix interface names for list_interfaces.py [service https] T1443: add setting of HTTPS listen port
Diffstat (limited to 'python/vyos')
-rw-r--r--python/vyos/config.py6
-rw-r--r--python/vyos/util.py6
2 files changed, 12 insertions, 0 deletions
diff --git a/python/vyos/config.py b/python/vyos/config.py
index 5bd8fb072..e5963c19a 100644
--- a/python/vyos/config.py
+++ b/python/vyos/config.py
@@ -69,6 +69,7 @@ import json
import subprocess
import vyos.configtree
+import vyos.util
class VyOSError(Exception):
@@ -111,6 +112,11 @@ 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/util.py b/python/vyos/util.py
index 67a602f7a..659a702fd 100644
--- a/python/vyos/util.py
+++ b/python/vyos/util.py
@@ -199,3 +199,9 @@ 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