当前位置: 首页>>代码示例>>C++>>正文


C++ CConfig::GetParamValue方法代码示例

本文整理汇总了C++中CConfig::GetParamValue方法的典型用法代码示例。如果您正苦于以下问题:C++ CConfig::GetParamValue方法的具体用法?C++ CConfig::GetParamValue怎么用?C++ CConfig::GetParamValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CConfig的用法示例。


在下文中一共展示了CConfig::GetParamValue方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: LoadConf

int LoadConf (const char *p_pszConfDir) {
	int iRetVal = 0;
	std::string strConfDir;
	std::string strConfFile;

	do {
		strConfDir = p_pszConfDir;
		if ('/' != strConfDir[strConfDir.length() - 1]) {
			strConfDir += '/';
		}
		strConfFile = strConfDir + "coam.conf";
		iRetVal = g_coConf.LoadConf (strConfFile.c_str());
		if (iRetVal) { iRetVal = -1; break; }

		std::vector<std::string> vectValList;
		std::vector<std::string>::iterator iterValList;
		CConfig *pcoTmp;

		g_coConf.GetParamValue ("location", vectValList);
		for (iterValList = vectValList.begin(); iterValList != vectValList.end(); ++iterValList) {
			strConfFile = strConfDir + *iterValList;
			pcoTmp = new CConfig;
			iRetVal = pcoTmp->LoadConf (strConfFile.c_str());
			if (iRetVal) { iRetVal = -1; break; }
			g_mapLocationConf.insert (std::make_pair (std::string(*iterValList), pcoTmp));
		}
		if (iRetVal) { break; }
	} while (0);

	return iRetVal;
}
开发者ID:isub,项目名称:coam,代码行数:31,代码来源:coam.cpp

示例2: ChangeOSUser

void ChangeOSUser ()
{
	int iFnRes;
	const char *pszUser, *pszGroup;
	passwd *psoPswd;
	group *psoGroup;
	gid_t idUser, idGroup;
	std::string strVal;

	// изменяем id пользователя ОС
	iFnRes = g_coConf.GetParamValue ("os_user", strVal);
	if (0 == iFnRes) {
		pszUser = strVal.c_str();
		psoPswd = getpwnam (pszUser);
		if (psoPswd) {
			idUser = psoPswd->pw_uid;
		} else {
			idUser = (gid_t)-1;
		}
	}

	strVal.clear();
	iFnRes = g_coConf.GetParamValue ("os_group", strVal);
	if (0 == iFnRes) {
		pszGroup = strVal.c_str();
		psoGroup = getgrnam (pszGroup);
		if (psoGroup) {
			idGroup = psoGroup->gr_gid;
		} else {
			idGroup = (gid_t)-1;
		}
	}
	g_coLog.SetUGIds (idUser, idGroup);
	if ((gid_t)-1 != idUser) {
		setuid (idUser);
	}
	if ((gid_t)-1 != idGroup) {
		setgid (idGroup);
	}
}
开发者ID:isub,项目名称:coam,代码行数:40,代码来源:coam.cpp

示例3: Filter

bool Filter(const char *p_pszFilterName, std::string &p_strLocation, std::string &p_strValue)
{
	bool bRetVal = false;
	int iFnRes;
	std::map<std::string,CConfig*>::iterator iterLocation;
	std::vector<std::string> vectValList;
	std::vector<std::string>::iterator iterValList;
	CConfig *pcoLocConf;
	int iValueLen = p_strValue.length();

	do {
		// ищем конфигурацию локации
		iterLocation = g_mapLocationConf.find (p_strLocation);
		if (iterLocation == g_mapLocationConf.end()) {
			UTL_LOG_E(g_coLog, "Location '%s' configuration not found", p_strLocation.c_str());
			bRetVal = true;
			break;
		}
		pcoLocConf = iterLocation->second;
		if (NULL == pcoLocConf) {
			UTL_LOG_E(g_coLog, "Location '%s' configuration not exists", p_strLocation.c_str());
			bRetVal = true;
			break;
		}
		/* выбираем фильтры для локации */
		if (0 != pcoLocConf->GetParamValue (p_pszFilterName, vectValList)) {
			bRetVal = true;
			break;
		}
		// обходим все правила изменения имен сервисов
		for (iterValList = vectValList.begin(); iterValList != vectValList.end(); ++iterValList) {
			// если длина значения больше или равна длине значения фильтра
			if (static_cast<size_t>(iValueLen) >= iterValList->length()) {
				// сравниваем префикс с началом имени сервиса
				iFnRes = p_strValue.compare( 0, iterValList->length(), *iterValList );
				// если перфикс и начало имени сервиса совпадают
				if (0 == iFnRes) {
					bRetVal = true;
					UTL_LOG_N( g_coLog, "value %s matched to filter %s", p_strValue.c_str(), iterValList->c_str() );
					break;
				} else {
					UTL_LOG_N( g_coLog, "value %s NOT matched to filter %s(length: %u)", p_strValue.c_str(), iterValList->c_str(), iterValList->length() );
				}
			}
		}
	} while (0);

	return bRetVal;
}
开发者ID:isub,项目名称:coam,代码行数:49,代码来源:coam.cpp

示例4: ModifyName

int ModifyName(
	const char *p_pszModifyRule,
	std::string &p_strLocation,
	std::string &p_strValue)
{
	int iRetVal = 0;
	std::map<std::string,CConfig*>::iterator iterLocation;
	std::vector<std::string> vectValList;
	std::vector<std::string>::iterator iterValList;
	CConfig *pcoLocConf;

	do {
		iterLocation = g_mapLocationConf.find (p_strLocation);
		if (iterLocation == g_mapLocationConf.end()) {
			UTL_LOG_E(g_coLog, "Location '%s' configuration not found", p_strLocation.c_str());
			iRetVal = -1;
			break;
		}
		pcoLocConf = iterLocation->second;
		if (NULL == pcoLocConf) {
			UTL_LOG_E(g_coLog, "location '%s' configuration not exists", p_strLocation.c_str());
			iRetVal = -2;
			break;
		}
		iRetVal = pcoLocConf->GetParamValue (p_pszModifyRule, vectValList);
		if (iRetVal) {
			break;
		}
		// выбираем первое правило
		iterValList = vectValList.begin();
		// обходим все правила изменения имен сервисов
		while (iterValList != vectValList.end()) {
			UTL_LOG_N( g_coLog, "rule: %s; location: %s; value: %s", p_pszModifyRule, p_strLocation.c_str(), p_strValue.c_str() );
			if( ModifyValue( *iterValList, p_strValue ) ) {
				UTL_LOG_N( g_coLog, "modified value: rule: %s; location: %s; value: %s", p_pszModifyRule, p_strLocation.c_str(), p_strValue.c_str() );
				break;
			}
			++iterValList;
		}
	} while (0);

	return iRetVal;
}
开发者ID:isub,项目名称:coam,代码行数:43,代码来源:coam.cpp

示例5: ActivateService

int ActivateService (
	const SSessionInfo *p_pcsoSessInfo,
	const char *p_pcszServiceInfo,
	const char *p_pcszAttr,
	CIPConnector *p_pcoIPConn)
{
	int iRetVal = 0;
	char mcPack[0x10000];
	__uint16_t ui16PackLen;
	__uint16_t ui16ValueLen;
	CPSPacket coPSPack;
	SPSRequest *psoReq;

	do {
		psoReq = (SPSRequest*)mcPack;

		// ищем конфигурацию локации
		std::map<std::string,CConfig*>::iterator iterLocConf;
		CConfig *pcoLocConf;
		iterLocConf = g_mapLocationConf.find (p_pcsoSessInfo->m_strLocation);
		// если конфигурация локации не найдена
		if (iterLocConf == g_mapLocationConf.end()) {
			UTL_LOG_E(g_coLog, "Location '%s' configuration not found", p_pcsoSessInfo->m_strLocation.c_str());
			iRetVal = -1;
			break;
		}
		pcoLocConf = iterLocConf->second;

		iRetVal = SetCommonCoASensorAttr (psoReq, sizeof (mcPack), p_pcsoSessInfo, pcoLocConf, p_pcoIPConn);
		if (iRetVal) {
			break;
		}

		// добавляем атрибут PS_COMMAND
		const char *pcszConfParamName;
		char mcCommand[0x400];
		std::string strCmd;
		std::string strUserAttrName;

		pcszConfParamName = "activation";
		// запрашиваем значение конфигурационного параметра
		iRetVal = pcoLocConf->GetParamValue (pcszConfParamName, strCmd);
		// если параметр не найден
		if (iRetVal) {
			UTL_LOG_E(g_coLog, "Config parameter '%s' not found", pcszConfParamName);
			break;
		}
		// или его значение не задано
		if (0 == strCmd.length()) {
			UTL_LOG_E(g_coLog, "Config parameter '%s' not defined", pcszConfParamName);
			iRetVal = -1;
			break;
		}
		// запрашиваем значение конфигурационного параметра
		pcszConfParamName = "use_policy_attr_name";
		iRetVal = pcoLocConf->GetParamValue (pcszConfParamName, strUserAttrName);
		// если параметр не найден
		if (iRetVal) {
			UTL_LOG_E(g_coLog, "Config parameter '%s' not found", pcszConfParamName);
			break;
		}
		if (0 == strUserAttrName.compare ("yes") && NULL != p_pcszAttr) {
			ui16ValueLen = snprintf (mcCommand, sizeof(mcCommand), "%s=%s=%s", strCmd.c_str(), p_pcszAttr, p_pcszServiceInfo);
		} else {
			ui16ValueLen = snprintf (mcCommand, sizeof(mcCommand), "%s=%s", strCmd.c_str(), p_pcszServiceInfo);
		}
		if (ui16ValueLen > sizeof(mcCommand) - 1) {
			UTL_LOG_E(g_coLog, "buffer 'mcCommand' too small to store value: needed size is: '%u'", ui16ValueLen);
			iRetVal = -1;
			break;
		}
		ui16PackLen = coPSPack.AddAttr(psoReq, sizeof(mcPack), PS_COMMAND, mcCommand, ui16ValueLen, 0);

		iRetVal = p_pcoIPConn->Send (mcPack, ui16PackLen);
		if (iRetVal) {
			UTL_LOG_E(g_coLog, "'p_pcoIPConn->Send': error code: '%d'", iRetVal);
			break;
		}

		iRetVal = p_pcoIPConn->Recv (mcPack, sizeof(mcPack));
		if (0 == iRetVal) {
			UTL_LOG_E(g_coLog, "connection is closed");
			iRetVal = -1;
			break;
		}
		if (0 > iRetVal) {
			UTL_LOG_E(g_coLog, "'p_pcoIPConn->Recv': error code: '%d'", iRetVal);
			break;
		}
		iRetVal = ParsePSPack ((SPSRequest*)mcPack, iRetVal);
	} while (0);

	switch (iRetVal) {
	case 0:
	case -45:
		UTL_LOG_N(
			g_coLog,
			"UserName: '%s'; NASIPAddress: '%s'; SessionID: '%s'; Policy '%s' activated; result code: '%d'",
			p_pcsoSessInfo->m_strUserName.c_str(),
			p_pcsoSessInfo->m_strNASIPAddress.c_str(),
//.........这里部分代码省略.........
开发者ID:isub,项目名称:coam,代码行数:101,代码来源:coam.cpp

示例6: InitCoAManager

int InitCoAManager ()
{
	int iRetVal = 0;

	do {
		std::vector<std::string> vectConfParam;
		std::string strConfParam;

		iRetVal = g_coConf.GetParamValue ("log_file_mask", strConfParam);
		if (iRetVal) {
			UTL_LOG_F(g_coLog, "Log file mask not defined");
			break;
		}
		/* инициализация логгера */
		iRetVal = g_coLog.Init (strConfParam.c_str());
		if (iRetVal) {
			UTL_LOG_F(g_coLog, "can not initialize log writer: code: '%d'", iRetVal);
			break;
		}
		/* изменение пользователя и группы владельца демона */
		ChangeOSUser ();

		std::string strDBPoolSize;
		int iDBPoolSize;
		int iFnRes;

		const char *pcszConfParam = "db_pool_size";
		iFnRes = g_coConf.GetParamValue( pcszConfParam, strDBPoolSize );
		if( iFnRes || 0 == strDBPoolSize.length() ) {
			UTL_LOG_F( g_coLog, "dbpool: configuration parameter '%s' not defined", pcszConfParam );
		} else {
			iDBPoolSize = atoi( strDBPoolSize.c_str() );
		}

		std::string strDBUser, strDBPswd, strDBDescr;

		pcszConfParam = "db_user";
		iFnRes = g_coConf.GetParamValue( pcszConfParam, strDBUser );
		if( iFnRes || 0 == strDBUser.length() ) {
			UTL_LOG_F( g_coLog, "dbpool: configuration parameter '%s' not defined", pcszConfParam );
		}

		/* запрашиваем пароль пользователя БД из конфигурации */
		pcszConfParam = "db_pswd";
		iFnRes = g_coConf.GetParamValue( pcszConfParam, strDBPswd );
		if( iFnRes || 0 == strDBPswd.length() ) {
			UTL_LOG_F( g_coLog, "dbpool: configuration parameter '%s' not defined", pcszConfParam );
		}

		/* запрашиваем дескриптор БД из конфигурации */
		pcszConfParam = "db_descr";
		iFnRes = g_coConf.GetParamValue( pcszConfParam, strDBDescr );
		if( iFnRes || 0 == strDBDescr.length() ) {
			UTL_LOG_F( g_coLog, "dbpool: configuration parameter '%s' not defined", pcszConfParam );
		}

		/* инициализация пула подклчений к БД */
		iRetVal = db_pool_init(&g_coLog, strDBUser, strDBPswd, strDBDescr, iDBPoolSize );
		if (iRetVal) {
			UTL_LOG_F(g_coLog, "can not initialize DB pool");
		}
		/* создание списка NASов */
		iRetVal = CreateNASList (&g_mapNASList);
		if (iRetVal) {
			break;
		}
		/* инициализация пула потоков */
		iRetVal = InitThreadPool ();
		if (iRetVal) {
			break;
		}
	} while (0);

	return iRetVal;
}
开发者ID:isub,项目名称:coam,代码行数:75,代码来源:coam.cpp

示例7: ConnectCoASensor

int ConnectCoASensor (CIPConnector &p_coIPConn) {
	int iRetVal = 0;
	std::vector<std::string> vectValList;
	const char *pcszConfParam;	// значение параметра из конфигурации
	const char *pcszHostName;	// имя удаленного хоста
	uint16_t ui16Port;			// порт удаленного хоста
	int iProtoType;				// тип протокола взаимодействия с удаленным хостом
	int iFnRes;

	do {
		// выбираем сведения о сетевом протоколе
		pcszConfParam = "coa_sensor_proto";
		iRetVal = g_coConf.GetParamValue (pcszConfParam, vectValList);
		if (iRetVal) {
			iRetVal = -1;
			UTL_LOG_F(g_coLog, "configuration parameter '%s' not found",
				pcszConfParam);
			break;
		}
		if (0 == stricmp ("TCP", vectValList[0].c_str())) {
			iProtoType = IPPROTO_TCP;
		} else if (0 == stricmp ("UDP", vectValList[0].c_str())) {
			iProtoType = IPPROTO_UDP;
		} else {
			iRetVal = -1;
			UTL_LOG_F(
				g_coLog,
				"configuration parameter '%s' containts unsuppurted value '%s'",
				pcszConfParam,
				vectValList[0].c_str());
			break;
		}
		// выбираем имя хоста CoA-сенсора
		vectValList.clear();
		pcszConfParam = "coa_sensor_addr";
		iRetVal = g_coConf.GetParamValue (pcszConfParam, vectValList);
		if (iRetVal) {
			UTL_LOG_F(
				g_coLog,
				"configuration parameter '%s' not found",
				pcszConfParam);
			break;
		}
		pcszHostName = vectValList[0].c_str();
		// выбираем порт CoASensor-а
		vectValList.clear();
		pcszConfParam = "coa_sensor_port";
		iRetVal = g_coConf.GetParamValue (pcszConfParam, vectValList);
		if (iRetVal) {
			UTL_LOG_F(
				g_coLog,
				"configuration parameter '%s' not found",
				pcszConfParam);
			break;
		}
		ui16Port = atol (vectValList[0].c_str());

		/* подключаемся к удаленному хосту */
		iFnRes = p_coIPConn.Connect (pcszHostName, ui16Port, iProtoType);
		if (iFnRes) {
			iRetVal = -1;
			UTL_LOG_F(
				g_coLog,
				"can't connect to CoASensor");
			break;
		}
	} while (0);

	return iRetVal;
}
开发者ID:isub,项目名称:coam,代码行数:70,代码来源:coam.cpp


注:本文中的CConfig::GetParamValue方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。