diff options
author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2023-12-20 22:01:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-20 22:01:52 +0200 |
commit | 7717ed5c70ba8a5dfc1ad2299e449e98b3ef99d2 (patch) | |
tree | 940a51bcf0086150ea855aacb3fbcaabdb954468 | |
parent | ac170ee4bb0af8189e56d5cf55da36815a7f5046 (diff) | |
parent | 495bf4732439ebd55edfbf6050af8b2064993d86 (diff) | |
download | vyos-1x-7717ed5c70ba8a5dfc1ad2299e449e98b3ef99d2.tar.gz vyos-1x-7717ed5c70ba8a5dfc1ad2299e449e98b3ef99d2.zip |
Merge pull request #2661 from dmbaturin/T5844
Allow the HTTPS API server to start without any configured keys when GraphQL JWT auth is configured
-rwxr-xr-x | src/conf_mode/https.py | 6 | ||||
-rwxr-xr-x | src/services/vyos-http-api-server | 6 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/conf_mode/https.py b/src/conf_mode/https.py index 40b7de557..3dc5dfc01 100755 --- a/src/conf_mode/https.py +++ b/src/conf_mode/https.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # -# Copyright (C) 2019-2022 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 @@ -24,6 +24,7 @@ from time import sleep import vyos.defaults import vyos.certbot_util +from vyos.base import Warning from vyos.config import Config from vyos.configdiff import get_config_diff from vyos.configverify import verify_vrf @@ -193,6 +194,9 @@ def verify(https): if (not valid_keys_exist) and (not jwt_auth): raise ConfigError('At least one HTTPS API key is required unless GraphQL token authentication is enabled') + if (not valid_keys_exist) and jwt_auth: + Warning(f'API keys are not configured: the classic (non-GraphQL) API will be unavailable.') + return None def generate(https): diff --git a/src/services/vyos-http-api-server b/src/services/vyos-http-api-server index bfd50cc80..b64e58132 100755 --- a/src/services/vyos-http-api-server +++ b/src/services/vyos-http-api-server @@ -872,13 +872,15 @@ def initialization(session: ConfigSession, app: FastAPI = app): global server try: server_config = load_server_config() - keys = flatten_keys(server_config) except Exception as e: logger.critical(f'Failed to load the HTTP API server config: {e}') sys.exit(1) app.state.vyos_session = session - app.state.vyos_keys = keys + app.state.vyos_keys = [] + + if 'keys' in server_config: + app.state.vyos_keys = flatten_keys(server_config) app.state.vyos_debug = bool('debug' in server_config) app.state.vyos_strict = bool('strict' in server_config) |