feat(runtime): add integration hardening and diagnostics
This commit is contained in:
@@ -82,6 +82,20 @@ static esp_err_t send_health(httpd_req_t* request) {
|
||||
return httpd_resp_send(request, response, length);
|
||||
}
|
||||
|
||||
static esp_err_t send_diagnostics(httpd_req_t* request) {
|
||||
maze32_gateway_t* gateway = request->user_ctx;
|
||||
char response[1024];
|
||||
size_t length = maze32_gateway_format_diagnostics(gateway, response, sizeof(response));
|
||||
if (length == 0U) {
|
||||
httpd_resp_send_err(request, HTTPD_500_INTERNAL_SERVER_ERROR,
|
||||
"Диагностика временно недоступна");
|
||||
return ESP_FAIL;
|
||||
}
|
||||
httpd_resp_set_type(request, "application/json");
|
||||
httpd_resp_set_hdr(request, "Cache-Control", "no-store");
|
||||
return httpd_resp_send(request, response, (ssize_t)length);
|
||||
}
|
||||
|
||||
esp_err_t maze32_web_start(httpd_handle_t* server, maze32_health_t* health,
|
||||
maze32_gateway_t* gateway) {
|
||||
if (server == NULL || health == NULL || gateway == NULL) {
|
||||
@@ -89,7 +103,7 @@ esp_err_t maze32_web_start(httpd_handle_t* server, maze32_health_t* health,
|
||||
}
|
||||
|
||||
httpd_config_t configuration = HTTPD_DEFAULT_CONFIG();
|
||||
configuration.max_uri_handlers = 12;
|
||||
configuration.max_uri_handlers = 13;
|
||||
configuration.max_open_sockets = 9;
|
||||
configuration.lru_purge_enable = false;
|
||||
configuration.recv_wait_timeout = 5;
|
||||
@@ -139,6 +153,12 @@ esp_err_t maze32_web_start(httpd_handle_t* server, maze32_health_t* health,
|
||||
.handler = send_health,
|
||||
.user_ctx = health,
|
||||
};
|
||||
const httpd_uri_t diagnostics_uri = {
|
||||
.uri = "/diagnostics",
|
||||
.method = HTTP_GET,
|
||||
.handler = send_diagnostics,
|
||||
.user_ctx = gateway,
|
||||
};
|
||||
|
||||
result = httpd_register_uri_handler(*server, &root);
|
||||
if (result == ESP_OK) {
|
||||
@@ -156,6 +176,9 @@ esp_err_t maze32_web_start(httpd_handle_t* server, maze32_health_t* health,
|
||||
if (result == ESP_OK) {
|
||||
result = httpd_register_uri_handler(*server, &health_uri);
|
||||
}
|
||||
if (result == ESP_OK) {
|
||||
result = httpd_register_uri_handler(*server, &diagnostics_uri);
|
||||
}
|
||||
if (result != ESP_OK) {
|
||||
httpd_stop(*server);
|
||||
*server = NULL;
|
||||
|
||||
Reference in New Issue
Block a user