mirror of
https://github.com/matrix-construct/construct
synced 2025-03-13 21:10:32 +01:00
ircd:Ⓜ️:keys: Add pretty()/pretty_oneline() output diagnostics.
This commit is contained in:
parent
758ee9c185
commit
754adf33ec
3 changed files with 94 additions and 6 deletions
|
@ -18,6 +18,9 @@ namespace ircd::m
|
|||
bool expired(const m::keys &);
|
||||
bool verify(const m::keys &, std::nothrow_t) noexcept;
|
||||
void verify(const m::keys &);
|
||||
|
||||
std::ostream &pretty(std::ostream &, const m::keys &);
|
||||
std::ostream &pretty_oneline(std::ostream &, const m::keys &);
|
||||
}
|
||||
|
||||
/// Contains the public keys and proof of identity for a remote server.
|
||||
|
|
|
@ -5431,9 +5431,9 @@ console_cmd__key(opt &out, const string_view &line)
|
|||
|
||||
// keys cached for server by param.
|
||||
m::keys::cache::for_each(server_name, [&out]
|
||||
(const json::object &object)
|
||||
(const m::keys &keys)
|
||||
{
|
||||
out << object << std::endl;
|
||||
pretty_oneline(out, keys) << std::endl;
|
||||
return true;
|
||||
});
|
||||
|
||||
|
@ -5461,9 +5461,9 @@ console_cmd__key__get(opt &out, const string_view &line)
|
|||
if(!query_server)
|
||||
{
|
||||
m::keys::get(server_name, [&out]
|
||||
(const auto &keys)
|
||||
(const m::keys &keys)
|
||||
{
|
||||
out << keys << std::endl;
|
||||
pretty(out, keys) << std::endl;
|
||||
});
|
||||
}
|
||||
else
|
||||
|
@ -5474,9 +5474,9 @@ console_cmd__key__get(opt &out, const string_view &line)
|
|||
};
|
||||
|
||||
m::keys::query(query_server, queries, [&out]
|
||||
(const auto &keys)
|
||||
(const m::keys &keys)
|
||||
{
|
||||
out << keys << std::endl;
|
||||
pretty_oneline(out, keys) << std::endl;
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
|
|
@ -15,6 +15,91 @@ IRCD_MODULE
|
|||
,ircd::m::self::init::keys
|
||||
};
|
||||
|
||||
std::ostream &
|
||||
IRCD_MODULE_EXPORT
|
||||
ircd::m::pretty_oneline(std::ostream &s,
|
||||
const m::keys &keys)
|
||||
{
|
||||
s << json::get<"server_name"_>(keys)
|
||||
<< ' ';
|
||||
|
||||
char smbuf[32];
|
||||
s << smalldate(smbuf, json::get<"valid_until_ts"_>(keys) / 1000L)
|
||||
<< " (" << json::get<"valid_until_ts"_>(keys) << ")"
|
||||
<< ' ';
|
||||
|
||||
for(const json::object &fp : json::get<"tls_fingerprints"_>(keys))
|
||||
{
|
||||
s << "tls[ ";
|
||||
for(const auto &[digest, fingerprint] : fp)
|
||||
s << digest << ' ';
|
||||
s << "] ";
|
||||
}
|
||||
|
||||
for(const auto &[domain, signature_] : json::get<"signatures"_>(keys))
|
||||
{
|
||||
s << "sig[ " << domain << ' ';
|
||||
for(const auto &[key_id, signature] : json::object(signature_))
|
||||
s << key_id << ' ';
|
||||
s << "] ";
|
||||
}
|
||||
|
||||
for(const auto &[domain, verify_key_] : json::get<"verify_keys"_>(keys))
|
||||
{
|
||||
s << "key[ " << domain << ' ';
|
||||
for(const auto &[key_id, verify_key] : json::object(verify_key_))
|
||||
s << key_id << ' ';
|
||||
s << "] ";
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
std::ostream &
|
||||
IRCD_MODULE_EXPORT
|
||||
ircd::m::pretty(std::ostream &s,
|
||||
const m::keys &keys)
|
||||
{
|
||||
s << std::setw(16) << std::right << "server name "
|
||||
<< json::get<"server_name"_>(keys)
|
||||
<< '\n';
|
||||
|
||||
char tmbuf[64];
|
||||
s << std::setw(16) << std::right << "valid until "
|
||||
<< timef(tmbuf, json::get<"valid_until_ts"_>(keys) / 1000, ircd::localtime)
|
||||
<< " (" << json::get<"valid_until_ts"_>(keys) << ")"
|
||||
<< '\n';
|
||||
|
||||
for(const json::object &fp : json::get<"tls_fingerprints"_>(keys))
|
||||
for(const auto &[digest, fingerprint] : fp)
|
||||
s << std::setw(16) << std::right << "[fingerprint] "
|
||||
<< digest << ' ' << unquote(fingerprint)
|
||||
<< '\n';
|
||||
|
||||
for(const auto &[domain, signature_] : json::get<"signatures"_>(keys))
|
||||
for(const auto &[key_id, signature] : json::object(signature_))
|
||||
s << std::setw(16) << std::right << "[signature] "
|
||||
<< domain << ' '
|
||||
<< key_id << ' '
|
||||
<< unquote(signature) << '\n';
|
||||
|
||||
for(const auto &[domain, verify_key_] : json::get<"verify_keys"_>(keys))
|
||||
for(const auto &[key_id, verify_key] : json::object(verify_key_))
|
||||
s << std::setw(16) << std::right << "[verify_key] "
|
||||
<< domain << ' '
|
||||
<< key_id << ' '
|
||||
<< unquote(verify_key) << '\n';
|
||||
|
||||
for(const auto &[domain, old_verify_key_] : json::get<"old_verify_keys"_>(keys))
|
||||
for(const auto &[key_id, old_verify_key] : json::object(old_verify_key_))
|
||||
s << std::setw(16) << std::right << "[old_verify_key] "
|
||||
<< domain << ' '
|
||||
<< key_id << ' '
|
||||
<< unquote(old_verify_key) << '\n';
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
bool
|
||||
IRCD_MODULE_EXPORT
|
||||
ircd::m::verify(const m::keys &keys,
|
||||
|
|
Loading…
Add table
Reference in a new issue