From 8426677c5589abba3e1903013eaf14ac41f10cf4 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Wed, 6 Sep 2023 09:44:25 -0700 Subject: [PATCH] fix /controller endpoint --- controller/EmbeddedNetworkController.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp index 85fbb4dc8..a01b68a9d 100644 --- a/controller/EmbeddedNetworkController.cpp +++ b/controller/EmbeddedNetworkController.cpp @@ -867,12 +867,33 @@ void EmbeddedNetworkController::configureHTTPControlPlane( const std::function setContent) { // Control plane Endpoints + std::string controllerPath = "/controller"; std::string networkListPath = "/controller/network"; std::string networkPath = "/controller/network/([0-9a-fA-F]{16})"; std::string oldAndBustedNetworkCreatePath = "/controller/network/([0-9a-fA-F]{10})______"; std::string memberListPath = "/controller/network/([0-9a-fA-F]{16})/member"; std::string memberPath = "/controller/network/([0-9a-fA-F]{16})/member/([0-9a-fA-F]{10})"; + auto controllerGet = [&, setContent](const httplib::Request &req, httplib::Response &res) { + char tmp[4096]; + const bool dbOk = _db.isReady(); + OSUtils::ztsnprintf( + tmp, + sizeof(tmp), + "{\n\t\"controller\": true,\n\t\"apiVersion\": %d,\n\t\"clock\": %llu,\n\t\"databaseReady\": %s\n}\n", + ZT_NETCONF_CONTROLLER_API_VERSION, + (unsigned long long)OSUtils::now(), + dbOk ? "true" : "false"); + + if (!dbOk) { + res.status = 503; + } + + setContent(req, res, tmp); + }; + s.Get(controllerPath, controllerGet); + sv6.Get(controllerPath, controllerGet); + auto networkListGet = [&, setContent](const httplib::Request &req, httplib::Response &res) { std::set networkIds; _db.networks(networkIds);