From c95834d05acc47cf5abfc5d4aa3131fd18a21d7f Mon Sep 17 00:00:00 2001 From: Gabriel Levcovitz Date: Thu, 3 Aug 2023 13:19:08 -0300 Subject: [PATCH] chore(event-queue): update event endpoints visibility to public --- hathor/cli/nginx_config.py | 16 ++++++++++++++++ hathor/cli/openapi_files/register.py | 1 + hathor/event/resources/event.py | 18 +++++++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/hathor/cli/nginx_config.py b/hathor/cli/nginx_config.py index f8d70fc39..d441a4842 100644 --- a/hathor/cli/nginx_config.py +++ b/hathor/cli/nginx_config.py @@ -199,11 +199,15 @@ def generate_nginx_config(openapi: dict[str, Any], *, out_file: TextIO, rate_k: websocket_max_conn_per_ip = 10000 mining_websocket_max_conn_global = 1000 mining_websocket_max_conn_per_ip = 1000 + event_websocket_max_conn_global = 1000 + event_websocket_max_conn_per_ip = 1000 else: websocket_max_conn_global = 4000 websocket_max_conn_per_ip = 10 mining_websocket_max_conn_global = 100 mining_websocket_max_conn_per_ip = 4 + event_websocket_max_conn_global = 100 + event_websocket_max_conn_per_ip = 4 header = f'''# THIS FILE WAS AUTOGENERATED BY THE `hathor-cli nginx-config` TOOL AT {datetime.now()} @@ -231,6 +235,8 @@ def generate_nginx_config(openapi: dict[str, Any], *, out_file: TextIO, rate_k: limit_conn_zone $per_ip_key zone=per_ip__ws:10m; limit_conn_zone $global_key zone=global__mining_ws:32k; limit_conn_zone $per_ip_key zone=per_ip__mining_ws:10m; +limit_conn_zone $global_key zone=global__event_ws:32k; +limit_conn_zone $per_ip_key zone=per_ip__event_ws:10m; ''' server_open = f''' @@ -282,6 +288,16 @@ def generate_nginx_config(openapi: dict[str, Any], *, out_file: TextIO, rate_k: proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://backend; + }} + location ~ ^/{api_prefix}/event_ws/?$ {{ + limit_conn global__event_ws {event_websocket_max_conn_global}; + limit_conn per_ip__event_ws {event_websocket_max_conn_per_ip}; + include cors_params; + include proxy_params; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_pass http://backend; }}''' # TODO: maybe return 403 instead? server_close = f''' diff --git a/hathor/cli/openapi_files/register.py b/hathor/cli/openapi_files/register.py index 84e67309d..733f56848 100644 --- a/hathor/cli/openapi_files/register.py +++ b/hathor/cli/openapi_files/register.py @@ -34,6 +34,7 @@ def register_resource(resource_class: ResourceClass) -> ResourceClass: def get_registered_resources() -> list[type[Resource]]: """ Returns a list with all the resources registered for the docs """ + import hathor.event.resources.event # noqa: 401 import hathor.feature_activation.resources.feature # noqa: 401 import hathor.p2p.resources # noqa: 401 import hathor.profiler.resources # noqa: 401 diff --git a/hathor/event/resources/event.py b/hathor/event/resources/event.py index b3b7dac38..b3fd588ab 100644 --- a/hathor/event/resources/event.py +++ b/hathor/event/resources/event.py @@ -76,7 +76,23 @@ class GetEventsResponse(Response): EventResource.openapi = { '/event': { - 'x-visibility': 'private', + 'x-visibility': 'public', + 'x-rate-limit': { + 'global': [ + { + 'rate': '50r/s', + 'burst': 100, + 'delay': 50 + } + ], + 'per-ip': [ + { + 'rate': '1r/s', + 'burst': 10, + 'delay': 3 + } + ] + }, 'get': { 'operationId': 'event', 'summary': 'Hathor Events',