/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
#include "remote/infohandler.hpp"
#include "remote/httputility.hpp"
#include "base/application.hpp"
using namespace icinga;
REGISTER_URLHANDLER("/", InfoHandler);
bool InfoHandler::HandleRequest(
const WaitGroup::Ptr&,
const HttpRequest& request,
HttpResponse& response,
boost::asio::yield_context& yc
)
{
namespace http = boost::beast::http;
auto url = request.Url();
auto user = request.User();
auto params = request.Params();
if (url->GetPath().size() > 2)
return false;
if (request.method() != http::verb::get)
return false;
if (url->GetPath().empty()) {
response.result(http::status::found);
response.set(http::field::location, "/v1");
return true;
}
if (url->GetPath()[0] != "v1" || url->GetPath().size() != 1)
return false;
response.result(http::status::ok);
std::vector You are authenticated as " << user->GetName() << ". ";
if (!permInfo.empty()) {
body << "Your user has the following permissions:Hello from Icinga 2 (Version: "
<< Application::GetAppVersion() << ")!
"
<< "";
for (const String& perm : permInfo) {
body << "
";
} else
body << "Your user does not have any permissions.
More information about API requests is available in the documentation.
)"; } return true; }