mirror of https://github.com/Icinga/icinga2.git
ConfigObjectUtility::GetObjectConfigPath(): hash names of not already existing objects
... to avoid too long file names. refs #8022
This commit is contained in:
parent
5f548c8f89
commit
68a0079c26
|
@ -8,11 +8,13 @@
|
||||||
#include "base/configwriter.hpp"
|
#include "base/configwriter.hpp"
|
||||||
#include "base/exception.hpp"
|
#include "base/exception.hpp"
|
||||||
#include "base/dependencygraph.hpp"
|
#include "base/dependencygraph.hpp"
|
||||||
|
#include "base/tlsutility.hpp"
|
||||||
#include "base/utility.hpp"
|
#include "base/utility.hpp"
|
||||||
#include <boost/algorithm/string/case_conv.hpp>
|
#include <boost/algorithm/string/case_conv.hpp>
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
#include <boost/system/error_code.hpp>
|
#include <boost/system/error_code.hpp>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
|
@ -35,8 +37,13 @@ String ConfigObjectUtility::GetObjectConfigPath(const Type::Ptr& type, const Str
|
||||||
/* This may throw an exception the caller above must handle. */
|
/* This may throw an exception the caller above must handle. */
|
||||||
String prefix = GetConfigDir();
|
String prefix = GetConfigDir();
|
||||||
|
|
||||||
return prefix + "/conf.d/" + typeDir +
|
auto old (prefix + "/conf.d/" + typeDir + "/" + EscapeName(fullName) + ".conf");
|
||||||
"/" + EscapeName(fullName) + ".conf";
|
|
||||||
|
if (fullName.GetLength() <= 80u + 3u /* "..." */ + 40u /* hex SHA1 */ || Utility::PathExists(old)) {
|
||||||
|
return std::move(old);
|
||||||
|
}
|
||||||
|
|
||||||
|
return prefix + "/conf.d/" + typeDir + "/" + fullName.SubStr(0, 80) + "..." + SHA1(fullName) + ".conf";
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConfigObjectUtility::RepairPackage(const String& package)
|
void ConfigObjectUtility::RepairPackage(const String& package)
|
||||||
|
|
Loading…
Reference in New Issue