diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/https.py | 2 | ||||
| -rwxr-xr-x | src/services/vyos-http-api-server | 43 | 
2 files changed, 44 insertions, 1 deletions
| 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 | 
