From 508d380b8ef4079d539a3845705f1bf3aeff3a67 Mon Sep 17 00:00:00 2001
From: Matthias Fetzer <fetzerms@users.noreply.github.com>
Date: Wed, 4 Mar 2020 10:43:23 +0100
Subject: http api: T2096: Added show and generate

---
 src/conf_mode/https.py            |  2 +-
 src/services/vyos-http-api-server | 43 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/conf_mode/https.py b/src/conf_mode/https.py
index 84d1a7691..fcbc3d384 100755
--- a/src/conf_mode/https.py
+++ b/src/conf_mode/https.py
@@ -73,7 +73,7 @@ server {
 {% endif %}
 
         # proxy settings for HTTP API, if enabled; 503, if not
-        location ~ /(retrieve|configure|config-file|image) {
+        location ~ /(retrieve|configure|config-file|image|generate|show) {
 {% if server.api %}
                 proxy_pass http://localhost:{{ server.api.port }};
                 proxy_buffering off;
diff --git a/src/services/vyos-http-api-server b/src/services/vyos-http-api-server
index da6e5b118..b5ad8b159 100755
--- a/src/services/vyos-http-api-server
+++ b/src/services/vyos-http-api-server
@@ -308,6 +308,49 @@ def config_file_op():
     return success(res)
 
 
+@app.route('/generate', method='POST')
+@auth_required
+def generate_op():
+    session = app.config['vyos_session']
+
+    command = bottle.request.forms.get("data")
+    command = json.loads(command)
+
+    try:
+        cmd = command['cmd']
+        res = session.generate(cmd)
+    except KeyError:
+        return error(400, "Missing required field \"cmd\"")
+    except VyOSError as e:
+        return error(400, str(e))
+    except Exception as e:
+        print(traceback.format_exc(), file=sys.stderr)
+        return error(500, "An internal error occured. Check the logs for details.")
+
+    return success(res)
+
+@app.route('/show', method='POST')
+@auth_required
+def show_op():
+    session = app.config['vyos_session']
+
+    command = bottle.request.forms.get("data")
+    command = json.loads(command)
+
+    try:
+        cmd = command['cmd']
+        res = session.show(cmd)
+    except KeyError:
+        return error(400, "Missing required field \"cmd\"")
+    except VyOSError as e:
+        return error(400, str(e))
+    except Exception as e:
+        print(traceback.format_exc(), file=sys.stderr)
+        return error(500, "An internal error occured. Check the logs for details.")
+
+    return success(res)
+
+
 if __name__ == '__main__':
     # systemd's user and group options don't work, do it by hand here,
     # else no one else will be able to commit
-- 
cgit v1.2.3