summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/control2
-rwxr-xr-xsrc/services/vyos-http-api-server27
2 files changed, 14 insertions, 15 deletions
diff --git a/debian/control b/debian/control
index 5c176f40a..592d5153d 100644
--- a/debian/control
+++ b/debian/control
@@ -28,7 +28,7 @@ Depends: python3,
python3-isc-dhcp-leases,
python3-hurry.filesize,
python3-vici (>= 5.7.2),
- python3-bottle,
+ python3-flask,
python3-netaddr,
python3-zmq,
cron,
diff --git a/src/services/vyos-http-api-server b/src/services/vyos-http-api-server
index 5cad67eb7..4a653bb66 100755
--- a/src/services/vyos-http-api-server
+++ b/src/services/vyos-http-api-server
@@ -26,7 +26,7 @@ import signal
import vyos.config
-import bottle
+from flask import Flask, request
from functools import wraps
@@ -37,7 +37,7 @@ from vyos.config import VyOSError
DEFAULT_CONFIG_FILE = '/etc/vyos/http-api.conf'
CFG_GROUP = 'vyattacfg'
-app = bottle.default_app()
+app = Flask(__name__)
# Giant lock!
lock = threading.Lock()
@@ -55,9 +55,8 @@ def check_auth(key_list, key):
return id
def error(code, msg):
- bottle.response.status = code
resp = {"success": False, "error": msg, "data": None}
- return json.dumps(resp)
+ return json.dumps(resp), code
def success(data):
resp = {"success": True, "data": data, "error": None}
@@ -66,7 +65,7 @@ def success(data):
def get_command(f):
@wraps(f)
def decorated_function(*args, **kwargs):
- cmd = bottle.request.forms.get("data")
+ cmd = request.form.get("data")
if not cmd:
return error(400, "Non-empty data field is required")
try:
@@ -80,7 +79,7 @@ def get_command(f):
def auth_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
- key = bottle.request.forms.get("key")
+ key = request.form.get("key")
api_keys = app.config['vyos_keys']
id = check_auth(api_keys, key)
if not id:
@@ -89,7 +88,7 @@ def auth_required(f):
return decorated_function
-@app.route('/configure', method='POST')
+@app.route('/configure', methods=['POST'])
@get_command
@auth_required
def configure_op(commands):
@@ -97,7 +96,7 @@ def configure_op(commands):
env = session.get_session_env()
config = vyos.config.Config(session_env=env)
- strict_field = bottle.request.forms.get("strict")
+ strict_field = request.form.get("strict")
if strict_field == "true":
strict = True
else:
@@ -192,7 +191,7 @@ def configure_op(commands):
else:
return success(None)
-@app.route('/retrieve', method='POST')
+@app.route('/retrieve', methods=['POST'])
@get_command
@auth_required
def retrieve_op(command):
@@ -241,7 +240,7 @@ def retrieve_op(command):
return success(res)
-@app.route('/config-file', method='POST')
+@app.route('/config-file', methods=['POST'])
@get_command
@auth_required
def config_file_op(command):
@@ -276,7 +275,7 @@ def config_file_op(command):
return success(res)
-@app.route('/image', method='POST')
+@app.route('/image', methods=['POST'])
@get_command
@auth_required
def image_op(command):
@@ -311,7 +310,7 @@ def image_op(command):
return success(res)
-@app.route('/generate', method='POST')
+@app.route('/generate', methods=['POST'])
@get_command
@auth_required
def generate_op(command):
@@ -339,7 +338,7 @@ def generate_op(command):
return success(res)
-@app.route('/show', method='POST')
+@app.route('/show', methods=['POST'])
@get_command
@auth_required
def show_op(command):
@@ -396,4 +395,4 @@ if __name__ == '__main__':
signal.signal(signal.SIGTERM, sig_handler)
- bottle.run(app, host=server_config["listen_address"], port=server_config["port"], debug=True)
+ app.run(host=server_config["listen_address"], port=server_config["port"], debug=True)