mirror of https://github.com/Icinga/icinga2.git
parent
f13460a2dd
commit
1c7d6895bd
|
@ -42,6 +42,9 @@
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
#endif /* __linux__ */
|
#endif /* __linux__ */
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <VersionHelpers.h>
|
||||||
|
#endif /*_WIN32*/
|
||||||
|
|
||||||
using namespace icinga;
|
using namespace icinga;
|
||||||
|
|
||||||
|
@ -488,54 +491,77 @@ static String UnameHelper(char type)
|
||||||
|
|
||||||
int ReleaseHelper(std::string &result)
|
int ReleaseHelper(std::string &result)
|
||||||
{
|
{
|
||||||
/* You are useing *some* distribution */
|
/* You are useing *some* distribution */
|
||||||
FILE *fp = popen("lsb_release -s -d 2>&1", "r");
|
FILE *fp = popen("lsb_release -s -d 2>&1", "r");
|
||||||
std::ostringstream msgbuf;
|
std::ostringstream msgbuf;
|
||||||
|
|
||||||
if (fp != NULL) {
|
if (fp != NULL) {
|
||||||
char line[1024];
|
char line[1024];
|
||||||
while (fgets(line, sizeof(line), fp) != NULL)
|
while (fgets(line, sizeof(line), fp) != NULL)
|
||||||
msgbuf << line;
|
msgbuf << line;
|
||||||
int status = pclose(fp);
|
int status = pclose(fp);
|
||||||
if (WEXITSTATUS(status) == 0) {
|
if (WEXITSTATUS(status) == 0) {
|
||||||
result = msgbuf.str();
|
result = msgbuf.str();
|
||||||
boost::trim(result);
|
boost::trim(result);
|
||||||
return result.length();
|
return result.length();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* You have systemd or Ubuntu etc. */
|
/* You have systemd or Ubuntu etc. */
|
||||||
std::ifstream release("/etc/os-release");
|
std::ifstream release("/etc/os-release");
|
||||||
std::string release_line;
|
std::string release_line;
|
||||||
if (release.is_open()) {
|
if (release.is_open()) {
|
||||||
while (getline(release, release_line)) {
|
while (getline(release, release_line)) {
|
||||||
if (release_line.find("PRETTY_NAME") != std::string::npos) {
|
if (release_line.find("PRETTY_NAME") != std::string::npos) {
|
||||||
result = release_line.substr(13, release_line.length() - 14);
|
result = release_line.substr(13, release_line.length() - 14);
|
||||||
return result.length();
|
return result.length();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Centos < 7 */
|
/* Centos < 7 */
|
||||||
release.close();
|
release.close();
|
||||||
release.open("/etc/redhat-release");
|
release.open("/etc/redhat-release");
|
||||||
if (release.is_open()) {
|
if (release.is_open()) {
|
||||||
getline(release, release_line);
|
getline(release, release_line);
|
||||||
result = release_line;
|
result = release_line;
|
||||||
return result.length();
|
return result.length();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sles 11 sp3, opensuse w/e */
|
/* sles 11 sp3, opensuse w/e */
|
||||||
release.close();
|
release.close();
|
||||||
release.open("etc/SuSE-release");
|
release.open("etc/SuSE-release");
|
||||||
if (release.is_open()) {
|
if (release.is_open()) {
|
||||||
getline(release, release_line);
|
getline(release, release_line);
|
||||||
result = release_line;
|
result = release_line;
|
||||||
return result.length();
|
return result.length();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Just give up */
|
/* Just give up */
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
static String WindowsVersionHelper()
|
||||||
|
{
|
||||||
|
//Minimum required Version, the installer/user is in the responsibility to take care of that
|
||||||
|
String winver = "Windows Vista";
|
||||||
|
if (IsWindowsVistaSP1OrGreater())
|
||||||
|
winver = "Windows Vista SP1";
|
||||||
|
if (IsWindowsVistaSP2OrGreater())
|
||||||
|
winver = "Windows Vista SP2";
|
||||||
|
if (IsWindows7OrGreater())
|
||||||
|
winver = "Windows 7";
|
||||||
|
if (IsWindows7SP1OrGreater())
|
||||||
|
winver = "Windows 7 SP1";
|
||||||
|
if (IsWindows8OrGreater())
|
||||||
|
winver = "Windows 8";
|
||||||
|
if (IsWindows8Point1OrGreater())
|
||||||
|
winver = "Windows 8.1 or greater";
|
||||||
|
if (IsWindowsServer())
|
||||||
|
winver += " (Server)";
|
||||||
|
|
||||||
|
return winver;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
@ -567,6 +593,11 @@ void Application::DisplayInfoMessage(std::ostream& os, bool skipVersion)
|
||||||
<< " Operating system: " << UnameHelper('s') << "\n"
|
<< " Operating system: " << UnameHelper('s') << "\n"
|
||||||
<< " Operating system version: " << UnameHelper('r') << "\n"
|
<< " Operating system version: " << UnameHelper('r') << "\n"
|
||||||
<< " Architecture: " << UnameHelper('m') << "\n";
|
<< " Architecture: " << UnameHelper('m') << "\n";
|
||||||
|
#else
|
||||||
|
os << "\n"
|
||||||
|
<< "System information:\n"
|
||||||
|
<< " Operating system: Windows\n"
|
||||||
|
<< " Operating system version: " << WindowsVersionHelper() << "\n";
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
|
Loading…
Reference in New Issue