1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
3 #include "cli/calistcommand.hpp"
4 #include "remote/apilistener.hpp"
5 #include "remote/pkiutility.hpp"
6 #include "base/logger.hpp"
7 #include "base/application.hpp"
8 #include "base/tlsutility.hpp"
9 #include "base/json.hpp"
12 using namespace icinga;
13 namespace po = boost::program_options;
15 REGISTER_CLICOMMAND("ca/list", CAListCommand);
17 String CAListCommand::GetDescription() const
19 return "Lists all certificate signing requests.";
22 String CAListCommand::GetShortDescription() const
24 return "lists all certificate signing requests";
27 void CAListCommand::InitParameters(boost::program_options::options_description& visibleDesc,
28 boost::program_options::options_description& hiddenDesc) const
30 visibleDesc.add_options()
31 ("json", "encode output as JSON")
36 * The entry point for the "ca list" CLI command.
38 * @returns An exit status.
40 int CAListCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
42 Dictionary::Ptr requests = PkiUtility::GetCertificateRequests();
45 std::cout << JsonEncode(requests);
47 ObjectLock olock(requests);
49 std::cout << "Fingerprint | Timestamp | Signed | Subject\n";
50 std::cout << "-----------------------------------------------------------------|--------------------------|--------|--------\n";
52 for (auto& kv : requests) {
53 Dictionary::Ptr request = kv.second;
57 /* << Utility::FormatDateTime("%Y/%m/%d %H:%M:%S", request->Get("timestamp")) */
58 << request->Get("timestamp")
60 << (request->Contains("cert_response") ? "*" : " ") << " "
62 << request->Get("subject")