Make DOSGuard config loading more resilient (#103)

This commit is contained in:
undertome
2022-02-24 17:58:46 -06:00
committed by GitHub
parent 356de57506
commit 115b93298d

View File

@@ -29,8 +29,14 @@ class DOSGuard
std::string const& key, std::string const& key,
std::uint32_t const fallback) const std::uint32_t const fallback) const
{ {
if (auto const c = getConfig(config); c) try
{
if (auto const c = getConfig(config))
return c->at(key).as_int64(); return c->at(key).as_int64();
}
catch (std::exception const& e)
{
}
return fallback; return fallback;
} }
@@ -40,13 +46,12 @@ class DOSGuard
{ {
using T = std::unordered_set<std::string> const; using T = std::unordered_set<std::string> const;
try
{
auto const& c = getConfig(config); auto const& c = getConfig(config);
if (!c) if (!c)
return T(); return T();
if (!c->contains("whitelist"))
return T();
auto const& w = c->at("whitelist").as_array(); auto const& w = c->at("whitelist").as_array();
auto const transform = [](auto const& elem) { auto const transform = [](auto const& elem) {
@@ -57,6 +62,11 @@ class DOSGuard
boost::transform_iterator(w.begin(), transform), boost::transform_iterator(w.begin(), transform),
boost::transform_iterator(w.end(), transform)); boost::transform_iterator(w.end(), transform));
} }
catch (std::exception const& e)
{
return T();
}
}
public: public:
DOSGuard(boost::json::object const& config, boost::asio::io_context& ctx) DOSGuard(boost::json::object const& config, boost::asio::io_context& ctx)