--all List all certificate signing requests, including
signed. Note: Old requests are automatically
cleaned by Icinga after 1 week.
+ --removed List all removed CSRs (for use with 'ca restore')
--json encode output as JSON
Report bugs at <https://github.com/Icinga/icinga2>
{
visibleDesc.add_options()
("all", "List all certificate signing requests, including signed. Note: Old requests are automatically cleaned by Icinga after 1 week.")
+ ("removed", "List all removed CSRs (for use with 'ca restore')")
("json", "encode output as JSON");
}
*/
int CAListCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
{
- Dictionary::Ptr requests = PkiUtility::GetCertificateRequests();
+ Dictionary::Ptr requests = PkiUtility::GetCertificateRequests(vm.count("removed"));
if (vm.count("json"))
std::cout << JsonEncode(requests);
#include <fstream>
#include <iostream>
#include <boost/asio/ssl/context.hpp>
+#include <boost/filesystem/path.hpp>
using namespace icinga;
Dictionary::Ptr result = new Dictionary();
- String fingerprint = Utility::BaseName(requestFile);
- fingerprint = fingerprint.SubStr(0, fingerprint.GetLength() - 5);
+ namespace fs = boost::filesystem;
+ fs::path file(requestFile.Begin(), requestFile.End());
+ String fingerprint = file.stem().string();
String certRequestText = request->Get("cert_request");
result->Set("cert_request", certRequestText);
requests->Set(fingerprint, result);
}
-Dictionary::Ptr PkiUtility::GetCertificateRequests()
+Dictionary::Ptr PkiUtility::GetCertificateRequests(bool removed)
{
Dictionary::Ptr requests = new Dictionary();
String requestDir = ApiListener::GetCertificateRequestsDir();
+ String ext = "json";
+
+ if (removed)
+ ext = "removed";
if (Utility::PathExists(requestDir))
- Utility::Glob(requestDir + "/*.json", std::bind(&CollectRequestHandler, requests, _1), GlobFile);
+ Utility::Glob(requestDir + "/*." + ext, std::bind(&CollectRequestHandler, requests, _1), GlobFile);
return requests;
}
+
const String& certfile, const String& cafile, const std::shared_ptr<X509>& trustedcert,
const String& ticket = String());
static String GetCertificateInformation(const std::shared_ptr<X509>& certificate);
- static Dictionary::Ptr GetCertificateRequests();
+ static Dictionary::Ptr GetCertificateRequests(bool removed = false);
private:
PkiUtility();