Exemple #1
0
///////////////////////////////////////////////////////////////
// 读StringList结点
bool ScanParamXML::ReadStringListNode( IXMLDOMNode *const pTheNode, VectorOfString &vStr )
{
	if( NULL == pTheNode )
	{
		return false;
	}
	try
	{
		vStr.clear();		// 初始化输出参数

		_variant_t varVal = 0;
		IXMLDOMNode *pIpSeedNode;
		for( pTheNode->get_firstChild( &pIpSeedNode ); pIpSeedNode != NULL; 
			pIpSeedNode->get_nextSibling( &pIpSeedNode  ) )
		{			
			varVal = ReadNodeText( pIpSeedNode );
			
			//cout << "Seed IP: " << _bstr_t( varVal.bstrVal ).operator char *() << endl;
			
			vStr.push_back( _bstr_t( varVal.bstrVal ).operator char *() );
		}
	}
	catch( ... )
	{
		return false;
	}
	return true;
}
Exemple #2
0
///////////////////////////////////////////////////////////////
// 读CommunityList结点
bool ScanParamXML::ReadCommunityListNode( IXMLDOMNode *const pTheNode, VectorOfCommunity &vCommunity )
{
	if( NULL == pTheNode )
	{
		return false;
	}
	try
	{
		vCommunity.clear();		// 初始化输出参数

		_variant_t varVal = 0;
		IXMLDOMNode *pCommunityNode, *pTextNode;
		for( pTheNode->get_firstChild( &pCommunityNode ); pCommunityNode != NULL; 
			pCommunityNode->get_nextSibling( &pCommunityNode  ) )
		{
			Community community;

			for( pCommunityNode->get_firstChild( &pTextNode ); pTextNode != NULL;
				pTextNode->get_nextSibling( &pTextNode ) )
			{	
				_variant_t varNodeName;
				pTextNode->get_nodeName( &varNodeName.bstrVal );
				varVal = ReadNodeText( pTextNode );
				string sNodeName = _bstr_t( varNodeName.bstrVal ).operator char *();;
				if( sNodeName == string( "StartIp" ) )
				{
					community.sStartIp = _bstr_t( varVal.bstrVal ).operator char *();
				}
				else if( sNodeName == string( "EndIp" ) )
				{
					community.sEndIp = _bstr_t( varVal.bstrVal ).operator char *();
				}
				else if( sNodeName == string( "Get" ) )
				{
					community.sGet = _bstr_t( varVal.bstrVal ).operator char *();
				}
				else if( sNodeName == string( "Set" ) )
				{
					community.sSet = _bstr_t( varVal.bstrVal ).operator char *();
				}				
			}
			//cout << "Start IP: " << community.sStartIp << ", End Ip :" << community.sEndIp << ", Get: " << community.sGet << ", Set: " << community.sSet << endl;
			vCommunity.push_back( community );
		}

	}
	catch( ... )
	{
		return false;
	}
	return true;
}
Exemple #3
0
///////////////////////////////////////////////////////////////
// 读IpScopeList结点
bool ScanParamXML::ReadIpScopeListNode( IXMLDOMNode *const pTheNode, VectorOfIpScope &vIpScope )
{
	if( NULL == pTheNode )
	{
		return false;
	}
	try
	{
		vIpScope.clear();		// 初始化输出参数

		_variant_t varVal = 0;
		IXMLDOMNode *pIpScopeNode, *pTextNode;
		for( pTheNode->get_firstChild( &pIpScopeNode ); pIpScopeNode != NULL; 
			pIpScopeNode->get_nextSibling( &pIpScopeNode  ) )
		{
			IPScope ipScope;

			for( pIpScopeNode->get_firstChild( &pTextNode ); pTextNode != NULL;
				pTextNode->get_nextSibling( &pTextNode ) )
			{	
				_variant_t varNodeName;
				pTextNode->get_nodeName( &varNodeName.bstrVal );
				varVal = ReadNodeText( pTextNode );
				string sNodeName = _bstr_t( varNodeName.bstrVal ).operator char *();;
				if( sNodeName == string( "StartIp" ) )
				{
					ipScope.sIpBegin = _bstr_t( varVal.bstrVal ).operator char *();
				}
				else if( sNodeName == string( "EndIp" ) )
				{
					ipScope.sIpEnd = _bstr_t( varVal.bstrVal ).operator char *();
				}				
			}
			//cout << "Start IP: " << ipScope.sIpBegin << ", End Ip :" << ipScope.sIpEnd << endl;
			vIpScope.push_back( ipScope );
		}
	}
	catch( ... )
	{
		return false;
	}
	return true;
}
Exemple #4
0
	CString CXmlNode::ReadNodeTextBase(const wchar_t* bsName)
	{
		return ReadNodeText(CString(bsName));
	}
Exemple #5
0
///////////////////////////////////////////////////////////////
// 功能: XML 文档文本转换成扫描参数结构
// 参数: sXMLDocText	[in]	XML文档的文本
//		 sp				[out]	扫描参数结构
// 返回: true - 成功, false - 失败
bool ScanParamXML::XMLToScanParam( const string &sXMLDocText, ScanParameter &sp )
{
	try
	{
		IXMLDOMDocument *pXmlDoc = NULL;
		IXMLDOMNode *pXmlDomNode = NULL;
			
		// 得到关于IXMLDOMDocument 接口的指针 pXMLDOC
		HRESULT hr = ::CoCreateInstance( CLSID_DOMDocument,
										NULL, 
										CLSCTX_INPROC_SERVER,
										IID_IXMLDOMDocument, 
										( void ** )&pXmlDoc );
		if( S_OK != hr )
		{
			return false;
		}

		//得到关于IXMLDOMNode接口的指针pXDN 
		hr = pXmlDoc->QueryInterface( IID_IXMLDOMNode,
									( void ** )&pXmlDomNode );
		if( S_OK != hr )
		{
			return false;
		}
		
		VARIANT_BOOL bOk;
		_variant_t varSrc = sXMLDocText.c_str();
		IXMLDOMElement *pRootNode;	// 根结点
		IXMLDOMNode *pNode;
		IXMLDOMNode *pNodeOut;
		
		pXmlDoc->loadXML( varSrc.bstrVal, &bOk  );	// 从字符串建立XML文档

		// 取得根结点
		pXmlDoc->get_documentElement( &pRootNode );		
		pRootNode->get_nodeName( &varSrc.bstrVal );

		// 遍历根结点的子结点
		for( pRootNode->get_firstChild( &pNode );
			pNode != NULL; pNode->get_nextSibling( &pNode ) )
		{
			pNode->get_nodeName( &varSrc.bstrVal );
			// cout << "Node name: " << varSrc.operator _bstr_t().operator char *() << endl;

			string sNodeName = _bstr_t( varSrc.bstrVal ).operator char *();
			if( sNodeName == string( "Depth" ) )
			{	// 发现 Depth 结点
				varSrc = ReadNodeText( pNode );
				sp.nDepth = atoi( _bstr_t( varSrc.bstrVal ).operator char *() );

				//cout << "Depth value: " << sp.nDepth << endl;
			}
			else if( sNodeName == string( "TryTimes" ) )
			{	// 发现 TryTimes 结点
				varSrc = ReadNodeText( pNode );
				sp.nTryTimes = atoi( _bstr_t( varSrc.bstrVal ).operator char *() );

				//cout << "TryTimes value: " << sp.nTryTimes << endl;
			}	
			else if( sNodeName == string( "Timeout" ) )
			{	// 发现 Timeout 结点
				varSrc = ReadNodeText( pNode );
				sp.nTimeout = atoi( _bstr_t( varSrc.bstrVal ).operator char *() );

				//cout << "Timeout value: " << sp.nTimeout << endl;
			}		
			else if( sNodeName == string( "MaxTreadCount" ) )
			{	// 发现 MaxTreadCount 结点
				varSrc = ReadNodeText( pNode );
				sp.nMaxTreadCount = atoi( _bstr_t( varSrc.bstrVal ).operator char *() );

				//cout << "MaxTreadCount value: " << sp.nMaxTreadCount << endl;
			}
			else if( sNodeName == string( "SubScan" ) )
			{	// 发现 SubScan 结点
				varSrc = ReadNodeText( pNode );
				sp.bSubScan = ( string( _bstr_t( varSrc.bstrVal ).operator char *() ) == XML_TRUE ) ;

				//cout << "SubScan value: " << sp.bSubScan << endl;
			}		
			else if( sNodeName == string( "DefaultCommunityGet" ) )
			{	// 发现 DefaultCommunityGet 结点
				varSrc = ReadNodeText( pNode );
				sp.sDefaultCommunityOfGet = _bstr_t( varSrc.bstrVal ).operator char *();

				//cout << "DefaultCommunityGet value: " << sp.sDefaultCommunityOfGet << endl;
			}		
			else if( sNodeName == string( "DefaultCommunitySet" ) )
			{	// 发现 DefaultCommunitySet 结点
				varSrc = ReadNodeText( pNode );
				sp.sDefaultCommunityOfSet = _bstr_t( varSrc.bstrVal ).operator char *();

				//cout << "DefaultCommunityOfSet value: " << sp.sDefaultCommunityOfSet << endl;
			}		
			else if( sNodeName == string( "Communitys" ) )
			{	// 发现 Communitys 结点
				ReadCommunityListNode( pNode, sp.vcCommunityList );
			}		
			else if( sNodeName == string( "AddStartEnds" ) )
			{	// 发现 AddStartEnds 结点
				ReadIpScopeListNode( pNode, sp.viIpScopeList );	// 读IpScopeList结点
			}		
			else if( sNodeName == string( "FilterStartEnds" ) )
			{	// 发现 FilterStartEnds 结点
				ReadIpScopeListNode( pNode, sp.viFilterStartEndList );	// 读IpScopeList结点
			}		
			else if( sNodeName == string( "SubnetList" ) )
			{	// 发现 SubnetList 结点
				ReadIpScopeListNode( pNode, sp.viSubnetList );	// 读IpScopeList结点
			}		
			else if( sNodeName == string( "SeedIpList" ) )
			{	// 发现 SeedIp 结点
				ReadStringListNode( pNode, sp.vsSeedIpList );
			}
		}		
		
		// cout << "XMLToScanParam done successfully!" << endl;
	} 
	catch(...)
	{
		return false;
	}
	return true;
}