dc14a2a3ad
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>
104 lines
2.4 KiB
C++
104 lines
2.4 KiB
C++
//
|
||
// 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;
|
||
}
|