From 9fd73cbcc25437169d1eaf627dd56009cb50d32b Mon Sep 17 00:00:00 2001
From: Dirk Steinkopf <dirk@steinkopf.net>
Date: Sun, 2 Dec 2018 07:49:27 +0100
Subject: T1060: Add webproxy migration script (proxy-bypass -> whitelist).

---
 src/migration-scripts/webproxy/0-to-1 | 39 +++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)
 create mode 100755 src/migration-scripts/webproxy/0-to-1

diff --git a/src/migration-scripts/webproxy/0-to-1 b/src/migration-scripts/webproxy/0-to-1
new file mode 100755
index 000000000..4acabba3e
--- /dev/null
+++ b/src/migration-scripts/webproxy/0-to-1
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+
+# migrate old style `webproxy proxy-bypass 1.2.3.4/24`
+# to new style `webproxy whitelist destination-address 1.2.3.4/24`
+
+import sys
+
+from vyos.configtree import ConfigTree
+
+if len(sys.argv) < 1:
+    print("Must specify file name!")
+    sys.exit(1)
+
+file_name = sys.argv[1]
+
+with open(file_name, 'r') as f:
+    config_file = f.read()
+
+config = ConfigTree(config_file)
+
+cfg_webproxy_base = ['service', 'webproxy']
+if not config.exists(cfg_webproxy_base):
+    # Nothing to do
+    sys.exit(0)
+else:
+    bypass_addresses = config.return_values(cfg_webproxy_base + ['proxy-bypass'])
+    # delete old configuration node
+    config.delete(cfg_webproxy_base + ['proxy-bypass'])
+    for bypass_address in bypass_addresses:
+        # add data to new configuration node
+        config.set(cfg_webproxy_base + ['whitelist', 'destination-address'], value=bypass_address, replace=False)
+
+    # save updated configuration
+    try:
+        with open(file_name, 'w') as f:
+            f.write(config.to_string())
+    except OSError as e:
+        print("Failed to save the modified config: {}".format(e))
+        sys.exit(1)
-- 
cgit v1.2.3