diff options
author | msherbakov <msherbakov@yandex-team.ru> | 2022-02-10 16:49:17 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:49:17 +0300 |
commit | a0ffafe83b7d6229709a32fa942c71d672ac989c (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp/monlib/service | |
parent | c224a621661ddd69699f9476922eb316607ef57e (diff) | |
download | ydb-a0ffafe83b7d6229709a32fa942c71d672ac989c.tar.gz |
Restoring authorship annotation for <msherbakov@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/monlib/service')
26 files changed, 403 insertions, 403 deletions
diff --git a/library/cpp/monlib/service/auth.cpp b/library/cpp/monlib/service/auth.cpp index 1b5e48e261..ddabcfbbf7 100644 --- a/library/cpp/monlib/service/auth.cpp +++ b/library/cpp/monlib/service/auth.cpp @@ -1,22 +1,22 @@ -#include "auth.h" - -#include <util/generic/hash_set.h> - - -namespace NMonitoring { -namespace { - class TFakeAuthProvider final: public IAuthProvider { - public: - TAuthResult Check(const IHttpRequest&) override { - return TAuthResult::Ok(); - } - }; - -} // namespace - -THolder<IAuthProvider> CreateFakeAuth() { +#include "auth.h" + +#include <util/generic/hash_set.h> + + +namespace NMonitoring { +namespace { + class TFakeAuthProvider final: public IAuthProvider { + public: + TAuthResult Check(const IHttpRequest&) override { + return TAuthResult::Ok(); + } + }; + +} // namespace + +THolder<IAuthProvider> CreateFakeAuth() { return MakeHolder<TFakeAuthProvider>(); -} - - -} // namespace NMonitoring +} + + +} // namespace NMonitoring diff --git a/library/cpp/monlib/service/auth.h b/library/cpp/monlib/service/auth.h index 884fe6cf5b..ae53b8bd8e 100644 --- a/library/cpp/monlib/service/auth.h +++ b/library/cpp/monlib/service/auth.h @@ -1,48 +1,48 @@ -#pragma once - -#include "mon_service_http_request.h" - -namespace NMonitoring { - enum class EAuthType { - None = 0, - Tvm = 1, - }; - - struct TAuthResult { - enum class EStatus { - NoCredentials = 0, - Denied, - Ok, - }; - - TAuthResult(EStatus status) - : Status{status} - { - } - - static TAuthResult Denied() { - return TAuthResult(EStatus::Denied); - } - - static TAuthResult NoCredentials() { - return TAuthResult(EStatus::NoCredentials); - } - - static TAuthResult Ok() { - return TAuthResult(EStatus::Ok); - } - - explicit operator bool() const { - return Status == EStatus::Ok; - } - - EStatus Status{EStatus::NoCredentials}; - }; - - struct IAuthProvider { - virtual ~IAuthProvider() = default; - virtual TAuthResult Check(const IHttpRequest& req) = 0; - }; - - THolder<IAuthProvider> CreateFakeAuth(); -} // namespace NMonitoring +#pragma once + +#include "mon_service_http_request.h" + +namespace NMonitoring { + enum class EAuthType { + None = 0, + Tvm = 1, + }; + + struct TAuthResult { + enum class EStatus { + NoCredentials = 0, + Denied, + Ok, + }; + + TAuthResult(EStatus status) + : Status{status} + { + } + + static TAuthResult Denied() { + return TAuthResult(EStatus::Denied); + } + + static TAuthResult NoCredentials() { + return TAuthResult(EStatus::NoCredentials); + } + + static TAuthResult Ok() { + return TAuthResult(EStatus::Ok); + } + + explicit operator bool() const { + return Status == EStatus::Ok; + } + + EStatus Status{EStatus::NoCredentials}; + }; + + struct IAuthProvider { + virtual ~IAuthProvider() = default; + virtual TAuthResult Check(const IHttpRequest& req) = 0; + }; + + THolder<IAuthProvider> CreateFakeAuth(); +} // namespace NMonitoring diff --git a/library/cpp/monlib/service/format.cpp b/library/cpp/monlib/service/format.cpp index 198ab7a42a..b0d6a10246 100644 --- a/library/cpp/monlib/service/format.cpp +++ b/library/cpp/monlib/service/format.cpp @@ -1 +1 @@ -#include "format.h" +#include "format.h" diff --git a/library/cpp/monlib/service/format.h b/library/cpp/monlib/service/format.h index d004f73bf1..0044b586b1 100644 --- a/library/cpp/monlib/service/format.h +++ b/library/cpp/monlib/service/format.h @@ -1,86 +1,86 @@ -#pragma once - +#pragma once + #include <library/cpp/monlib/encode/format.h> - -#include <util/string/ascii.h> -#include <util/generic/yexception.h> -#include <util/generic/typetraits.h> - -namespace NMonitoring { - namespace NPrivate { - Y_HAS_MEMBER(Name, Name); - Y_HAS_MEMBER(second, Second); - } // namespace NPrivate - - template <typename TRequest> - ECompression ParseCompression(const TRequest& req) { - auto&& headers = req.GetHeaders(); - - constexpr auto isPlainPair = NPrivate::THasSecond<std::decay_t<decltype(*headers.begin())>>::value; - - auto it = FindIf(std::begin(headers), std::end(headers), + +#include <util/string/ascii.h> +#include <util/generic/yexception.h> +#include <util/generic/typetraits.h> + +namespace NMonitoring { + namespace NPrivate { + Y_HAS_MEMBER(Name, Name); + Y_HAS_MEMBER(second, Second); + } // namespace NPrivate + + template <typename TRequest> + ECompression ParseCompression(const TRequest& req) { + auto&& headers = req.GetHeaders(); + + constexpr auto isPlainPair = NPrivate::THasSecond<std::decay_t<decltype(*headers.begin())>>::value; + + auto it = FindIf(std::begin(headers), std::end(headers), [=] (const auto& h) { - if constexpr (NPrivate::THasName<std::decay_t<decltype(h)>>::value) { + if constexpr (NPrivate::THasName<std::decay_t<decltype(h)>>::value) { return AsciiCompareIgnoreCase(h.Name(), TStringBuf("accept-encoding")) == 0; - } else if (isPlainPair) { + } else if (isPlainPair) { return AsciiCompareIgnoreCase(h.first, TStringBuf("accept-encoding")) == 0; - } - }); - - if (it == std::end(headers)) { - return NMonitoring::ECompression::IDENTITY; - } - - NMonitoring::ECompression val{}; - if constexpr (isPlainPair) { - val = CompressionFromAcceptEncodingHeader(it->second); - } else { - val = CompressionFromAcceptEncodingHeader(it->Value()); - } - - return val != NMonitoring::ECompression::UNKNOWN - ? val - : NMonitoring::ECompression::IDENTITY; - } - - template <typename TRequest> - NMonitoring::EFormat ParseFormat(const TRequest& req) { - auto&& formatStr = req.GetParams() + } + }); + + if (it == std::end(headers)) { + return NMonitoring::ECompression::IDENTITY; + } + + NMonitoring::ECompression val{}; + if constexpr (isPlainPair) { + val = CompressionFromAcceptEncodingHeader(it->second); + } else { + val = CompressionFromAcceptEncodingHeader(it->Value()); + } + + return val != NMonitoring::ECompression::UNKNOWN + ? val + : NMonitoring::ECompression::IDENTITY; + } + + template <typename TRequest> + NMonitoring::EFormat ParseFormat(const TRequest& req) { + auto&& formatStr = req.GetParams() .Get(TStringBuf("format")); - + if (!formatStr.empty()) { if (formatStr == TStringBuf("SPACK")) { - return EFormat::SPACK; + return EFormat::SPACK; } else if (formatStr == TStringBuf("TEXT")) { - return EFormat::TEXT; + return EFormat::TEXT; } else if (formatStr == TStringBuf("JSON")) { - return EFormat::JSON; - } else { - ythrow yexception() << "unknown format: " << formatStr << ". Only spack is supported here"; - } - } - - auto&& headers = req.GetHeaders(); - constexpr auto isPlainPair = NPrivate::THasSecond<std::decay_t<decltype(*headers.begin())>>::value; - - auto it = FindIf(std::begin(headers), std::end(headers), + return EFormat::JSON; + } else { + ythrow yexception() << "unknown format: " << formatStr << ". Only spack is supported here"; + } + } + + auto&& headers = req.GetHeaders(); + constexpr auto isPlainPair = NPrivate::THasSecond<std::decay_t<decltype(*headers.begin())>>::value; + + auto it = FindIf(std::begin(headers), std::end(headers), [=] (const auto& h) { - if constexpr (NPrivate::THasName<std::decay_t<decltype(h)>>::value) { + if constexpr (NPrivate::THasName<std::decay_t<decltype(h)>>::value) { return AsciiCompareIgnoreCase(h.Name(), TStringBuf("accept")) == 0; - } else if (isPlainPair) { + } else if (isPlainPair) { return AsciiCompareIgnoreCase(h.first, TStringBuf("accept")) == 0; - } - }); - - if (it != std::end(headers)) { - if constexpr (isPlainPair) { - return FormatFromAcceptHeader(it->second); - } else { - return FormatFromAcceptHeader(it->Value()); - } - } - - return EFormat::UNKNOWN; - } - -} // namespace NMonitoring + } + }); + + if (it != std::end(headers)) { + if constexpr (isPlainPair) { + return FormatFromAcceptHeader(it->second); + } else { + return FormatFromAcceptHeader(it->Value()); + } + } + + return EFormat::UNKNOWN; + } + +} // namespace NMonitoring diff --git a/library/cpp/monlib/service/mon_service_http_request.cpp b/library/cpp/monlib/service/mon_service_http_request.cpp index f2ab7b4553..5d805631d9 100644 --- a/library/cpp/monlib/service/mon_service_http_request.cpp +++ b/library/cpp/monlib/service/mon_service_http_request.cpp @@ -3,45 +3,45 @@ using namespace NMonitoring; -IMonHttpRequest::~IMonHttpRequest() { -} - -TMonService2HttpRequest::~TMonService2HttpRequest() { -} - +IMonHttpRequest::~IMonHttpRequest() { +} + +TMonService2HttpRequest::~TMonService2HttpRequest() { +} + TString TMonService2HttpRequest::GetServiceTitle() const { return MonService->GetTitle(); } -IOutputStream& TMonService2HttpRequest::Output() { - return *Out; -} - -HTTP_METHOD TMonService2HttpRequest::GetMethod() const { - return HttpRequest->GetMethod(); -} - -TStringBuf TMonService2HttpRequest::GetPathInfo() const { - return PathInfo; -} - -TStringBuf TMonService2HttpRequest::GetPath() const { - return HttpRequest->GetPath(); -} - -TStringBuf TMonService2HttpRequest::GetUri() const { - return HttpRequest->GetURI(); -} - -const TCgiParameters& TMonService2HttpRequest::GetParams() const { - return HttpRequest->GetParams(); -} - -const TCgiParameters& TMonService2HttpRequest::GetPostParams() const { - return HttpRequest->GetPostParams(); -} - -TStringBuf TMonService2HttpRequest::GetHeader(TStringBuf name) const { +IOutputStream& TMonService2HttpRequest::Output() { + return *Out; +} + +HTTP_METHOD TMonService2HttpRequest::GetMethod() const { + return HttpRequest->GetMethod(); +} + +TStringBuf TMonService2HttpRequest::GetPathInfo() const { + return PathInfo; +} + +TStringBuf TMonService2HttpRequest::GetPath() const { + return HttpRequest->GetPath(); +} + +TStringBuf TMonService2HttpRequest::GetUri() const { + return HttpRequest->GetURI(); +} + +const TCgiParameters& TMonService2HttpRequest::GetParams() const { + return HttpRequest->GetParams(); +} + +const TCgiParameters& TMonService2HttpRequest::GetPostParams() const { + return HttpRequest->GetPostParams(); +} + +TStringBuf TMonService2HttpRequest::GetHeader(TStringBuf name) const { const THttpHeaders& headers = HttpRequest->GetHeaders(); const THttpInputHeader* header = headers.FindHeader(name); if (header != nullptr) { @@ -50,15 +50,15 @@ TStringBuf TMonService2HttpRequest::GetHeader(TStringBuf name) const { return TStringBuf(); } -const THttpHeaders& TMonService2HttpRequest::GetHeaders() const { - return HttpRequest->GetHeaders(); -} +const THttpHeaders& TMonService2HttpRequest::GetHeaders() const { + return HttpRequest->GetHeaders(); +} TString TMonService2HttpRequest::GetRemoteAddr() const { return HttpRequest->GetRemoteAddr(); } -TStringBuf TMonService2HttpRequest::GetCookie(TStringBuf name) const { +TStringBuf TMonService2HttpRequest::GetCookie(TStringBuf name) const { TStringBuf cookie = GetHeader("Cookie"); size_t size = cookie.size(); size_t start = 0; diff --git a/library/cpp/monlib/service/mon_service_http_request.h b/library/cpp/monlib/service/mon_service_http_request.h index 8409205732..b4f2f8f0c5 100644 --- a/library/cpp/monlib/service/mon_service_http_request.h +++ b/library/cpp/monlib/service/mon_service_http_request.h @@ -8,32 +8,32 @@ namespace NMonitoring { class TMonService2; class IMonPage; - // XXX: IHttpRequest is already taken - struct IMonHttpRequest { - virtual ~IMonHttpRequest(); - - virtual IOutputStream& Output() = 0; - - virtual HTTP_METHOD GetMethod() const = 0; - virtual TStringBuf GetPath() const = 0; - virtual TStringBuf GetPathInfo() const = 0; - virtual TStringBuf GetUri() const = 0; - virtual const TCgiParameters& GetParams() const = 0; - virtual const TCgiParameters& GetPostParams() const = 0; - virtual TStringBuf GetPostContent() const = 0; - virtual const THttpHeaders& GetHeaders() const = 0; - virtual TStringBuf GetHeader(TStringBuf name) const = 0; - virtual TStringBuf GetCookie(TStringBuf name) const = 0; + // XXX: IHttpRequest is already taken + struct IMonHttpRequest { + virtual ~IMonHttpRequest(); + + virtual IOutputStream& Output() = 0; + + virtual HTTP_METHOD GetMethod() const = 0; + virtual TStringBuf GetPath() const = 0; + virtual TStringBuf GetPathInfo() const = 0; + virtual TStringBuf GetUri() const = 0; + virtual const TCgiParameters& GetParams() const = 0; + virtual const TCgiParameters& GetPostParams() const = 0; + virtual TStringBuf GetPostContent() const = 0; + virtual const THttpHeaders& GetHeaders() const = 0; + virtual TStringBuf GetHeader(TStringBuf name) const = 0; + virtual TStringBuf GetCookie(TStringBuf name) const = 0; virtual TString GetRemoteAddr() const = 0; - - virtual TString GetServiceTitle() const = 0; - - virtual IMonPage* GetPage() const = 0; - - virtual IMonHttpRequest* MakeChild(IMonPage* page, const TString& pathInfo) const = 0; - }; - - struct TMonService2HttpRequest: IMonHttpRequest { + + virtual TString GetServiceTitle() const = 0; + + virtual IMonPage* GetPage() const = 0; + + virtual IMonHttpRequest* MakeChild(IMonPage* page, const TString& pathInfo) const = 0; + }; + + struct TMonService2HttpRequest: IMonHttpRequest { IOutputStream* const Out; const IHttpRequest* const HttpRequest; TMonService2* const MonService; @@ -55,36 +55,36 @@ namespace NMonitoring { { } - ~TMonService2HttpRequest() override; - - IOutputStream& Output() override; - HTTP_METHOD GetMethod() const override; - TStringBuf GetPath() const override; - TStringBuf GetPathInfo() const override; - TStringBuf GetUri() const override; - const TCgiParameters& GetParams() const override; - const TCgiParameters& GetPostParams() const override; - TStringBuf GetPostContent() const override { - return HttpRequest->GetPostContent(); - } - - TStringBuf GetHeader(TStringBuf name) const override; - TStringBuf GetCookie(TStringBuf name) const override; - const THttpHeaders& GetHeaders() const override; + ~TMonService2HttpRequest() override; + + IOutputStream& Output() override; + HTTP_METHOD GetMethod() const override; + TStringBuf GetPath() const override; + TStringBuf GetPathInfo() const override; + TStringBuf GetUri() const override; + const TCgiParameters& GetParams() const override; + const TCgiParameters& GetPostParams() const override; + TStringBuf GetPostContent() const override { + return HttpRequest->GetPostContent(); + } + + TStringBuf GetHeader(TStringBuf name) const override; + TStringBuf GetCookie(TStringBuf name) const override; + const THttpHeaders& GetHeaders() const override; TString GetRemoteAddr() const override; - IMonPage* GetPage() const override { - return MonPage; - } - - TMonService2HttpRequest* MakeChild(IMonPage* page, const TString& pathInfo) const override { - return new TMonService2HttpRequest{ - Out, HttpRequest, MonService, page, - pathInfo, const_cast<TMonService2HttpRequest*>(this) - }; - } - - TString GetServiceTitle() const override; + IMonPage* GetPage() const override { + return MonPage; + } + + TMonService2HttpRequest* MakeChild(IMonPage* page, const TString& pathInfo) const override { + return new TMonService2HttpRequest{ + Out, HttpRequest, MonService, page, + pathInfo, const_cast<TMonService2HttpRequest*>(this) + }; + } + + TString GetServiceTitle() const override; }; } diff --git a/library/cpp/monlib/service/monservice.cpp b/library/cpp/monlib/service/monservice.cpp index a91df09517..d1b9cda1d2 100644 --- a/library/cpp/monlib/service/monservice.cpp +++ b/library/cpp/monlib/service/monservice.cpp @@ -12,40 +12,40 @@ using namespace NMonitoring; -TMonService2::TMonService2(ui16 port, const TString& host, ui32 threads, const TString& title, THolder<IAuthProvider> auth) - : TMonService2(HttpServerOptions(port, host, threads), title, std::move(auth)) +TMonService2::TMonService2(ui16 port, const TString& host, ui32 threads, const TString& title, THolder<IAuthProvider> auth) + : TMonService2(HttpServerOptions(port, host, threads), title, std::move(auth)) { } -TMonService2::TMonService2(const THttpServerOptions& options, const TString& title, THolder<IAuthProvider> auth) +TMonService2::TMonService2(const THttpServerOptions& options, const TString& title, THolder<IAuthProvider> auth) : NMonitoring::TMtHttpServer(options, std::bind(&TMonService2::ServeRequest, this, std::placeholders::_1, std::placeholders::_2)) , Title(title) , IndexMonPage(new TIndexMonPage("", Title)) - , AuthProvider_{std::move(auth)} + , AuthProvider_{std::move(auth)} { Y_VERIFY(!!title); time_t t = time(nullptr); ctime_r(&t, StartTime); } -TMonService2::TMonService2(const THttpServerOptions& options, TSimpleSharedPtr<IThreadPool> pool, const TString& title, THolder<IAuthProvider> auth) +TMonService2::TMonService2(const THttpServerOptions& options, TSimpleSharedPtr<IThreadPool> pool, const TString& title, THolder<IAuthProvider> auth) : NMonitoring::TMtHttpServer(options, std::bind(&TMonService2::ServeRequest, this, std::placeholders::_1, std::placeholders::_2), std::move(pool)) , Title(title) , IndexMonPage(new TIndexMonPage("", Title)) - , AuthProvider_{std::move(auth)} + , AuthProvider_{std::move(auth)} { Y_VERIFY(!!title); time_t t = time(nullptr); ctime_r(&t, StartTime); } -TMonService2::TMonService2(ui16 port, ui32 threads, const TString& title, THolder<IAuthProvider> auth) - : TMonService2(port, TString(), threads, title, std::move(auth)) +TMonService2::TMonService2(ui16 port, ui32 threads, const TString& title, THolder<IAuthProvider> auth) + : TMonService2(port, TString(), threads, title, std::move(auth)) { } -TMonService2::TMonService2(ui16 port, const TString& title, THolder<IAuthProvider> auth) - : TMonService2(port, TString(), 0, title, std::move(auth)) +TMonService2::TMonService2(ui16 port, const TString& title, THolder<IAuthProvider> auth) + : TMonService2(port, TString(), 0, title, std::move(auth)) { } @@ -80,21 +80,21 @@ void TMonService2::OutputIndexBody(IOutputStream& out) { void TMonService2::ServeRequest(IOutputStream& out, const NMonitoring::IHttpRequest& request) { TString path = request.GetPath(); Y_VERIFY(path.StartsWith('/')); - - if (AuthProvider_) { - const auto authResult = AuthProvider_->Check(request); - switch (authResult.Status) { - case TAuthResult::EStatus::NoCredentials: - out << HTTPUNAUTHORIZED; - return; - case TAuthResult::EStatus::Denied: - out << HTTPFORBIDDEN; - return; - case TAuthResult::EStatus::Ok: - break; - } - } - + + if (AuthProvider_) { + const auto authResult = AuthProvider_->Check(request); + switch (authResult.Status) { + case TAuthResult::EStatus::NoCredentials: + out << HTTPUNAUTHORIZED; + return; + case TAuthResult::EStatus::Denied: + out << HTTPFORBIDDEN; + return; + case TAuthResult::EStatus::Ok: + break; + } + } + if (path == "/") { OutputIndexPage(out); } else { @@ -108,10 +108,10 @@ void TMonService2::Register(IMonPage* page) { IndexMonPage->Register(page); } -void TMonService2::Register(TMonPagePtr page) { +void TMonService2::Register(TMonPagePtr page) { IndexMonPage->Register(std::move(page)); -} - +} + TIndexMonPage* TMonService2::RegisterIndexPage(const TString& path, const TString& title) { return IndexMonPage->RegisterIndexPage(path, title); } diff --git a/library/cpp/monlib/service/monservice.h b/library/cpp/monlib/service/monservice.h index d2bd11d568..8f5e52fcdb 100644 --- a/library/cpp/monlib/service/monservice.h +++ b/library/cpp/monlib/service/monservice.h @@ -1,7 +1,7 @@ #pragma once #include "service.h" -#include "auth.h" +#include "auth.h" #include "mon_service_http_request.h" #include <library/cpp/monlib/service/pages/index_mon_page.h> @@ -17,7 +17,7 @@ namespace NMonitoring { const TString Title; char StartTime[26]; TIntrusivePtr<TIndexMonPage> IndexMonPage; - THolder<IAuthProvider> AuthProvider_; + THolder<IAuthProvider> AuthProvider_; public: static THttpServerOptions HttpServerOptions(ui16 port, const TString& host, ui32 threads) { @@ -38,11 +38,11 @@ namespace NMonitoring { } public: - explicit TMonService2(ui16 port, const TString& title = GetProgramName(), THolder<IAuthProvider> auth = nullptr); - explicit TMonService2(ui16 port, ui32 threads, const TString& title = GetProgramName(), THolder<IAuthProvider> auth = nullptr); - explicit TMonService2(ui16 port, const TString& host, ui32 threads, const TString& title = GetProgramName(), THolder<IAuthProvider> auth = nullptr); - explicit TMonService2(const THttpServerOptions& options, const TString& title = GetProgramName(), THolder<IAuthProvider> auth = nullptr); - explicit TMonService2(const THttpServerOptions& options, TSimpleSharedPtr<IThreadPool> pool, const TString& title = GetProgramName(), THolder<IAuthProvider> auth = nullptr); + explicit TMonService2(ui16 port, const TString& title = GetProgramName(), THolder<IAuthProvider> auth = nullptr); + explicit TMonService2(ui16 port, ui32 threads, const TString& title = GetProgramName(), THolder<IAuthProvider> auth = nullptr); + explicit TMonService2(ui16 port, const TString& host, ui32 threads, const TString& title = GetProgramName(), THolder<IAuthProvider> auth = nullptr); + explicit TMonService2(const THttpServerOptions& options, const TString& title = GetProgramName(), THolder<IAuthProvider> auth = nullptr); + explicit TMonService2(const THttpServerOptions& options, TSimpleSharedPtr<IThreadPool> pool, const TString& title = GetProgramName(), THolder<IAuthProvider> auth = nullptr); ~TMonService2() override { } @@ -61,8 +61,8 @@ namespace NMonitoring { virtual void OutputIndexBody(IOutputStream& out); void Register(IMonPage* page); - void Register(TMonPagePtr page); - + void Register(TMonPagePtr page); + TIndexMonPage* RegisterIndexPage(const TString& path, const TString& title); IMonPage* FindPage(const TString& relativePath); diff --git a/library/cpp/monlib/service/pages/diag_mon_page.cpp b/library/cpp/monlib/service/pages/diag_mon_page.cpp index a3b5292e56..2493ff4fba 100644 --- a/library/cpp/monlib/service/pages/diag_mon_page.cpp +++ b/library/cpp/monlib/service/pages/diag_mon_page.cpp @@ -2,8 +2,8 @@ using namespace NMonitoring; -void TDiagMonPage::OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest& request) { - out << "uri: " << request.GetUri() << "\n"; - out << "path: " << request.GetPath() << "\n"; - out << "path info: " << request.GetPathInfo() << "\n"; +void TDiagMonPage::OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest& request) { + out << "uri: " << request.GetUri() << "\n"; + out << "path: " << request.GetPath() << "\n"; + out << "path info: " << request.GetPathInfo() << "\n"; } diff --git a/library/cpp/monlib/service/pages/diag_mon_page.h b/library/cpp/monlib/service/pages/diag_mon_page.h index a0eb154ba5..761194d4ec 100644 --- a/library/cpp/monlib/service/pages/diag_mon_page.h +++ b/library/cpp/monlib/service/pages/diag_mon_page.h @@ -10,7 +10,7 @@ namespace NMonitoring { { } - void OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) override; + void OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) override; }; } diff --git a/library/cpp/monlib/service/pages/html_mon_page.cpp b/library/cpp/monlib/service/pages/html_mon_page.cpp index f37d0a961b..eb4eb3b66c 100644 --- a/library/cpp/monlib/service/pages/html_mon_page.cpp +++ b/library/cpp/monlib/service/pages/html_mon_page.cpp @@ -4,8 +4,8 @@ using namespace NMonitoring; -void THtmlMonPage::Output(NMonitoring::IMonHttpRequest& request) { - IOutputStream& out = request.Output(); +void THtmlMonPage::Output(NMonitoring::IMonHttpRequest& request) { + IOutputStream& out = request.Output(); out << HTTPOKHTML; HTML(out) { @@ -47,14 +47,14 @@ void THtmlMonPage::Output(NMonitoring::IMonHttpRequest& request) { } } -void THtmlMonPage::NotFound(NMonitoring::IMonHttpRequest& request) const { - IOutputStream& out = request.Output(); +void THtmlMonPage::NotFound(NMonitoring::IMonHttpRequest& request) const { + IOutputStream& out = request.Output(); out << HTTPNOTFOUND; out.Flush(); } - -void THtmlMonPage::NoContent(NMonitoring::IMonHttpRequest& request) const { - IOutputStream& out = request.Output(); - out << HTTPNOCONTENT; - out.Flush(); -} + +void THtmlMonPage::NoContent(NMonitoring::IMonHttpRequest& request) const { + IOutputStream& out = request.Output(); + out << HTTPNOCONTENT; + out.Flush(); +} diff --git a/library/cpp/monlib/service/pages/html_mon_page.h b/library/cpp/monlib/service/pages/html_mon_page.h index a7d45f50c9..e87c53b62b 100644 --- a/library/cpp/monlib/service/pages/html_mon_page.h +++ b/library/cpp/monlib/service/pages/html_mon_page.h @@ -12,12 +12,12 @@ namespace NMonitoring { { } - void Output(NMonitoring::IMonHttpRequest& request) override; + void Output(NMonitoring::IMonHttpRequest& request) override; - void NotFound(NMonitoring::IMonHttpRequest& request) const; - void NoContent(NMonitoring::IMonHttpRequest& request) const; + void NotFound(NMonitoring::IMonHttpRequest& request) const; + void NoContent(NMonitoring::IMonHttpRequest& request) const; - virtual void OutputContent(NMonitoring::IMonHttpRequest& request) = 0; + virtual void OutputContent(NMonitoring::IMonHttpRequest& request) = 0; bool OutputTableSorterJsCss; }; diff --git a/library/cpp/monlib/service/pages/index_mon_page.cpp b/library/cpp/monlib/service/pages/index_mon_page.cpp index f91591ebad..83ff8b529a 100644 --- a/library/cpp/monlib/service/pages/index_mon_page.cpp +++ b/library/cpp/monlib/service/pages/index_mon_page.cpp @@ -5,33 +5,33 @@ using namespace NMonitoring; -void TIndexMonPage::OutputIndexPage(IMonHttpRequest& request) { - request.Output() << HTTPOKHTML; - request.Output() << "<html>\n"; - OutputHead(request.Output()); +void TIndexMonPage::OutputIndexPage(IMonHttpRequest& request) { + request.Output() << HTTPOKHTML; + request.Output() << "<html>\n"; + OutputHead(request.Output()); OutputBody(request); - request.Output() << "</html>\n"; + request.Output() << "</html>\n"; } -void TIndexMonPage::Output(IMonHttpRequest& request) { - TStringBuf pathInfo = request.GetPathInfo(); +void TIndexMonPage::Output(IMonHttpRequest& request) { + TStringBuf pathInfo = request.GetPathInfo(); if (pathInfo.empty() || pathInfo == TStringBuf("/")) { OutputIndexPage(request); return; } - Y_VERIFY(pathInfo.StartsWith('/')); + Y_VERIFY(pathInfo.StartsWith('/')); TMonPagePtr found; // analogous to CGI PATH_INFO { TGuard<TMutex> g(Mtx); - TStringBuf pathTmp = request.GetPathInfo(); + TStringBuf pathTmp = request.GetPathInfo(); for (;;) { TPagesByPath::iterator i = PagesByPath.find(pathTmp); if (i != PagesByPath.end()) { found = i->second; - pathInfo = request.GetPathInfo().substr(pathTmp.size()); + pathInfo = request.GetPathInfo().substr(pathTmp.size()); Y_VERIFY(pathInfo.empty() || pathInfo.StartsWith('/')); break; } @@ -43,11 +43,11 @@ void TIndexMonPage::Output(IMonHttpRequest& request) { } } } - if (found) { + if (found) { THolder<IMonHttpRequest> child(request.MakeChild(found.Get(), TString{pathInfo})); - found->Output(*child); + found->Output(*child); } else { - request.Output() << HTTPNOTFOUND; + request.Output() << HTTPNOTFOUND; } } @@ -123,17 +123,17 @@ void TIndexMonPage::OutputHead(IOutputStream& out) { out << "</head>\n"; } -void TIndexMonPage::OutputBody(IMonHttpRequest& req) { - auto& out = req.Output(); - out << "<body>\n"; +void TIndexMonPage::OutputBody(IMonHttpRequest& req) { + auto& out = req.Output(); + out << "<body>\n"; // part of common navbar OutputNavBar(out); - out << "<div class='container'>\n" + out << "<div class='container'>\n" << "<h2>" << Title << "</h2>\n"; - OutputIndex(out, req.GetPathInfo().EndsWith('/')); - out << "<div>\n" + OutputIndex(out, req.GetPathInfo().EndsWith('/')); + out << "<div>\n" << "</body>\n"; } diff --git a/library/cpp/monlib/service/pages/index_mon_page.h b/library/cpp/monlib/service/pages/index_mon_page.h index c491b76557..bf514a3105 100644 --- a/library/cpp/monlib/service/pages/index_mon_page.h +++ b/library/cpp/monlib/service/pages/index_mon_page.h @@ -18,12 +18,12 @@ namespace NMonitoring { ~TIndexMonPage() override { } - void Output(IMonHttpRequest& request) override; - void OutputIndexPage(IMonHttpRequest& request); + void Output(IMonHttpRequest& request) override; + void OutputIndexPage(IMonHttpRequest& request); virtual void OutputIndex(IOutputStream& out, bool pathEndsWithSlash); virtual void OutputCommonJsCss(IOutputStream& out); void OutputHead(IOutputStream& out); - void OutputBody(IMonHttpRequest& out); + void OutputBody(IMonHttpRequest& out); void Register(TMonPagePtr page); TIndexMonPage* RegisterIndexPage(const TString& path, const TString& title); diff --git a/library/cpp/monlib/service/pages/mon_page.h b/library/cpp/monlib/service/pages/mon_page.h index b3d2635997..e396612bb0 100644 --- a/library/cpp/monlib/service/pages/mon_page.h +++ b/library/cpp/monlib/service/pages/mon_page.h @@ -17,8 +17,8 @@ namespace NMonitoring { static const char HTTPOKCSS[] = "HTTP/1.1 200 Ok\r\nContent-Type: text/css\r\nConnection: Close\r\n\r\n"; static const char HTTPNOCONTENT[] = "HTTP/1.1 204 No content\r\nConnection: Close\r\n\r\n"; static const char HTTPNOTFOUND[] = "HTTP/1.1 404 Invalid URI\r\nConnection: Close\r\n\r\nInvalid URL\r\n"; - static const char HTTPUNAUTHORIZED[] = "HTTP/1.1 401 Unauthorized\r\nConnection: Close\r\n\r\nUnauthorized\r\n"; - static const char HTTPFORBIDDEN[] = "HTTP/1.1 403 Forbidden\r\nConnection: Close\r\n\r\nForbidden\r\n"; + static const char HTTPUNAUTHORIZED[] = "HTTP/1.1 401 Unauthorized\r\nConnection: Close\r\n\r\nUnauthorized\r\n"; + static const char HTTPFORBIDDEN[] = "HTTP/1.1 403 Forbidden\r\nConnection: Close\r\n\r\nForbidden\r\n"; // Fonts static const char HTTPOKFONTEOT[] = "HTTP/1.1 200 Ok\r\nContent-Type: application/vnd.ms-fontobject\r\nConnection: Close\r\n\r\n"; @@ -60,7 +60,7 @@ namespace NMonitoring { return !Title.empty(); } - virtual void Output(IMonHttpRequest& request) = 0; + virtual void Output(IMonHttpRequest& request) = 0; }; } diff --git a/library/cpp/monlib/service/pages/pre_mon_page.cpp b/library/cpp/monlib/service/pages/pre_mon_page.cpp index fcec142b09..fc03a19b80 100644 --- a/library/cpp/monlib/service/pages/pre_mon_page.cpp +++ b/library/cpp/monlib/service/pages/pre_mon_page.cpp @@ -2,17 +2,17 @@ using namespace NMonitoring; -void TPreMonPage::OutputContent(NMonitoring::IMonHttpRequest& request) { - auto& out = request.Output(); +void TPreMonPage::OutputContent(NMonitoring::IMonHttpRequest& request) { + auto& out = request.Output(); if (PreTag) { BeforePre(request); - out << "<pre>\n"; - OutputText(out, request); - out << "</pre>\n"; + out << "<pre>\n"; + OutputText(out, request); + out << "</pre>\n"; } else { - OutputText(out, request); + OutputText(out, request); } } -void TPreMonPage::BeforePre(NMonitoring::IMonHttpRequest&) { +void TPreMonPage::BeforePre(NMonitoring::IMonHttpRequest&) { } diff --git a/library/cpp/monlib/service/pages/pre_mon_page.h b/library/cpp/monlib/service/pages/pre_mon_page.h index 66a9fe494d..c9a923d39a 100644 --- a/library/cpp/monlib/service/pages/pre_mon_page.h +++ b/library/cpp/monlib/service/pages/pre_mon_page.h @@ -13,13 +13,13 @@ namespace NMonitoring { { } - void OutputContent(NMonitoring::IMonHttpRequest& request) override; + void OutputContent(NMonitoring::IMonHttpRequest& request) override; // hook to customize output - virtual void BeforePre(NMonitoring::IMonHttpRequest& request); + virtual void BeforePre(NMonitoring::IMonHttpRequest& request); // put your text here - virtual void OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) = 0; + virtual void OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) = 0; const bool PreTag; }; diff --git a/library/cpp/monlib/service/pages/registry_mon_page.cpp b/library/cpp/monlib/service/pages/registry_mon_page.cpp index c47668391f..c59e50f622 100644 --- a/library/cpp/monlib/service/pages/registry_mon_page.cpp +++ b/library/cpp/monlib/service/pages/registry_mon_page.cpp @@ -1,46 +1,46 @@ -#include "registry_mon_page.h" - +#include "registry_mon_page.h" + #include <library/cpp/monlib/encode/text/text.h> #include <library/cpp/monlib/encode/json/json.h> #include <library/cpp/monlib/encode/prometheus/prometheus.h> #include <library/cpp/monlib/encode/spack/spack_v1.h> #include <library/cpp/monlib/service/format.h> - -namespace NMonitoring { + +namespace NMonitoring { void TMetricRegistryPage::Output(NMonitoring::IMonHttpRequest& request) { - const auto formatStr = TStringBuf{request.GetPathInfo()}.RNextTok('/'); - auto& out = request.Output(); - + const auto formatStr = TStringBuf{request.GetPathInfo()}.RNextTok('/'); + auto& out = request.Output(); + if (!formatStr.empty()) { IMetricEncoderPtr encoder; - TString resp; - + TString resp; + if (formatStr == TStringBuf("json")) { - resp = HTTPOKJSON; - encoder = NMonitoring::EncoderJson(&out); + resp = HTTPOKJSON; + encoder = NMonitoring::EncoderJson(&out); } else if (formatStr == TStringBuf("spack")) { - resp = HTTPOKSPACK; + resp = HTTPOKSPACK; const auto compression = ParseCompression(request); encoder = NMonitoring::EncoderSpackV1(&out, ETimePrecision::SECONDS, compression); } else if (formatStr == TStringBuf("prometheus")) { resp = HTTPOKPROMETHEUS; encoder = NMonitoring::EncoderPrometheus(&out); - } else { + } else { ythrow yexception() << "unsupported metric encoding format: " << formatStr; - } - - out.Write(resp); + } + + out.Write(resp); RegistryRawPtr_->Accept(TInstant::Zero(), encoder.Get()); encoder->Close(); - } else { - THtmlMonPage::Output(request); - } - } - + } else { + THtmlMonPage::Output(request); + } + } + void TMetricRegistryPage::OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) { IMetricEncoderPtr encoder = NMonitoring::EncoderText(&out); RegistryRawPtr_->Accept(TInstant::Zero(), encoder.Get()); - } - -} + } + +} diff --git a/library/cpp/monlib/service/pages/registry_mon_page.h b/library/cpp/monlib/service/pages/registry_mon_page.h index f23ab69232..2d26d3319c 100644 --- a/library/cpp/monlib/service/pages/registry_mon_page.h +++ b/library/cpp/monlib/service/pages/registry_mon_page.h @@ -1,32 +1,32 @@ -#pragma once - -#include "pre_mon_page.h" - +#pragma once + +#include "pre_mon_page.h" + #include <library/cpp/monlib/metrics/metric_registry.h> - -namespace NMonitoring { + +namespace NMonitoring { // For now this class can only enumerate all metrics without any grouping or serve JSON/Spack/Prometheus class TMetricRegistryPage: public TPreMonPage { - public: + public: TMetricRegistryPage(const TString& path, const TString& title, TAtomicSharedPtr<IMetricSupplier> registry) - : TPreMonPage(path, title) + : TPreMonPage(path, title) , Registry_(registry) , RegistryRawPtr_(Registry_.Get()) - { - } - + { + } + TMetricRegistryPage(const TString& path, const TString& title, IMetricSupplier* registry) : TPreMonPage(path, title) , RegistryRawPtr_(registry) { } - void Output(NMonitoring::IMonHttpRequest& request) override; - void OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) override; - - private: + void Output(NMonitoring::IMonHttpRequest& request) override; + void OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) override; + + private: TAtomicSharedPtr<IMetricSupplier> Registry_; IMetricSupplier* RegistryRawPtr_; - }; - -} + }; + +} diff --git a/library/cpp/monlib/service/pages/resource_mon_page.cpp b/library/cpp/monlib/service/pages/resource_mon_page.cpp index 16b1eb1aa0..ec4ac6a1a7 100644 --- a/library/cpp/monlib/service/pages/resource_mon_page.cpp +++ b/library/cpp/monlib/service/pages/resource_mon_page.cpp @@ -2,8 +2,8 @@ using namespace NMonitoring; -void TResourceMonPage::Output(NMonitoring::IMonHttpRequest& request) { - IOutputStream& out = request.Output(); +void TResourceMonPage::Output(NMonitoring::IMonHttpRequest& request) { + IOutputStream& out = request.Output(); switch (ResourceType) { case TEXT: out << HTTPOKTEXT; @@ -42,8 +42,8 @@ void TResourceMonPage::Output(NMonitoring::IMonHttpRequest& request) { out << NResource::Find(ResourceName); } -void TResourceMonPage::NotFound(NMonitoring::IMonHttpRequest& request) const { - IOutputStream& out = request.Output(); +void TResourceMonPage::NotFound(NMonitoring::IMonHttpRequest& request) const { + IOutputStream& out = request.Output(); out << HTTPNOTFOUND; out.Flush(); } diff --git a/library/cpp/monlib/service/pages/resource_mon_page.h b/library/cpp/monlib/service/pages/resource_mon_page.h index ec00e8ccc4..f6ab67200e 100644 --- a/library/cpp/monlib/service/pages/resource_mon_page.h +++ b/library/cpp/monlib/service/pages/resource_mon_page.h @@ -31,9 +31,9 @@ namespace NMonitoring { { } - void Output(NMonitoring::IMonHttpRequest& request) override; + void Output(NMonitoring::IMonHttpRequest& request) override; - void NotFound(NMonitoring::IMonHttpRequest& request) const; + void NotFound(NMonitoring::IMonHttpRequest& request) const; private: TString ResourceName; diff --git a/library/cpp/monlib/service/pages/templates.h b/library/cpp/monlib/service/pages/templates.h index eac97955a2..b4656f059f 100644 --- a/library/cpp/monlib/service/pages/templates.h +++ b/library/cpp/monlib/service/pages/templates.h @@ -94,28 +94,28 @@ #define COLLAPSED_BUTTON_CONTENT(targetId, buttonText) \ WITH_SCOPED(tmp, NMonitoring::TCollapsedButton(__stream, targetId, buttonText)) -#define HREF(path) \ - WITH_SCOPED(tmp, NMonitoring::THref(__stream, path)) - +#define HREF(path) \ + WITH_SCOPED(tmp, NMonitoring::THref(__stream, path)) + namespace NMonitoring { - struct THref { - THref(IOutputStream& str, TStringBuf path) - : Str(str) - { - Str << "<a href="<< path << '>'; - } - - ~THref() { - Str << "</a>"; - } - - explicit inline operator bool() const noexcept { - return true; // just to work with WITH_SCOPED - } - - IOutputStream& Str; - }; - + struct THref { + THref(IOutputStream& str, TStringBuf path) + : Str(str) + { + Str << "<a href="<< path << '>'; + } + + ~THref() { + Str << "</a>"; + } + + explicit inline operator bool() const noexcept { + return true; // just to work with WITH_SCOPED + } + + IOutputStream& Str; + }; + template <const char* tag> struct TTag { TTag(IOutputStream& str, TStringBuf cls = "", TStringBuf for0 = "", TStringBuf id = "") diff --git a/library/cpp/monlib/service/pages/version_mon_page.cpp b/library/cpp/monlib/service/pages/version_mon_page.cpp index 0031031815..41e29417da 100644 --- a/library/cpp/monlib/service/pages/version_mon_page.cpp +++ b/library/cpp/monlib/service/pages/version_mon_page.cpp @@ -6,7 +6,7 @@ using namespace NMonitoring; -void TVersionMonPage::OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) { +void TVersionMonPage::OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) { const char* version = GetProgramSvnVersion(); out << version; if (!TString(version).EndsWith("\n")) diff --git a/library/cpp/monlib/service/pages/version_mon_page.h b/library/cpp/monlib/service/pages/version_mon_page.h index c559e5940d..f7649947e4 100644 --- a/library/cpp/monlib/service/pages/version_mon_page.h +++ b/library/cpp/monlib/service/pages/version_mon_page.h @@ -9,7 +9,7 @@ namespace NMonitoring { { } - void OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) override; + void OutputText(IOutputStream& out, NMonitoring::IMonHttpRequest&) override; }; } diff --git a/library/cpp/monlib/service/pages/ya.make b/library/cpp/monlib/service/pages/ya.make index 6c656748ce..48d44a0838 100644 --- a/library/cpp/monlib/service/pages/ya.make +++ b/library/cpp/monlib/service/pages/ya.make @@ -1,6 +1,6 @@ LIBRARY() -OWNER(g:solomon) +OWNER(g:solomon) NO_WSHADOW() @@ -13,7 +13,7 @@ SRCS( resource_mon_page.cpp templates.cpp version_mon_page.cpp - registry_mon_page.cpp + registry_mon_page.cpp ) PEERDIR( diff --git a/library/cpp/monlib/service/ya.make b/library/cpp/monlib/service/ya.make index fab3ff1c42..ad088fc2c6 100644 --- a/library/cpp/monlib/service/ya.make +++ b/library/cpp/monlib/service/ya.make @@ -1,13 +1,13 @@ LIBRARY() -OWNER(g:solomon) +OWNER(g:solomon) SRCS( monservice.cpp mon_service_http_request.cpp service.cpp - format.cpp - auth.cpp + format.cpp + auth.cpp ) PEERDIR( |