fault/fm-common/sources/fmConfig.cpp
pablo bovina dc14a2a3ad Update FM Manager old net-snmp related code
Now a service outside of Fault is in charge
of trap generation, this new service manages
the SNMP configuration trap destinations,
communities, users etc.

For this reason the code that reads and stores
the SNMP configuration from fm.conf is removed.

Story: 2008132
Task: 41419

Depends-On: https://review.opendev.org/765381
Change-Id: If27f4f04f9dfc37e7404d593e3b337cbbb361552
Signed-off-by: Pablo Bovina <pablo.bovina@windriver.com>
2020-12-17 10:03:38 -03:00

104 lines
2.4 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Copyright (c) 2018-2020 Wind River Systems, Inc.
//
// SPDX-License-Identifier: Apache-2.0
//
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <map>
#include "fmAPI.h"
#include "fmLog.h"
#include "fmFile.h"
#include "fmConfig.h"
#include "fmMutex.h"
#include "fmConstants.h"
#include "fmSnmpConstants.h"
typedef std::map<std::string, std::string> configParams;
static const char *conf = NULL;
static int config_loaded = false;
std::string trim(std::string str) {
if (str.length() == 0) {
return str;
}
size_t first = str.find_first_not_of(' ');
size_t last = str.find_last_not_of(' ');
return str.substr(first, (last-first+1));
}
CFmMutex & getConfMutex() {
static CFmMutex *m = new CFmMutex;
return *m;
}
configParams &getConfigMap() {
static configParams conf;
return conf;
}
void fm_conf_set_file(const char *fn) {
conf = fn;
}
void fm_get_config_paramters() {
CfmFile f;
std::string delimiter = "=";
std::string line, key, value;
size_t pos = 0;
if (conf == NULL) {
FM_ERROR_LOG("The config file is not set\n");
exit(-1);
}
if (!f.open(conf, CfmFile::READ, false)) {
FM_ERROR_LOG("Failed to open config file: %s\n", conf);
exit(-1);
}
while (true) {
if (!f.read_line(line)) break;
if (line.size() == 0) continue;
if (line[0] == '#') continue;
pos = line.find(delimiter);
key = trim(line.substr(0, pos));
value = trim(line.erase(0, pos + delimiter.length()));
getConfigMap()[key] = value;
if (key.compare(FM_SQL_CONNECTION) != 0) {
// Don't log sql_connection, as it has a password
if (key.compare(FM_CONF_PASSWORD) == 0 || key.compare(FM_CONF_CONNECTION) == 0) {
// Don't log password values
continue;
} else {
FM_INFO_LOG("Config key (%s), value (%s)",
key.c_str(), value.c_str());
}
}
}
}
bool fm_get_config_key(std::string &key, std::string &val) {
configParams::iterator it;
CFmMutexGuard m(getConfMutex());
if (!config_loaded) {
fm_get_config_paramters();
config_loaded = true;
}
it = getConfigMap().find(key);
if (it != getConfigMap().end()) {
val = it->second;
return true;
}
return false;
}