pkinewcacommand.cpp pkinewcertcommand.cpp pkisigncsrcommand.cpp pkirequestcommand.cpp pkisavecertcommand.cpp pkiticketcommand.cpp
pkiutility.cpp
repositorycommitcommand.cpp repositoryobjectcommand.cpp repositoryutility.cpp
- variablegetcommand.cpp variablelistcommand.cpp
+ variablegetcommand.cpp variablelistcommand.cpp variableutility.cpp
)
if(ICINGA2_UNITY_BUILD)
#include "cli/pkiticketcommand.hpp"
#include "cli/pkiutility.hpp"
+#include "cli/variableutility.hpp"
#include "base/logger.hpp"
#include <iostream>
return 1;
}
- if (!vm.count("salt")) {
+ String salt = VariableUtility::GetVariable("TicketSalt");
+
+ if (vm.count("salt"))
+ salt = vm["salt"].as<std::string>();
+
+ if (salt.IsEmpty()) {
Log(LogCritical, "cli", "Ticket salt (--salt) must be specified.");
return 1;
}
- return PkiUtility::GenTicket(vm["cn"].as<std::string>(), vm["salt"].as<std::string>(), std::cout);
+ return PkiUtility::GenTicket(vm["cn"].as<std::string>(), salt, std::cout);
}
******************************************************************************/
#include "cli/variablegetcommand.hpp"
+#include "cli/variableutility.hpp"
#include "base/logger.hpp"
#include "base/application.hpp"
#include "base/convert.hpp"
return 1;
}
- std::fstream fp;
- fp.open(varsfile.CStr(), std::ios_base::in);
+ Value value = VariableUtility::GetVariable(ap[0]);
- StdioStream::Ptr sfp = make_shared<StdioStream>(&fp, false);
-
- String message;
-
- while (NetString::ReadStringFromStream(sfp, &message)) {
- Dictionary::Ptr variable = JsonDecode(message);
-
- if (variable->Get("name") == ap[0]) {
- std::cout << variable->Get("value") << "\n";
- break;
- }
- }
-
- sfp->Close();
- fp.close();
+ std::cout << value << "\n";
return 0;
}
******************************************************************************/
#include "cli/variablelistcommand.hpp"
+#include "cli/variableutility.hpp"
#include "base/logger.hpp"
#include "base/application.hpp"
#include "base/convert.hpp"
#include "base/dynamicobject.hpp"
-#include "base/dynamictype.hpp"
-#include "base/json.hpp"
-#include "base/netstring.hpp"
-#include "base/stdiostream.hpp"
#include "base/debug.hpp"
#include "base/objectlock.hpp"
#include "base/console.hpp"
return 1;
}
- std::fstream fp;
- fp.open(varsfile.CStr(), std::ios_base::in);
-
- StdioStream::Ptr sfp = make_shared<StdioStream>(&fp, false);
- unsigned long variables_count = 0;
-
- String message;
-
- while (NetString::ReadStringFromStream(sfp, &message)) {
- PrintVariable(std::cout, message);
- variables_count++;
- }
-
- sfp->Close();
- fp.close();
-
- Log(LogNotice, "cli")
- << "Parsed " << variables_count << " variables.";
+ VariableUtility::PrintVariables(std::cout);
return 0;
}
-void VariableListCommand::PrintVariable(std::ostream& fp, const String& message)
-{
- Dictionary::Ptr variable = JsonDecode(message);
-
- std::cout << variable->Get("name") << " = " << variable->Get("value") << "\n";
-}
--- /dev/null
+/******************************************************************************
+ * Icinga 2 *
+ * Copyright (C) 2012-2014 Icinga Development Team (http://www.icinga.org) *
+ * *
+ * This program is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU General Public License *
+ * as published by the Free Software Foundation; either version 2 *
+ * of the License, or (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software Foundation *
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ******************************************************************************/
+
+#include "cli/variableutility.hpp"
+#include "base/logger.hpp"
+#include "base/application.hpp"
+#include "base/utility.hpp"
+#include "base/stdiostream.hpp"
+#include "base/netstring.hpp"
+#include "base/json.hpp"
+#include "remote/jsonrpc.hpp"
+#include <fstream>
+
+using namespace icinga;
+
+Value VariableUtility::GetVariable(const String& name)
+{
+ String varsfile = Application::GetVarsPath();
+
+ std::fstream fp;
+ fp.open(varsfile.CStr(), std::ios_base::in);
+
+ StdioStream::Ptr sfp = make_shared<StdioStream>(&fp, false);
+
+ String message;
+
+ while (NetString::ReadStringFromStream(sfp, &message)) {
+ Dictionary::Ptr variable = JsonDecode(message);
+
+ if (variable->Get("name") == name) {
+ return variable->Get("value");
+ }
+ }
+
+ return Empty;
+}
+
+void VariableUtility::PrintVariables(std::ostream& outfp)
+{
+ String varsfile = Application::GetVarsPath();
+
+ std::fstream fp;
+ fp.open(varsfile.CStr(), std::ios_base::in);
+
+ StdioStream::Ptr sfp = make_shared<StdioStream>(&fp, false);
+ unsigned long variables_count = 0;
+
+ String message;
+
+ while (NetString::ReadStringFromStream(sfp, &message)) {
+ Dictionary::Ptr variable = JsonDecode(message);
+ outfp << variable->Get("name") << " = " << variable->Get("value") << "\n";
+ variables_count++;
+ }
+
+ sfp->Close();
+ fp.close();
+
+ Log(LogNotice, "cli")
+ << "Parsed " << variables_count << " variables.";
+}
--- /dev/null
+/******************************************************************************
+ * Icinga 2 *
+ * Copyright (C) 2012-2014 Icinga Development Team (http://www.icinga.org) *
+ * *
+ * This program is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU General Public License *
+ * as published by the Free Software Foundation; either version 2 *
+ * of the License, or (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software Foundation *
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ******************************************************************************/
+
+#ifndef VARIABLEUTILITY_H
+#define VARIABLEUTILITY_H
+
+#include "base/i2-base.hpp"
+#include "base/dictionary.hpp"
+#include "base/string.hpp"
+#include <ostream>
+
+namespace icinga
+{
+
+/**
+ * @ingroup cli
+ */
+class VariableUtility
+{
+public:
+ static Value GetVariable(const String& name);
+ static void PrintVariables(std::ostream& outfp);
+
+private:
+ VariableUtility(void);
+
+
+};
+
+}
+
+#endif /* VARIABLEUTILITY_H */