summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/http-api.py13
-rwxr-xr-xsrc/conf_mode/https.py28
-rwxr-xr-xsrc/services/vyos-http-api-server1
3 files changed, 13 insertions, 29 deletions
diff --git a/src/conf_mode/http-api.py b/src/conf_mode/http-api.py
index 9c062f0aa..7a8ca883e 100755
--- a/src/conf_mode/http-api.py
+++ b/src/conf_mode/http-api.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
-# Copyright (C) 2019 VyOS maintainers and contributors
+# Copyright (C) 2019-2023 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
@@ -59,10 +59,21 @@ def get_config():
key = conf.return_value('keys id {0} key'.format(name))
new_key = { 'id': name, 'key': key }
http_api['api_keys'].append(new_key)
+ else:
+ raise ConfigError('Missing HTTPS API key string for key id "{}"'.format(name))
return http_api
def verify(http_api):
+ if not http_api:
+ return None
+
+ # Verify API server settings, if present
+ keys = http_api['api_keys']
+
+ if not keys:
+ raise ConfigError('At least one HTTPS API key is required')
+
return None
def generate(http_api):
diff --git a/src/conf_mode/https.py b/src/conf_mode/https.py
index af0e85af5..078c2d5f5 100755
--- a/src/conf_mode/https.py
+++ b/src/conf_mode/https.py
@@ -23,7 +23,6 @@ import jinja2
import vyos.defaults
from vyos.config import Config
-from vyos.util import dict_search
from vyos import ConfigError
config_file = '/etc/nginx/sites-available/default'
@@ -136,14 +135,6 @@ def get_config():
if conf.exists('api port'):
port = conf.return_value('api port')
api_data['port'] = port
- if conf.exists('api keys id'):
- for id in conf.list_nodes('api keys id'):
- tmp = {"id": id}
- if conf.exists('api keys id ' + id + ' key'):
- key = conf.return_value('api keys id ' + id + ' key')
- tmp.update({'key':key})
- api_data['api_keys'].append(tmp)
-
if api_data:
for block in server_block_list:
block['api'] = api_data
@@ -152,27 +143,8 @@ def get_config():
return https
def verify(https):
- if https is None:
- return None
-
- # Verify API server settings, if present
- if 'server_block_list' in https:
- for server in https['server_block_list']:
- if 'api' in server:
- keys = dict_search('api.api_keys', server)
-
- # Check for incomplete key configurations in every case
- valid_keys_exist = False
- if keys:
- for k in keys:
- if 'key' not in k:
- raise ConfigError('Missing HTTPS API key string for key id: ' + k['id'])
- else:
- raise ConfigError('At least one HTTPS API key is required!')
-
return None
-
def generate(https):
if https is None:
return None
diff --git a/src/services/vyos-http-api-server b/src/services/vyos-http-api-server
index ecbfe670c..99de6a911 100755
--- a/src/services/vyos-http-api-server
+++ b/src/services/vyos-http-api-server
@@ -24,6 +24,7 @@ import traceback
import threading
import vyos.config
+import vyos.configtree
import bottle