Esempio n. 1
0
void CConfig::ReadAndSetLogLevel()
{
	if ( CIniParser::FindGroup( "GLOBAL" ) == NULL )
		return;

	g_nNLogLevel = NLOG_LVL_ERR;
	char szlogLvl[32];
	READ_DEFAULT_VARIABLE_STRING ( "LOG_LEVEL", szlogLvl, "ERR");

	NLOG_LVL nLogLevel = NLogLevelGetType(szlogLvl);

	LOG(" CConfig::ReadAndSetLogLevel: GLOBAL/LOG_LEVEL = %s -> %s", szlogLvl, NLogLevelGetName(nLogLevel));

	if (nLogLevel != NLOG_LVL_UNK)
	{
		g_nNLogLevel = nLogLevel;
	}
	else LOG(" CConfig::ReadAndSetLogLevel: GLOBAL/LOG_LEVEL unk -> use default: %s", NLogLevelGetName(g_nNLogLevel));


	if ( CIniParser::FindGroup( m_szModule ) == NULL )
		return;

	READ_DEFAULT_VARIABLE_STRING ( "LOG_LEVEL", szlogLvl, "UNK");

	nLogLevel = NLogLevelGetType(szlogLvl);

	LOG(" CConfig::ReadAndSetLogLevel: %s/LOG_LEVEL = %s -> %s", m_szModule, szlogLvl, NLogLevelGetName(nLogLevel));

	if (nLogLevel != NLOG_LVL_UNK)
	{
		g_nNLogLevel = nLogLevel;
	}
	else LOG(" CConfig::ReadAndSetLogLevel: %s/LOG_LEVEL unk -> use GLOBAL: %s", m_szModule, NLogLevelGetName(g_nNLogLevel));
}
int CNMS_DispatcherConfig::Init()
{
	if (!CConfig::Init("NMS_Dispatcher"))
	{	return 0;
	}

	
	READ_DEFAULT_VARIABLE_INT("MODULE_RESTART_INTERVAL", m_nModuleRstInterval, 5 );	///default 5 seconds
	READ_DEFAULT_VARIABLE_INT("IPV4_PORT", m_nLocalPortIPv4, 40000 );	///default 40000
	READ_DEFAULT_VARIABLE_INT("IPV6_PORT", m_nLocalPortIPv6, 41000 );	///default 41000
	READ_DEFAULT_VARIABLE_INT("CHECK_TIMEDOUT_INTERVAL", m_nCheckTimedoutIntervalS, 20 );	///default 20 seconds
	
	READ_DEFAULT_VARIABLE_INT("REQUEST_UPDATE_INTERVAL", m_nReqUpdTimedoutIntervalS, 10);
	READ_DEFAULT_VARIABLE_INT("REQUEST_UPDATE_RETRY_COUNT", m_nReqUpdNo, 10);		//wait until erase	
	
	READ_DEFAULT_VARIABLE_INT("PENDING_RELATION_TIMEDOUT", m_nPendingRelationTimedoutS, 90 );			///default 90 seconds
	READ_DEFAULT_VARIABLE_INT("RELEASE_MODULE_CACHE_TIMEDOUT", m_nReleaseModuleCacheTimedoutH, 48 );	///default 48 hours
	READ_DEFAULT_VARIABLE_INT("DB_IPV6_RELOAD_TIMEDOUT", m_nDBIPv6ReloadTimedoutS, 60);					///default 60 seconds
	
	//reload ipv6 netprefixes
	READ_DEFAULT_VARIABLE_INT("DB_IPV6_RELOAD_NETPREFIX_INTERVAL", m_nReloadNetPrefixesIntervalS, 60);		///default 1 minute
	
	// security type
	char szBuff[250];
	READ_DEFAULT_VARIABLE_STRING ("SECURITY", szBuff, UNDEF_SECURITY_MANAGER);
    ISecurityManager::assignSecurity(m_oSecurity, szBuff);
    
	IF_USE_SECURITY_MANAGER (m_oSecurity.c_str())
		IF_USE_OPENVPN_MANAGER (m_oSecurity.c_str())
			// OpenVPN subnet
			READ_DEFAULT_VARIABLE_STRING ("OPENVPN_SUBNET", szBuff, NMS_DEFAULT_OPENVPN_SUBNET);
			m_oOpenVPNSubnet = szBuff;
			READ_DEFAULT_VARIABLE_STRING ("OPENVPN_SUBNET_MASK", szBuff, NMS_DEFAULT_OPENVPN_SUBNET_MASK);
			m_oOpenVPNSubnetMask = szBuff;
		END_IF
	END_IF
	
	//DB
	if (!CIniParser::FindGroup("NMS_DB")) 
	{
		return 0;	
	}

	char szTmp[250];
	READ_DEFAULT_VARIABLE_STRING ("DB_SERVER", szTmp, DEFAULT_DB_SERVER);
	m_strServer = szTmp;
	READ_DEFAULT_VARIABLE_STRING ("DB_USER", szTmp, DEFAULT_DB_USER);
	m_strUser = szTmp;
	READ_DEFAULT_VARIABLE_STRING ("DB_PASS", szTmp, DEFAULT_DB_PASS);
	m_strPass = szTmp;
	READ_DEFAULT_VARIABLE_STRING ("DB_NAME", szTmp, DEFAULT_DB_NAME);
	m_strDB = szTmp;
	
	CIniParser::FindGroup("NMS_Dispatcher");
	
	return 1;
}
/// Load the config.ini file and parse it to extract various configurations out of it
/// @retval 1 success
/// @retval 0 failure
/// @note DO NOT read same variable in Init() and Reload(). Init calls Reload.
int CISAConfig::Init()
{
	if(!CConfig::Init("GATEWAY"))
	{
		return 0;
	}

	READ_DEFAULT_VARIABLE_INT ("TCP_YGSAP_PORT",  m_nYGSAP_TCPPort, 0);
	READ_DEFAULT_VARIABLE_INT ("TCP_SERVER_PORT", m_nGSAP_TCPPort, 4900);

	READ_DEFAULT_VARIABLE_INT ("TCP_SERVER_PORT_SSL", m_nGSAP_TCPPort_SSL, 0);
	READ_DEFAULT_VARIABLE_INT ("TCP_YGSAP_PORT_SSL", m_nYGSAP_TCPPort_SSL, 0);
	
	READ_DEFAULT_VARIABLE_INT ("SM_LINK_TIMEOUT", m_nPingTimeout, 50);
	READ_DEFAULT_VARIABLE_STRING("GATEWAY_TAG", m_szGWTag, "Nivis Gateway" );

	if ( m_nGSAP_TCPPort_SSL != 0 ||  m_nYGSAP_TCPPort_SSL != 0)
	{
		READ_DEFAULT_VARIABLE_STRING("SSL_SERVER_CERTIF_FILE", m_szSslServerCertif, "/access_node/activity_files/ssl_resources/servercert.pem" );
		READ_DEFAULT_VARIABLE_STRING("SSL_SERVER_KEY_FILE", m_szSslServerKey, "/access_node/activity_files/ssl_resources/serverkey.pem" );
		READ_DEFAULT_VARIABLE_STRING("SSL_CA_CERTIF_FILE", m_szSslCaCertif, "/access_node/activity_files/ssl_resources/cakey.pem" );
	}
	

	if(GetVar("HOST_APP", &m_HostAddr )){
		LOG_HEX( "m_HostAddr(hexdump):", (uint8*)&m_HostAddr, sizeof(net_address));
	}

	READ_MANDATORY_VARIABLE("GATEWAY_IPv6", m_oGWIPv6 );

	char szIPv4[16];
	READ_MANDATORY_VARIABLE_STRING("GATEWAY_IPv4", szIPv4);
	READ_MANDATORY_VARIABLE("GATEWAY_UDPPort", m_nGW_UDPPort)

	if (!AdjustIPv6(&m_oGWIPv6,szIPv4, m_nGW_UDPPort))
	{
		return 0;
	}

	LOG("GW IPv6=%s IPv4=%s UDPPort=%d", m_oGWIPv6.GetPrintIPv6(), szIPv4, m_nGW_UDPPort);

	if(!GetVar("GATEWAY_EUI64", (uint8_t*)m_pu8GWEUI64, sizeof(m_pu8GWEUI64)))
	{
		return 0;
	}

	READ_MANDATORY_VARIABLE("SubnetID", m_nSubnetID);
	LOG("SubnetID %u (0x%X)", m_nSubnetID, m_nSubnetID);
	READ_MANDATORY_VARIABLE_STRING("AppJoinKey", m_u8AppJoinKey);
	
	READ_DEFAULT_VARIABLE_INT ("TLDE_HLIST_SIZE",  m_nTldeHListSize, 100);
	READ_DEFAULT_VARIABLE_INT ("TLDE_HLIST_TIME_WINDOW",  m_nTldeHListTimeWindow, 60);

	Reload();

	if(!CIniParser::GetVar("SYSTEM_MANAGER", "SYSTEM_MANAGER_IPv6", &m_oSMIPv6 ))
	{	return 0;
	}
	if(!CIniParser::GetVar("SYSTEM_MANAGER", "SYSTEM_MANAGER_IPv4", szIPv4, sizeof(szIPv4)))
	{	return 0;
	}
	if(!CIniParser::GetVar("SYSTEM_MANAGER", "SYSTEM_MANAGER_Port", &m_nSMPort))
	{	return 0;
	}
	if(!CIniParser::GetVar("SYSTEM_MANAGER", "CURRENT_UTC_ADJUSTMENT", &m_nCrtUTCAdj))
	{	return 0;
	}
	if (!AdjustIPv6(&m_oSMIPv6,szIPv4, m_nSMPort))
	{	return 0;
	}
	LOG("SM IPv6=%s IPv4=%s Port=%d", m_oSMIPv6.GetPrintIPv6(), szIPv4, m_nSMPort);

	if(!CIniParser::GetVar("SYSTEM_MANAGER", "SECURITY_MANAGER_EUI64", m_u8SecurityManager, sizeof(m_u8SecurityManager)))
	{	return 0;
	}

	LOG("Config loaded");
	//--------------
	return 1;
}
Esempio n. 4
0
int CConfig::Init( const char * p_szModule, const char * p_szFileName )
{
    LOG( "CConfig::Init" );

    m_nIsMasterAN = NO_RF_MEMBER;

    if( ! Load( p_szFileName )
	|| ! CIniParser::FindGroup("GLOBAL")
	|| ( CIniParser::GetVar(NULL, "AN_ID",(unsigned char*)(&m_stAddress), sizeof(m_stAddress)) != sizeof(m_stAddress) )
	|| ( CIniParser::GetVar(NULL, "APP_ID",(unsigned char*)(&m_shAppId), sizeof(m_shAppId)) != sizeof(m_shAppId) )
	|| (m_shAppId == 0)
	|| ((*(int*)&m_stAddress) == 0)
	)
	{
	    LOG( "PANIC CConfig::Init: section GLOBAL  not found, or AN_ID/APP_ID are wrong");
	    Release();    // calling parent's Release()
	    return 0;
	}
	//LOG("CConfig::Init: AN_ID=%s APP_ID=%s", GetHex(&m_stAddress,sizeof(m_stAddress)), GetHex(&m_shAppId,sizeof(m_shAppId)));
	LOG("CConfig::Init: AN_ID=%s APP_ID=%s", GetHexT(&m_stAddress), GetHexT(&m_shAppId));
	m_ppModulesToWatch[0] = 0;

	strncpy( m_szModule, p_szModule, sizeof(m_szModule)-1 );

	int nLogSize;
	bool bTail;
	int nMoveTimeout;
	char szStorage[PATH_MAX];
	char temp[ 16 ];
	int nFFree;
	bool bBackup1;

	/// create backup logs with .1 extension, SM-style
	/// when active, the FTP_SCRIPT is no longer executed
	READ_DEFAULT_VARIABLE_YES_NO ( "LOG_BACKUP_1", bBackup1, "N" );

	g_stLog.SetBackup1( bBackup1 );

	READ_DEFAULT_VARIABLE_INT ( "MODULES_STOP_TIMEOUT", CApp::m_nStopTimeout, 30 ); //seconds

	READ_DEFAULT_VARIABLE_INT ( "MAX_LOG_SIZE", nLogSize, 512 ); //kBytes

	g_stLog.SetMaxSize( nLogSize * 1024 );
	READ_DEFAULT_VARIABLE_STRING ( "LOG_STORAGE", szStorage, "");


//	g_stLog.SetStorage( szStorage);  will do it only once, because it's heavy
	READ_DEFAULT_VARIABLE_YES_NO ( "TAIL_SAFE", bTail, "NO" );
	g_stLog.SetTail( bTail);
	READ_DEFAULT_VARIABLE_INT ( "MOVE_TIMEOUT", nMoveTimeout, 120 ); //seconds
	g_stLog.SetMoveTimeout( nMoveTimeout);
	READ_DEFAULT_VARIABLE_INT ( "LOG_FLASH_FREE_LIMIT", nFFree, 5120 ); //kBytes
	g_stLog.SetFlashFreeLimit( nFFree );

 	if ( CIniParser::FindGroup( p_szModule ) == NULL )
		return 0;

	if( GetVar("MAX_LOG_SIZE", &nLogSize) ){
		LOG( "Override value for MAX_LOG_SIZE = %d", nLogSize);
		g_stLog.SetMaxSize( nLogSize * 1024 );
	}
	if( GetVar("TAIL_SAFE", temp, sizeof( temp)) ){
		bTail=( !strcasecmp( temp, "Y") || !strcasecmp( temp, "YES") || !strcasecmp( temp, "1") || !strcasecmp( temp, "TRUE"));
		LOG( "Override value for TAIL_SAFE = %s", bTail?"TRUE":"FALSE");
		g_stLog.SetTail( bTail );
	}
	if( GetVar("MOVE_TIMEOUT", &nMoveTimeout) ){
		LOG( "Override value for MOVE_TIMEOUT = %d", nMoveTimeout);
		g_stLog.SetMoveTimeout( nMoveTimeout);
	}
	if( GetVar("LOG_STORAGE", szStorage, sizeof( szStorage)) ){
		LOG( "Override value for LOG_STORAGE = %s", szStorage);
	}

	g_stLog.SetStorage( szStorage);  //we didn't do it before


	ReadAndSetLogLevel();
	return 1;
}