diff options
| author | John Estabrook <jestabro@vyos.io> | 2021-12-13 11:47:12 -0600 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-13 11:47:12 -0600 | 
| commit | 88c38dda4b872d2108156b56538302f4c5058a7e (patch) | |
| tree | 61022da45ce9cbba1865ec36c29ef546cbbf8ee0 /src | |
| parent | 9191455f1d563f34f709b3021fc01b37755201b3 (diff) | |
| parent | 0e3c35e6517f5cfebb4206c735a2ea976a7fd383 (diff) | |
| download | vyos-1x-88c38dda4b872d2108156b56538302f4c5058a7e.tar.gz vyos-1x-88c38dda4b872d2108156b56538302f4c5058a7e.zip  | |
Merge pull request #1105 from jestabro/uds
http-api: T4071: allow API to bind to unix domain socket
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/http-api.py | 11 | ||||
| -rwxr-xr-x | src/conf_mode/https.py | 2 | ||||
| -rwxr-xr-x | src/services/vyos-http-api-server | 14 | 
3 files changed, 18 insertions, 9 deletions
diff --git a/src/conf_mode/http-api.py b/src/conf_mode/http-api.py index 4bfcbeb47..cd0191599 100755 --- a/src/conf_mode/http-api.py +++ b/src/conf_mode/http-api.py @@ -31,7 +31,7 @@ from vyos.util import call  from vyos import airbag  airbag.enable() -config_file = '/etc/vyos/http-api.conf' +api_conf_file = '/etc/vyos/http-api.conf'  vyos_conf_scripts_dir=vyos.defaults.directories['conf_mode'] @@ -55,10 +55,13 @@ def get_config(config=None):          conf.set_level('service https api')      if conf.exists('strict'): -        http_api['strict'] = 'true' +        http_api['strict'] = True      if conf.exists('debug'): -        http_api['debug'] = 'true' +        http_api['debug'] = True + +    if conf.exists('socket'): +        http_api['socket'] = True      if conf.exists('port'):          port = conf.return_value('port') @@ -88,7 +91,7 @@ def generate(http_api):      if not os.path.exists('/etc/vyos'):          os.mkdir('/etc/vyos') -    with open(config_file, 'w') as f: +    with open(api_conf_file, 'w') as f:          json.dump(http_api, f, indent=2)      return None diff --git a/src/conf_mode/https.py b/src/conf_mode/https.py index cd5073aa2..053ee5d4a 100755 --- a/src/conf_mode/https.py +++ b/src/conf_mode/https.py @@ -191,6 +191,8 @@ def generate(https):          vhosts = https.get('api-restrict', {}).get('virtual-host', [])          if vhosts:              api_data['vhost'] = vhosts[:] +        if 'socket' in list(api_settings): +            api_data['socket'] = True      if api_data:          vhost_list = api_data.get('vhost', []) diff --git a/src/services/vyos-http-api-server b/src/services/vyos-http-api-server index aa7ac6708..f79058683 100755 --- a/src/services/vyos-http-api-server +++ b/src/services/vyos-http-api-server @@ -640,15 +640,19 @@ if __name__ == '__main__':      app.state.vyos_session = config_session      app.state.vyos_keys = server_config['api_keys'] -    app.state.vyos_debug = bool(server_config['debug'] == 'true') -    app.state.vyos_strict = bool(server_config['strict'] == 'true') +    app.state.vyos_debug = server_config['debug'] +    app.state.vyos_strict = server_config['strict']      api.graphql.state.settings['app'] = app      try: -        uvicorn.run(app, host=server_config["listen_address"], -                         port=int(server_config["port"]), -                         proxy_headers=True) +        if not server_config['socket']: +            uvicorn.run(app, host=server_config["listen_address"], +                             port=int(server_config["port"]), +                             proxy_headers=True) +        else: +            uvicorn.run(app, uds="/run/api.sock", +                             proxy_headers=True)      except OSError as err:          logger.critical(f"OSError {err}")          sys.exit(1)  | 
