lokinet/llarp/service/endpoint_state.cpp

101 lines
2.7 KiB
C++
Raw Normal View History

#include "endpoint_state.hpp"
#include <llarp/exit/session.hpp>
#include <llarp/hook/shell.hpp>
#include "endpoint.hpp"
#include "outbound_context.hpp"
#include <llarp/util/str.hpp>
namespace llarp
{
namespace service
{
bool
EndpointState::Configure(const NetworkConfig& conf)
{
2020-06-08 12:42:10 +00:00
if (conf.m_keyfile.has_value())
2020-06-12 22:03:05 +00:00
m_Keyfile = conf.m_keyfile->string();
m_SnodeBlacklist = conf.m_snodeBlacklist;
2020-06-03 11:41:28 +00:00
m_ExitEnabled = conf.m_AllowExit;
for (const auto& record : conf.m_SRVRecords)
{
m_IntroSet.SRVs.push_back(record.toTuple());
}
2020-04-22 20:04:47 +00:00
// TODO:
/*
if (k == "on-up")
{
m_OnUp = hooks::ExecShellBackend(v);
if (m_OnUp)
LogInfo(name, " added on up script: ", v);
else
LogError(name, " failed to add on up script");
}
if (k == "on-down")
{
m_OnDown = hooks::ExecShellBackend(v);
if (m_OnDown)
LogInfo(name, " added on down script: ", v);
else
LogError(name, " failed to add on down script");
}
if (k == "on-ready")
{
m_OnReady = hooks::ExecShellBackend(v);
if (m_OnReady)
LogInfo(name, " added on ready script: ", v);
else
LogError(name, " failed to add on ready script");
}
2020-04-22 20:04:47 +00:00
*/
return true;
}
util::StatusObject
EndpointState::ExtractStatus(util::StatusObject& obj) const
{
obj["lastPublished"] = to_json(m_LastPublish);
obj["lastPublishAttempt"] = to_json(m_LastPublishAttempt);
obj["introset"] = m_IntroSet.ExtractStatus();
static auto getSecond = [](const auto& item) -> auto
{
return item.second->ExtractStatus();
};
std::transform(
m_DeadSessions.begin(),
m_DeadSessions.end(),
std::back_inserter(obj["deadSessions"]),
getSecond);
std::transform(
m_RemoteSessions.begin(),
m_RemoteSessions.end(),
std::back_inserter(obj["remoteSessions"]),
getSecond);
std::transform(
m_PendingLookups.begin(),
m_PendingLookups.end(),
std::back_inserter(obj["lookups"]),
getSecond);
std::transform(
m_SNodeSessions.begin(),
m_SNodeSessions.end(),
std::back_inserter(obj["snodeSessions"]),
[](const auto& item) { return item.second.first->ExtractStatus(); });
util::StatusObject sessionObj{};
for (const auto& item : m_Sessions)
{
std::string k = item.first.ToHex();
sessionObj[k] = item.second.ExtractStatus();
}
obj["converstations"] = sessionObj;
return obj;
}
} // namespace service
} // namespace llarp