0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-09 13:38:55 +02:00

modules/console: Improve feds perspective cmd output.

This commit is contained in:
Jason Volk 2023-03-04 20:34:18 -08:00
parent 9a74602523
commit 12641056d2

View file

@ -14998,46 +14998,55 @@ console_cmd__feds__perspective(opt &out, const string_view &line)
{ {
const params param{line, " ", const params param{line, " ",
{ {
"room_id", "server_name", "key_id", "room_id", "server_name", "key_id", "op"
}}; }};
const auto &room_id const auto &room_id
{ {
m::room_id(param.at(0)) m::room_id(param["room_id"])
}; };
const string_view &server_name const string_view &server_name
{ {
param.at(1) param["server_name"]
}; };
const string_view &key_id const string_view &key_id
{ {
param.at(2) param["key_id"]
};
const string_view &op
{
param["op"]
}; };
const m::fed::key::server_key server_key const m::fed::key::server_key server_key
{ {
server_name, key_id server_name,
key_id == "*"? string_view{}: key_id,
}; };
size_t count[3] {0};
m::feds::opts opts; m::feds::opts opts;
opts.op = m::feds::op::keys; opts.op = m::feds::op::keys;
opts.timeout = out.timeout; opts.timeout = out.timeout;
opts.room_id = room_id; opts.room_id = room_id;
opts.arg[0] = server_key.first; opts.arg[0] = server_key.first;
opts.arg[1] = server_key.second; opts.arg[1] = server_key.second;
m::feds::execute(opts, [&out](const auto &result) m::feds::execute(opts, [&out, &op, &key_id, &count]
(const auto &result)
{ {
out << std::setw(32) << trunc(result.origin, 32) << " :";
if(result.eptr) if(result.eptr)
{ {
out << what(result.eptr) out
<< std::endl; << std::setw(32) << trunc(result.origin, 32) << " :"
<< what(result.eptr)
<< std::endl;
count[2]++;
return true; return true;
} }
else count[1]++;
const json::array &server_keys const json::array &server_keys
{ {
@ -15046,13 +15055,33 @@ console_cmd__feds__perspective(opt &out, const string_view &line)
for(const json::object server_key : server_keys) for(const json::object server_key : server_keys)
{ {
const m::keys &key{server_key}; const m::keys key
out << key << std::endl; {
server_key
};
out << std::setw(32) << trunc(result.origin, 32) << " :";
if(has(op, "raw"))
{
out << key << std::endl;
continue;
}
for(const auto &[_key_id, key_obj] : json::get<"verify_keys"_>(key))
if(key_id == _key_id)
count[0]++;
pretty_oneline(out, key);
out << std::endl;
} }
return true; return true;
}); });
out
<< '\n'
<< count[0] << ':' << count[1] << ':' << count[2]
<< std::endl;
return true; return true;
} }