Exemple #1
0
BOOL CPop3Connection::GetMessageHeader(int nMsg, CPop3Message& message)
{
	// Must be connected to retrieve a message
	if(!m_bConnected)
	{
		//m_sLastCommandResponse = _T("ͨÐÅ佨Á¢");//<%IDS_Pop3_28%>
		m_sLastCommandResponse = FuncGetStringFromIDS("<%IDS_Pop3_28%>");
		return FALSE;
	}
	
	// make sure the message actually exists
	DWORD dwSize;
	if (GetMessageSize(nMsg, dwSize))
	{
		// Send the TOP command
		char sBuf[16];
		sprintf(sBuf, "TOP %d 0\r\n", nMsg);
		int nCmdLength = strlen(sBuf);
		if (!m_pop.Send(sBuf, nCmdLength))
		{
			TRACE(_T("Failed to send the TOP command to the POP3 server\n"));
			//m_sLastCommandResponse = _T("·¢ËÍTOPÃüÁîʧ°Ü");//<%IDS_Pop3_29%>
			m_sLastCommandResponse = FuncGetStringFromIDS("<%IDS_Pop3_29%>");
			return FALSE;
		}
		
		// And check the command
		return ReadReturnResponse(message, dwSize);
	}
	else
		return FALSE;
}
Exemple #2
0
BOOL HttpUnixPerfMonitorValue(char *url, char *uid, char *pwd, char *pserver, int pport, 
			char *puid, char *ppwd, char *inifile, char *custpath, char *szReturn)
{
	int		ret = 0;
	BOOL	bResult = TRUE;
	char	iniFile[256] = {0};
	char	cmd[1024] = {0};
	char	*ca = NULL;

	GetIniFileName(inifile, iniFile);
	
	if(!RETURN_COMMAND(0, iniFile, cmd))
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_14%>"));    //  <%IDS_TelMonitor_14%>
		return FALSE;
	}

	char msg[100 * 1024] = {0};
	if(!http_command(url, cmd, READ_TIMEOUT, uid, pwd, pserver, pport, puid, ppwd, msg))
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_15%>"));    //  <%IDS_TelMonitor_15%>
		return FALSE;
	}

	if(!MONITOR_PARSE(0, msg, inifile, NULL, szReturn))
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_16%>"));   //  <%IDS_TelMonitor_16%>
		return FALSE;
	}

	return TRUE;
}
Exemple #3
0
BOOL CNNTPConnection::Connect(LPCTSTR pszHostName, LPCTSTR pszUser, LPCTSTR pszPassword, int nPort)
{
	USES_CONVERSION;

	if (!m_nntp.Create())
	{
		m_strErrorMsg = FuncGetStringFromIDS("<%IDS_News_4%>");//<%IDS_News_4%>_T("ͨÐųõʼ»¯Ê§°Ü")
		return FALSE;
	}

	if (!m_nntp.Connect(pszHostName, nPort))
	{
		m_strErrorMsg = FuncGetStringFromIDS("<%IDS_News_5%>");//<%IDS_News_5%>_T("Ö÷»úÁ¬½Óʧ°Ü")
		return FALSE;
	}
	else
	{
		m_bConnected = TRUE;
		
		CString	strInfo = _T("");
		int nRes = CommandResponse(strInfo);
		if(nRes != 2)
		{
			m_strErrorMsg = strInfo;
			Disconnect();
			return FALSE;
		}

		if(*pszUser)
		{
			if(!LoginUser(pszUser))
			{
				m_strErrorMsg = FuncGetStringFromIDS("<%IDS_News_6%>");//<%IDS_News_6%>_T("µÇ¼ʧ°Ü")
				Disconnect();
				return FALSE;
			}

			if(!LoginUser(pszPassword))
			{
				m_strErrorMsg = FuncGetStringFromIDS("<%IDS_News_7%>");//<%IDS_News_7%>_T("µÇ¼ʧ°Ü")
				Disconnect();
				return FALSE;
			}
		}

		return TRUE;
	}
}
Exemple #4
0
BOOL CNNTPConnection::Group(LPCTSTR pszGroup, int &nArticles)
{
	if(!m_bConnected)
		return FALSE;
	
	CString strCmd = _T("GROUP ");
	strCmd += pszGroup;
	strCmd += _T("\r\n");

	if(!m_nntp.Send(strCmd, strCmd.GetLength()))
	{
		m_strErrorMsg = FuncGetStringFromIDS("<%IDS_News_3%>");//<%IDS_News_3%>_T("дÊý¾Ý´íÎó")
		return FALSE;
	}

	CString strInfo = _T("");
	int nRes = CommandResponse(strInfo);
	if(nRes != 2)
	{
		m_strErrorMsg = strInfo;
		return FALSE;
	}

	strInfo.Delete(0, 3);
	nArticles = atoi(strInfo);
	return TRUE;
}
Exemple #5
0
BOOL CNNTPConnection::LoginPass(LPCTSTR pszPwd)
{
	if(!m_bConnected)
		return FALSE;

	CString	strCmd = _T("AUTHINFO PASS ");
	strCmd += pszPwd;
	strCmd += _T("\r\n");

	if(!m_nntp.Send(strCmd, strCmd.GetLength()))
	{
		m_strErrorMsg = FuncGetStringFromIDS("<%IDS_News_2%>");//<%IDS_News_2%>_T("дÊý¾Ý´íÎó")
		return FALSE;
	}

	CString strInfo = _T("");
	int nRes = CommandResponse(strInfo);
	if(nRes != 2 && nRes != 3)
	{
		m_strErrorMsg = strInfo;
		return FALSE;
	}

	return TRUE;
}
Exemple #6
0
int CNNTPConnection::CommandResponse(CString &strInfo)
{
	char szResponse[1024] = {0};

	while(1)
	{
		BOOL bReadible = FALSE;
		if (!m_nntp.IsReadible(bReadible, m_nTimeout))
		{
			m_strErrorMsg = FuncGetStringFromIDS("<%IDS_News_8%>");//<%IDS_News_8%>_T("¶ÁÊý¾Ý´íÎó")
			return 0;
		}
		else if (!bReadible)
		{
			m_strErrorMsg = FuncGetStringFromIDS("<%IDS_News_9%>");//<%IDS_News_9%>_T("¶ÁÊý¾Ý³¬Ê±")
			return 0;
		}
		else
		{
			char szTemp[1024] = {0};
			int nData = m_nntp.Receive(szTemp, sizeof(szTemp));
			if(nData == SOCKET_ERROR)
			{
				m_strErrorMsg = FuncGetStringFromIDS("<%IDS_News_10%>");//<%IDS_News_10%>_T("¶ÁÊý¾Ý´íÎó")
				return 0;
			}
			szTemp[nData] = 0;
			strncat(szResponse, szTemp, nData);
			char *ca = NULL;
			if(ca = strstr(szResponse, "\r\n"))
			{
				szResponse[ca - szResponse] = 0;
				break;
			}
		}
	}

	strInfo = szResponse;
	return szResponse[0] - 0x30;
}
Exemple #7
0
BOOL HttpMonitorValue(char *url, char *uid, char *pwd, char *pserver, int pport, 
					  char *puid, char *ppwd, char *inifile, int mtype, 
					  char *extraparam, char *custpath, char *szReturn)
{
	int		ret = 0;
	BOOL	bResult = TRUE;
	char	iniFile[256] = {0};
	char	cmd[256] = {0};
	char	*ca = NULL;

	GetIniFileName(inifile, iniFile);
	
	if(!RETURN_COMMAND(mtype, iniFile, cmd))
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_14%>"));    //  <%IDS_TelMonitor_14%>
		return FALSE;
	}

	if(ca = strchr(cmd, '<')) 
	{
		strcpy(ca, extraparam);
		*(ca + strlen(extraparam)) = 0;
	}

	char msg[100 * 1024] = {0};
	if(!http_command(url, cmd, READ_TIMEOUT, uid, pwd, pserver, pport, puid, ppwd, msg))
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_15%>"));    //  <%IDS_TelMonitor_15%>
		return FALSE;
	}

	if(!MONITOR_PARSE(mtype, msg, inifile, extraparam, szReturn))
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_16%>"));   //  <%IDS_TelMonitor_16%>
		return FALSE;
	}

	return TRUE;
}
Exemple #8
0
BOOL TRAP_MONITOR(char *mstr, int altype, char *custpath, char *szReturn)
{
	FILE *fp = NULL;
	int	 lines = 0, matchCount = 0;
	char *ca = NULL, *cb = NULL;
	char szBuffer[8192] = {0};
	char std_log[256] = {0};

	sprintf(std_log, "%s\\logs\\traps.log", FuncGetInstallRootPath());
	if((fp = fopen(std_log, "r")) == NULL)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TRAP_1%>"));//<%IDS_TRAP_1%>
		return FALSE;
	}

	while(!feof(fp))
	{
		memset(szBuffer, 0, sizeof(szBuffer));

		fgets(szBuffer, sizeof(szBuffer), fp);

		if(!strncmp(szBuffer, "+++SNMP-TRAP-PDU: ", 18))
		{
			lines ++;

			if(*mstr)
			{
				ca = szBuffer;
				while(cb = strstr(ca, "[Message]:="))
				{
					char szMess[4096] = {0};
					sscanf(cb + 11, "%[^$$$]$$$", szMess);
					if(strstr(szMess, mstr)) 
					{
						matchCount ++;
						break;
					}

					ca = cb + 11;
				}
			}
		}
	}

	fclose(fp);

	sprintf(szReturn, "lines=%d$matchCount=%d$", lines, matchCount);

	return TRUE;
}
Exemple #9
0
BOOL CPop3Connection::Top(int nMsg, CString &strMessage)
{
	//Must be connected to retrieve a message
	if(!m_bConnected)
	{
		//m_sLastCommandResponse = _T("ͨÐÅ佨Á¢");//<%IDS_Pop3_26%>
		m_sLastCommandResponse = ::FuncGetStringFromIDS("<%IDS_Pop3_26%>");//<%IDS_Pop3_26%>
		return FALSE;
	}
	
	//Send the RETR command
	char sBuf[20];
	sprintf(sBuf, "TOP %d 50\r\n", nMsg);	
	int nCmdLength = strlen(sBuf);
	if (!m_pop.Send(sBuf, nCmdLength))
	{
		TRACE(_T("Failed to send the RETR command to the POP3 server\n"));
		//m_sLastCommandResponse = _T("·¢ËÍTOPÃüÁîʧ°Ü");//<%IDS_Pop3_27%>
		m_sLastCommandResponse = FuncGetStringFromIDS("<%IDS_Pop3_27%>");
		return FALSE;
	}
		
	//And check the command
	LPSTR pszOverFlowBuffer = NULL;
	char szBuffer[256] = {0};
	if(!ReadResponse(szBuffer, 70, "\r\n.\r\n", &pszOverFlowBuffer))
	{
		if (pszOverFlowBuffer)
			delete [] pszOverFlowBuffer;
		
		TRACE(_T("Error retrieving the TOP response"));
		return FALSE;
	}

	if(!pszOverFlowBuffer)
		return FALSE;

	strMessage = pszOverFlowBuffer;
	delete pszOverFlowBuffer;
	return TRUE;
}
Exemple #10
0
BOOL RLOGINCLUSTER_MONITOR(char *server, int port, char *uid, char *pwd, char *pserver,
                           int pport, char *puid, char *ppwd, char *pprompt, char *prompts, char *ostype,
                           char *clusterlog, char *cpath, char *szReturn)
{
    int		ret = 0;
    int		hSocket = 0;
    BOOL	bResult = TRUE;
    char	iniFile[256] = {0};
    char	cmd[256] = {0};

    /*************************************
     * For Reason Of Prompt
     */
    int		c = 0;
    char	*ca = prompts, *cb = NULL;
    char	arprompt[PR_NUM][256];
    memset(arprompt, 0, sizeof(arprompt));

    while(cb = strchr(ca, 0x20))
    {
        if(ca == cb)
        {
            ca ++;
            continue;
        }

        strncpy(arprompt[c++], ca, cb - ca);
        ca = cb + 1;
    }

    strcpy(arprompt[c++], ca);
    /***********************************/

    hSocket = rlogin_init(server, port, pserver, pport, puid, ppwd);
    if(hSocket <= 0)
    {
        if(hSocket == -1)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_1%>"));    //  <%IDS_TelMonitor_1%>
        else if(hSocket == -2)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_2%>"));   //  <%IDS_TelMonitor_2%>
        else if(hSocket == -3)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_3%>"));     //  <%IDS_TelMonitor_3%>
        else if(hSocket == -4)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_4%>"));     //  <%IDS_TelMonitor_4%>
        else if(hSocket == -5)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_5%>"));        //  <%IDS_TelMonitor_5%>
        else
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_6%>"));     //  <%IDS_TelMonitor_6%>

        bResult = FALSE;
        goto err;
    }

    if((ret = rlogin_connect(hSocket, uid, pwd, pprompt, arprompt)) < 0)
    {
        if(ret == -1)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_7%>"));    //  <%IDS_TelMonitor_7%>
        else if(ret == -2)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_8%>"));     //  <%IDS_TelMonitor_8%>
        else if(ret == -3)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_9%>"));     //  <%IDS_TelMonitor_9%>
        else if(ret == -4)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_10%>"));   //  <%IDS_TelMonitor_10%>
        else if(ret == -5)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_11%>"));   //  <%IDS_TelMonitor_11%>
        else if(ret == -6)
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_12%>"));   //  <%IDS_TelMonitor_12%>
        else
            sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_13%>"));     //  <%IDS_TelMonitor_13%>

        bResult = FALSE;
        goto err;

    }

#if _DEBUG
    sprintf(iniFile, "%s\\templates.os\\%s", FuncGetInstallRootPath(), ostype);
#else
    sprintf(iniFile, "%s\\MonitorManager\\templates.os\\%s", FuncGetInstallRootPath(), ostype);
#endif
    DFN_GetPrivateProfileString("cat", "command", "", cmd, sizeof(cmd), iniFile);
    if(!*cmd)
    {
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_14%>"));    //  <%IDS_TelMonitor_14%>
        bResult = FALSE;
        goto err;
    }

    if(ca = strstr(cmd, "<file>"))
    {
        strcpy(ca, clusterlog);
        *(ca + strlen(clusterlog)) = 0;
    }

    if((ret = rlogin_command(hSocket, cmd)) < 0)
    {
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_15%>"));    //  <%IDS_TelMonitor_15%>
        bResult = FALSE;
        goto err;
    }

    {
        int index = 0;
        CString	strBuffer(rlogin_databuffer);
        CString	strLine = _T("");

        // Cluster
        if((index = strBuffer.Find("CLUSTER", 0)) >= 0)
        {
            strBuffer.Delete(0, index);
        }
        else
        {
            sprintf(szReturn, "error=%s", "No Cluster");	// No Cluster
            bResult = FALSE;
            goto err;
        }

        strLine = GetStringFromLineNo(strBuffer, 2);
        sprintf(szReturn, "%sClusterName=%s$ClusterStatus=%s$", szReturn,
                GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2));

        // Node
        if((index = strBuffer.Find("NODE", 0)) >= 0)
        {
            strBuffer.Delete(0, index);
        }
        else
        {
            sprintf(szReturn, "error=%s", "No Node");	// No Node
            bResult = FALSE;
            goto err;
        }

        strLine = GetStringFromLineNo(strBuffer, 2);
        sprintf(szReturn, "%sNodeName=%s$NodeStatus=%s$NodeState=%s$", szReturn,
                GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2),
                GetColumnFromLine(strLine, 3));

        // Package
        if((index = strBuffer.Find("PACKAGE", 0)) >= 0)
        {
            strBuffer.Delete(0, index);
        }
        else
        {
            sprintf(szReturn, "error=%s", "No Package");	// No Package
            bResult = FALSE;
            goto err;
        }

        strLine = GetStringFromLineNo(strBuffer, 2);
        sprintf(szReturn, "%sPackageName=%s$PackageStatus=%s$PackageState=%s$PackageAutorun=%s$",
                szReturn, GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2),
                GetColumnFromLine(strLine, 3), GetColumnFromLine(strLine, 4));
    }

err:
    shutdown(hSocket, 0x02);
    closesocket(hSocket);
    return bResult;
}
Exemple #11
0
BOOL DHCP_MONITOR(int timeout, char *re_addr, char *custpath, char *szReturn)
{
	int		i;
	SOCKET	s;
	struct	sockaddr_in lsa, rsa;
	DWORD	dwbTime, dweTime;

	int		reqlen = 0;
	u_char	reqmessage[1000] = {0};
	u_char	resmessage[1000] = {0};

	dwbTime = ::GetTickCount();

	DHCPMessage reqdm, resdm;

	srand((unsigned)time(NULL));

	memset(&reqdm, 0, sizeof(struct DHCP_MESSAGE));
	reqdm.op = 0x01;
	reqdm.htype = 0x01;
	reqdm.hlen = 0x06;

	// Physical Address
	GetMacAddress(reqdm.ch_addr);

	for(i = 0;i < 4;i ++)
		reqdm.xid[i] = rand() % 0xff;

	reqdm.opts.oplen = 0;

	// magic cookie
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x63;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x82;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x53;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x63;

	// DHCP Message Type
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x35;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x01;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x01;

	reqdm.opts.opstr[reqdm.opts.oplen++] = 0xFB;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x01;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x01;

	// Client-identifier
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x3D;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x07;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x01;
	GetMacAddress(reqdm.opts.opstr + reqdm.opts.oplen);
	reqdm.opts.oplen += 6;

	// Requested IP Address
	if(*re_addr)
	{
		int		f_1 = 0, f_2 = 0, f_3 = 0, f_4 = 0;

		if(sscanf(re_addr, "%d.%d.%d.%d", &f_1, &f_2, &f_3, &f_4) != 4)
		{
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DHCP_1%>"));//<%IDS_DHCP_1%>
			return FALSE;
		}

		reqdm.opts.opstr[reqdm.opts.oplen++] = 0x32;
		reqdm.opts.opstr[reqdm.opts.oplen++] = 0x04;
		reqdm.opts.opstr[reqdm.opts.oplen++] = f_1;
		reqdm.opts.opstr[reqdm.opts.oplen++] = f_2;
		reqdm.opts.opstr[reqdm.opts.oplen++] = f_3;
		reqdm.opts.opstr[reqdm.opts.oplen++] = f_4;
	}

	// Host Name Option
	TCHAR lhost[80];
	gethostname(lhost, sizeof(lhost));
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x0C;
	reqdm.opts.opstr[reqdm.opts.oplen++] = strlen(lhost);
	for(i = 0;i < (int)strlen(lhost);i ++)
		reqdm.opts.opstr[reqdm.opts.oplen++] = lhost[i];

	// Class-identifier
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x3C;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x08;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x44;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x46;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x2E;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x46;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x72;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x61;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x6E;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x6B;

	// Parameter Request List
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x37;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x0A;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x01;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x0F;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x03;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x06;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x2C;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x2E;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x2F;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x1F;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x21;
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0x2B;

	// end
	reqdm.opts.opstr[reqdm.opts.oplen++] = 0xFF;

	// padding
	if(reqdm.opts.oplen < 64)
	{
		int left = 64 - reqdm.opts.oplen;
		for(i = 0;i < left;i ++)
			reqdm.opts.opstr[reqdm.opts.oplen++] = 0x00;
	}

	reqlen = topacket(&reqdm, reqmessage);

	if((s = socket(PF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DHCP_2%>"));//<%IDS_DHCP_2%>
		return FALSE;
	}

	// set socket broadcast flag
	{
	const int on = 1;
	setsockopt(s, SOL_SOCKET, SO_BROADCAST, (const char *)&on, sizeof(on));
	}

	memset(&lsa, 0, sizeof(lsa));
	lsa.sin_family = AF_INET;
	lsa.sin_addr.s_addr = htonl(inet_addr(DHCP_LOCAL_ADDRESS));
	lsa.sin_port=htons(DHCP_CLIENT_PORT);
	if(bind(s, (struct sockaddr *)&lsa, sizeof(lsa)) == SOCKET_ERROR)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DHCP_3%>"));//<%IDS_DHCP_3%>
		return FALSE;
	}

    rsa.sin_family = AF_INET;
	rsa.sin_addr.s_addr = htonl(inet_addr(DHCP_MULTICAST_ADDRESS));
    rsa.sin_port = htons(DHCP_SERVER_PORT);

	int dw, n;
	if((n = sendto(s, (char *)reqmessage, reqlen, 0, (struct sockaddr *)&rsa, sizeof(rsa))) == SOCKET_ERROR)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DHCP_4%>"));//<%IDS_DHCP_4%>
		return FALSE;
	}
	
	if(RESPONSE_WAIT(s, timeout) > 0)
	{
		dw = sizeof(rsa);
		if((n = recvfrom(s, (char *)resmessage, 1000, 0, (struct sockaddr *)&rsa, &dw)) == SOCKET_ERROR)
		{
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DHCP_5%>"));//<%IDS_DHCP_5%>
			return FALSE;
		}

		if(n == 0)
		{
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DHCP_6%>"));//<%IDS_DHCP_6%>
			return FALSE;
		}

		if(tostruct(&resdm, resmessage, n))
		{
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DHCP_7%>"));//<%IDS_DHCP_7%>
			return FALSE;
		}

		if(resdm.op != 2 || resdm.htype != 1 || resdm.hlen != 6)
		{
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DHCP_8%>"));//<%IDS_DHCP_8%>
			return FALSE;
		}

		if(!resdm.siaddr)
		{
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DHCP_9%>"));//<%IDS_DHCP_9%>
			return FALSE;
		}

		dweTime = ::GetTickCount();
		sprintf(szReturn, "roundTripTime=%ld", dweTime - dwbTime);
		return TRUE;

	}

	sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DHCP_10%>"));//<%IDS_DHCP_10%>
	return FALSE;
}
Exemple #12
0
BOOL SSHCLUSTER_MONITOR(char *server, int port, char *uid, char *pwd, char *ostype,
                        char *clusterlog, char *cpath, char *szReturn)
{
    CString	strCmdLine = _T(""),
            strResult = _T("");
    int		nResult = 0;

    char	*ca = NULL;
    char	iniFile[256] = {0};
    char	cmd[256] = {0};

#if _DEBUG
    sprintf(iniFile, "%s\\templates.os\\%s", FuncGetInstallRootPath(), ostype);
#else
    sprintf(iniFile, "%s\\MonitorManager\\templates.os\\%s", FuncGetInstallRootPath(), ostype);
#endif
    DFN_GetPrivateProfileString("cat", "command", "", cmd, sizeof(cmd), iniFile);
    if(!*cmd)
    {
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SSHMonitor_1%>"));   //  <%IDS_SSHMonitor_1%>
        return FALSE;
    }

    if(ca = strstr(cmd, "<file>"))
    {
        strcpy(ca, clusterlog);
        *(ca + strlen(clusterlog)) = 0;
    }

    strCmdLine.Format("%s \"-ssh\" \"-t\" \"%d\" \"-P\" \"%d\" \"-pw\" \"%s\" \"%s@%s\" \"%s\"", PLINK_PATH, CALL_TIMEOUT, port, pwd, uid, server, cmd);
    nResult = executeExeFile(strCmdLine, strResult);
    switch(nResult)
    {
    case DragonFlow_OK:
    {
        int index = 0;
        CString	strBuffer = strResult;
        CString	strLine = _T("");

        // Cluster
        if((index = strBuffer.Find("CLUSTER", 0)) >= 0)
        {
            strBuffer.Delete(0, index);
        }
        else
        {
            sprintf(szReturn, "error=%s", "No Cluster");	// No Cluster
            return FALSE;
        }

        strLine = GetStringFromLineNo(strBuffer, 2);
        sprintf(szReturn, "%sClusterName=%s$ClusterStatus=%s$", szReturn,
                GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2));

        // Node
        if((index = strBuffer.Find("NODE", 0)) >= 0)
        {
            strBuffer.Delete(0, index);
        }
        else
        {
            sprintf(szReturn, "error=%s", "No Node");	// No Node
            return FALSE;
        }

        strLine = GetStringFromLineNo(strBuffer, 2);
        sprintf(szReturn, "%sNodeName=%s$NodeStatus=%s$NodeState=%s$", szReturn,
                GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2),
                GetColumnFromLine(strLine, 3));

        // Package
        if((index = strBuffer.Find("PACKAGE", 0)) >= 0)
        {
            strBuffer.Delete(0, index);
        }
        else
        {
            sprintf(szReturn, "error=%s", "No Package");	// No Package
            return FALSE;
        }

        strLine = GetStringFromLineNo(strBuffer, 2);
        sprintf(szReturn, "%sPackageName=%s$PackageStatus=%s$PackageState=%s$PackageAutorun=%s$",
                szReturn, GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2),
                GetColumnFromLine(strLine, 3), GetColumnFromLine(strLine, 4));
    }
    return TRUE;
    case DragonFlow_Timeout:
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SSHMonitor_3%>"));     //  <%IDS_SSHMonitor_3%>
        break;
    case DragonFlow_OpenConnection:
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SSHMonitor_4%>"));   //  <%IDS_SSHMonitor_4%>
        break;
    case DragonFlow_CreateOutputThread:
    case DragonFlow_CreateErrorOutputThread:
    case DragonFlow_CreateInputThread:
    case DragonFlow_WriteToStandardOutput:
    case DragonFlow_OpenCommandFile:
    case DragonFlow_NotEnoughSpace:
    case DragonFlow_InitialiseWinSock:
    case DragonFlow_WinSockVersionIncompatible:
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SSHMonitor_5%>"));    //  <%IDS_SSHMonitor_5%>
        break;
    case DragonFlow_FatalError:
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SSHMonitor_6%>"));     //  <%IDS_SSHMonitor_6%>
        break;
    default:
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_SSHMonitor_7%>"));    //  <%IDS_SSHMonitor_7%>
        break;
    }

    return FALSE;
}
Exemple #13
0
BOOL HTTPCLUSTER_MONITOR(char *url, char *uid, char *pwd, char *pserver, int pport,
                         char *puid, char *ppwd, char *ostype, char *clusterlog, char *cpath,
                         char *szReturn)
{
    int		ret = 0;
    BOOL	bResult = TRUE;
    char	*ca = NULL;
    char	iniFile[256] = {0};
    char	cmd[256] = {0};

#if _DEBUG
    sprintf(iniFile, "%s\\templates.os\\%s", FuncGetInstallRootPath(), ostype);
#else
    sprintf(iniFile, "%s\\MonitorManager\\templates.os\\%s", FuncGetInstallRootPath(), ostype);
#endif
    DFN_GetPrivateProfileString("cat", "command", "", cmd, sizeof(cmd), iniFile);
    if(!*cmd)
    {
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_14%>"));    //  <%IDS_TelMonitor_14%>
        return FALSE;
    }

    if(ca = strstr(cmd, "<file>"))
    {
        strcpy(ca, clusterlog);
        *(ca + strlen(clusterlog)) = 0;
    }

    char msg[100 * 1024] = {0};
    if(!http_command(url, cmd, READ_TIMEOUT, uid, pwd, pserver, pport, puid, ppwd, msg))
    {
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_TelMonitor_15%>"));    //  <%IDS_TelMonitor_15%>
        return FALSE;
    }

    {
        int index = 0;
        CString	strBuffer(msg);
        CString	strLine = _T("");

        // Cluster
        if((index = strBuffer.Find("CLUSTER", 0)) >= 0)
        {
            strBuffer.Delete(0, index);
        }
        else
        {
            sprintf(szReturn, "error=%s", "No Cluster");	// No Cluster
            return FALSE;
        }

        strLine = GetStringFromLineNo(strBuffer, 2);
        sprintf(szReturn, "%sClusterName=%s$ClusterStatus=%s$", szReturn,
                GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2));

        // Node
        if((index = strBuffer.Find("NODE", 0)) >= 0)
        {
            strBuffer.Delete(0, index);
        }
        else
        {
            sprintf(szReturn, "error=%s", "No Node");	// No Node
            return FALSE;
        }

        strLine = GetStringFromLineNo(strBuffer, 2);
        sprintf(szReturn, "%sNodeName=%s$NodeStatus=%s$NodeState=%s$", szReturn,
                GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2),
                GetColumnFromLine(strLine, 3));

        // Package
        if((index = strBuffer.Find("PACKAGE", 0)) >= 0)
        {
            strBuffer.Delete(0, index);
        }
        else
        {
            sprintf(szReturn, "error=%s", "No Package");	// No Package
            return FALSE;
        }

        strLine = GetStringFromLineNo(strBuffer, 2);
        sprintf(szReturn, "%sPackageName=%s$PackageStatus=%s$PackageState=%s$PackageAutorun=%s$",
                szReturn, GetColumnFromLine(strLine, 1), GetColumnFromLine(strLine, 2),
                GetColumnFromLine(strLine, 3), GetColumnFromLine(strLine, 4));
    }

    return TRUE;
}
Exemple #14
0
BOOL CTRONSSRCPU_MONITOR(char *server, int port, char *community, int rdelay, 
						 int timeout, char *cpath, char *szReturn)
{
	int		s;
	struct	sockaddr_in serv;

	int		ret = 0;
	BOOL	bResult = TRUE;
	struct	oid *poid = NULL, *proid = NULL;
	struct	snval *psnval = NULL;

	*szReturn = 0;

	if((ret = MakeSocket(server, port, s, serv)) < 0)
	{
		if(ret == -1)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_1%>"));//<%IDS_CheckPoint_1%>
		else if(ret == -2)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_2%>"));//<%IDS_CheckPoint_2%>
		else
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_3%>"));//<%IDS_CheckPoint_3%>

		return FALSE;
	}

	poid = (struct oid *)malloc(sizeof(struct oid));
	proid = (struct oid *)malloc(sizeof(struct oid));
	psnval = (struct snval *)malloc(sizeof(struct snval));
	if(poid == NULL || proid == NULL || psnval == NULL)
	{
		bResult = FALSE;
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CTRON_01%>"));	// 内存溢出错误
		goto err;
	}

	memset(poid, 0, sizeof(struct oid));
	memset(proid, 0, sizeof(struct oid));
	memset(psnval, 0, sizeof(struct snval));

	memcpy(poid, &capCPUTable, sizeof(struct oid));
	while(SN_NEXT_VALUE(s, serv, community, 1, poid, proid, psnval) == 0)
	{
		if(compare_oid(*proid, capCPUCurrentUtilization) || psnval->sv_type != ASN1_INT ||
					psnval->sv_val.sv_int > 100 || psnval->sv_val.sv_int < 0)
		{
			break;
		}

		sprintf(szReturn, "%sUtilization=%d$", szReturn, psnval->sv_val.sv_int);

		memcpy(poid, proid, sizeof(struct oid));
		memset(proid, 0, sizeof(struct oid));
		memset(psnval, 0, sizeof(struct snval));
	}

	if(!*szReturn)
	{
		bResult = FALSE;
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CTRON_02%>"));	// 设备无此性能参数
	}

err:
	if(poid) { free(poid); poid = NULL; }
	if(proid) { free(proid); proid = NULL; }
	if(psnval) { free(psnval); psnval = NULL; }
	
	return bResult;
}
Exemple #15
0
BOOL WebLogic(const char * strParas, char * szReturn, int& nSize)
//(CStringList &paramList, char *szReturn)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	
	//参数解析:
	CString		
        strServIp = _T(""), 
		strServPort = _T(""), 
		strUserName = _T(""), 
		strUserPwd = _T(""),
		strTaskType = _T(""),
		strTaskParam = _T("");
	
	CString	
        strProxyServ = _T(""), 
		strProxyUser = _T(""); 
	
	int	nServerPort = 21;		
	int nTimeout = 60;

	BOOL bRet = FALSE;
	
	// Check Content Change
	CStringList paramList;

	MakeStringListByChar(paramList,strParas);
	POSITION pos = paramList.GetHeadPosition();
	while(pos)
	{
		CString strTemp = paramList.GetNext(pos);
		if(strTemp.Find(__USERNAME__, 0) == 0)
		{
			strUserName = strTemp.Right(strTemp.GetLength() - strlen(__USERNAME__));
		}
		else if(strTemp.Find(__PASSWORD__, 0) == 0)
		{
			strUserPwd = strTemp.Right(strTemp.GetLength() - strlen(__PASSWORD__));
		}
		else if(strTemp.Find(__TIMEOUT__, 0) == 0)
		{
			nTimeout = atoi(strTemp.Right(strTemp.GetLength() - strlen(__TIMEOUT__)));
		}
		else if(strTemp.Find(__SERVERIP__, 0) == 0)
		{
			strServIp = strTemp.Right(strTemp.GetLength() - strlen(__SERVERIP__));
		}
		else if(strTemp.Find(__SERVERPORT__, 0) == 0)
		{
			strServPort = strTemp.Right(strTemp.GetLength() - strlen(__SERVERPORT__));
		}
		else if(strTemp.Find(__TASKTYPE__, 0) == 0)
		{
			strTaskType = strTemp.Right(strTemp.GetLength() - strlen(__TASKTYPE__));
		}
		else if(strTemp.Find(__TASKPARAM__, 0) == 0)
		{
			strTaskParam = strTemp.Right(strTemp.GetLength() - strlen(__TASKPARAM__));
		}
		else
		{
		
		}
	}
				
	if(strUserName.IsEmpty())
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("IDS_Poor_UserName"));//"缺少用户姓名!");//<%IDS_Monitor_40%>"缺少FTP服务器地址"
		return FALSE;
	}
	
	if(strUserPwd.IsEmpty())
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("IDS_Poor_Password"));//"缺少用户密码!");//<%IDS_Monitor_40%>
		return FALSE;
	}
	
	if(strServIp.IsEmpty())
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("IDS_Poor_ServerAddress"));//"缺少服务器地址!");//<%IDS_Monitor_40%>"缺少FTP服务器地址"
		return FALSE;
	}
	
	if(strServPort.IsEmpty())
	{
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("IDS_Poor_ServerPort"));//"缺少服务器端口地址!");//<%IDS_Monitor_40%>"缺少FTP服务器地址"
		return FALSE;
	}

	if(strTaskType.IsEmpty())
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("IDS_Poor_TaskType"));//"缺少任务类型!");//<%IDS_Monitor_40%>"缺少FTP服务器地址"
		return FALSE;
	}	

	if(strTaskParam.IsEmpty())
	{
		strTaskParam = "null";
	}	

	
	if(nTimeout <= 0)
	{
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("IDS_TimeoutParamError"));//"超时参数有错误!");//<%IDS_Monitor_40%>"缺少FTP服务器地址"		  		  
		return FALSE;
	}
	

	//取数据的实现
	CString		strCustomerPath = _T("");
	strCustomerPath.Format("%s\\fcgi-bin", FuncGetInstallRootPath());

    //CString strCmdLine = "CMD /C " + strCustomerPath + "\\MonitorManager\\WeblogicMonitor.bat \"";

	CString strCmdLine = "CMD /C \"" + strCustomerPath + "\\WeblogicMonitor.bat\" ";

	strCmdLine += strUserName + " ";
	strCmdLine += strUserPwd + " ";
	strCmdLine += "t3://" + strServIp + ":" + strServPort;
	strCmdLine += " " + strTaskType;
	strCmdLine += " " + strTaskParam;

	SECURITY_ATTRIBUTES sa;	
	sa.nLength = sizeof(SECURITY_ATTRIBUTES);
	sa.bInheritHandle = TRUE;
	sa.lpSecurityDescriptor = NULL;
	
	HANDLE hRead, hWrite;
	long retval = CreatePipe(&hRead, &hWrite, &sa, 12000) ;
	if(retval == 0)
	{
		return false;
	}
	else
	{
		STARTUPINFO si;
		memset(&si, 0, sizeof(STARTUPINFO));
		si.cb = sizeof(STARTUPINFO);
		si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
		si.hStdOutput = hWrite;
		si.hStdError = hWrite;
	//	si.wShowWindow =SW_HIDE;
		
		PROCESS_INFORMATION pi;
		memset(&pi, 0, sizeof(PROCESS_INFORMATION));
		puts(strCmdLine);
		if (CreateProcess(NULL, strCmdLine.GetBuffer(strCmdLine.GetLength()),  &sa, &sa, TRUE, CREATE_NEW_CONSOLE/*CREATE_NO_WINDOW*/, NULL, NULL, &si, &pi)) 
		{
			bRet = TRUE;
			DWORD dwResult = WaitForSingleObject(pi.hProcess, 6000*1000);
			if (dwResult == WAIT_OBJECT_0) 
			{				
				DWORD dwExitCode = 0;
				if (GetExitCodeProcess(pi.hProcess, &dwExitCode)) 
				{
					//if (dwExitCode == 0) 
					{ 
						//
						CFile* pFile = NULL;
						int nFileLength = 0;
						TRY	
						{
							pFile = new CFile(hRead);								
							nFileLength = pFile->GetLength();
						}
						CATCH(CFileException, pEx) 
						{
							// Do Nothing.
						}
						END_CATCH
							
						char * buffer = NULL;
						buffer = (char*)malloc(nFileLength+1);
						
						//
						pFile->Read(buffer, nFileLength);
						
						CString strSource = _T("");
						strSource.Format("%s", buffer);
						
						//WeblogicMonitor(去掉call setWLSEnv.cmd所生成的输出)
						int nOrder = strSource.Find("FileSplitFlag");
						nOrder += 13;
						strSource = strSource.Mid(nOrder);

						//
						nOrder = strSource.Find("EndSplitFlag");
						//nOrder += 13;
						strSource = strSource.Left(nOrder);
						
						strSource.Replace("WaitingForConnectionCurrentCount","WaitConnetCurCount");
						strSource.Replace( "Error=","error=" );
						//生成正确格式的输出串
						strcpy(szReturn, strSource);
						
						//sprintf(szReturn, "error=%s",buffer);
						
						//
						free(buffer);
						
						if (pFile != NULL)   
						{
							pFile->Close();
							delete pFile;
						}					
					}
					//else
					{
						
					}
				}
Exemple #16
0
int OpenDataChannel(char *retrfile, int timeout, int ptype, char *pserver, int pport, char *puid, char *ppwd, char *szReturn, CFtpParam& ftpParam)
{
	CString	strCmd = _T("");
	CString	retMsg = _T("");
	char	buffer[1024] = {0};
	SOCKET dataChannel;

	if(ftpParam.passive_mode)
	{
		dataChannel = socket(AF_INET, SOCK_STREAM, 0);
		if(dataChannel == SOCKET_ERROR)
		{
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                "FTP_CREATE_COMMUNICATE_ERROR"));//<%IDS_FTP_18%>
			return 1;
		}

		if(*pserver && ptype == 1)
		{
			if(socks5_protocol(dataChannel, ftpParam.remote_host, ftpParam.remote_port, 
						pserver, pport, puid, ppwd, timeout))
			{
				sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                    "FTP_CREATE_COMMUNICATE_ERROR"));//<%IDS_FTP_19%>
				return 1;
			}
		}
		else
		{
			struct sockaddr_in rsa;
			rsa.sin_addr.s_addr = inet_addr(ftpParam.remote_host);
			rsa.sin_family = AF_INET;
			rsa.sin_port = htons(ftpParam.remote_port);
			if(connect_timeo(dataChannel, (struct sockaddr *)&rsa, sizeof(rsa), timeout))
			{
				sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                    "FTP_CREATE_COMMUNICATE_ERROR"));//<%IDS_FTP_20%>
				return 1;
			}
		}
	}
	else
	{
		struct sockaddr_in rsa;
		int rsalen = sizeof(rsa);
		dataChannel = accept(ftpParam.dataSocket, (struct sockaddr *)&rsa, &rsalen);
		if(dataChannel == INVALID_SOCKET)
		{
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                "FTP_CREATE_COMMUNICATE_ERROR"));//<%IDS_FTP_21%>
			return 1;
		}
	}
#ifdef SAVEASFILE
	CFile datafile;
	if(!datafile.Open("C:\\download\\download", CFile::modeWrite|CFile::modeCreate)) 
	{
		return 1;
	}
#endif
	DWORD	recvBegin = GetTickCount();
	while(1) 
	{
		int iRead = 0;
		char	response[1025] = {0};
		iRead = recv(dataChannel, response, 1024, 0);
		if(!iRead || iRead == SOCKET_ERROR)
			break;
		else
		{
#ifdef SAVEASFILE
			datafile.Write(response, iRead);
#endif
			ftpParam.recvBytes += iRead;
		}
	}
	ftpParam.recvTickCount = GetTickCount() - recvBegin;
#ifdef SAVEASFILE
	datafile.Close();
#endif

	return 0;
}
Exemple #17
0
BOOL CTRONETHERSTATUS_MONITOR(char *server, int port, char *community, CString strIndex, 
			int rdelay, int timeout, int ngid, int nmid, char *cpath, char *szReturn)
{
	int		s;
	struct	sockaddr_in serv;

	int		i = 0, j = 0, ret = 0;
	int		count = 1;
	struct	snval *ptmp = NULL;
	struct	snval *ptmpnext = NULL;

	u_int	_64Octets = 0, _65to127Octets = 0;
	u_int	_Curr64Octets = 0, _Curr65to127Octets = 0;

	if((ret = MakeSocket(server, port, s, serv)) < 0)
	{
		if(ret == -1)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_1%>"));//<%IDS_CheckPoint_1%>
		else if(ret == -2)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_2%>"));//<%IDS_CheckPoint_2%>
		else
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_3%>"));//<%IDS_CheckPoint_3%>

		return FALSE;
	}

	long index_id[32];
	int	 index_id_c = 0;
	while(1)
	{
		i = strIndex.Find('.', 0);
		if(i > 0)
			index_id[index_id_c++] = atoi(strIndex);
		else if(i < 0 && strIndex.GetLength() > 0)
		{
			index_id[index_id_c++] = atoi(strIndex);
			break;
		}
		else
			break;

		strIndex.Delete(0, i + 1);
	}

	for(i = 0;i < index_id_c;i ++)
	{
		etherStatsPkts64Octets.id[etherStatsPkts64Octets.len++] = index_id[i];
		etherStatsPkts65to127Octets.id[etherStatsPkts65to127Octets.len ++] = index_id[i];
	}

	struct oid *poid = NULL, *ptmpoid = NULL;
	poid = ptmpoid = &etherStatsPkts64Octets;
	ptmpoid->next = &etherStatsPkts65to127Octets;
	ptmpoid = ptmpoid->next;

	struct snval *psnval = NULL;
	if((ret = SN_VALUES(s, serv, community, 1, poid, &psnval)) < 0)
	{
		if(ret == -1)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_4%>"));//<%IDS_CheckPoint_4%>
		else if(ret == -2)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_5%>"));//<%IDS_CheckPoint_5%>
		else if(ret == -3)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_6%>"));//<%IDS_CheckPoint_6%>
		else if(ret == -4)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_7%>"));//<%IDS_CheckPoint_7%>
		else if(ret == -5)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_8%>"));//<%IDS_CheckPoint_8%>
		else if(ret == -6)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_9%>"));//<%IDS_CheckPoint_9%>
		else if(ret == -7)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_10%>"));//<%IDS_CheckPoint_10%>
		else if(ret == -8)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_11%>"));//<%IDS_CheckPoint_11%>
		else
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_CheckPoint_12%>"));//<%IDS_CheckPoint_12%>

		goto w;
	}

	_Curr64Octets = psnval->sv_val.sv_int;
	_Curr65to127Octets = psnval->next->sv_val.sv_int;

	{
	char ciniFile[256] = {0}, 
		 cinifile[256] = {0};
	char cifIndex[256] = {0};
	sprintf(cinifile, "ctron_%s_%d_%d.ini", server, ngid, nmid);
	sprintf(ciniFile, "%s\\%s", cpath, cinifile);
	sprintf(cifIndex, "ifIndex_%s", strIndex);

	long	ifTime = 0;
	CTime	curTime = CTime::GetCurrentTime();

	ifTime = DFN_GetPrivateProfileInt(cifIndex, "ifTime", 0, ciniFile);
	_64Octets = DFN_GetPrivateProfileInt(cifIndex, "_64Octets", 0, ciniFile);
	_65to127Octets = DFN_GetPrivateProfileInt(cifIndex, "_65to127Octets", 0, ciniFile);

	if(ifTime == 0 && _64Octets == 0 && _65to127Octets == 0)
	{
		CString strSection = _T("");
		strSection.Format("ifIndex_%s", strIndex);

		CString strMsg = _T("");
		strMsg.Format("%ld", curTime.GetTime());
		::DFN_WritePrivateProfileString((LPCTSTR)strSection, "ifTime", (LPCTSTR)strMsg, ciniFile);

		strMsg.Format("%ld", _Curr64Octets);
		::DFN_WritePrivateProfileString((LPCTSTR)strSection, "_64Octets", (LPCTSTR)strMsg, ciniFile);

		strMsg.Format("%ld", _Curr65to127Octets);
		::DFN_WritePrivateProfileString((LPCTSTR)strSection, "_65to127Octets", (LPCTSTR)strMsg, ciniFile);
	}
	else
	{
		float	_Rate64Octets = 0.0, _Rate65to127Octets = 0.0;
		Counter	_Delta64Octets = 0, _Delta65to127Octets = 0;

		CTime bTime(ifTime);
		CTimeSpan spanTime = curTime - bTime;
		long lInterval = spanTime.GetTotalSeconds();
		
		if(lInterval == 0) lInterval = 1;
		if(lInterval <= 12 * 60 * 60 && lInterval > 0)
		{
			_Delta64Octets = (unsigned int)(_Curr64Octets - _64Octets < 0 ? (COUNTER_MAX - _64Octets + _Curr64Octets) : (_Curr64Octets - _64Octets));
			_Rate64Octets = (float)_Delta64Octets / lInterval;

			_Delta65to127Octets = (unsigned int)(_Curr65to127Octets - _65to127Octets < 0 ? (COUNTER_MAX - _65to127Octets + _Curr65to127Octets) : (_Curr65to127Octets - _65to127Octets));
			_Rate65to127Octets = (float)_Delta65to127Octets / lInterval;

			sprintf(szReturn, "_Rate64Octets=%.2f$_Rate65to127Octets=%.2f$",
					_Rate64Octets, _Rate65to127Octets);
		}

		char buff[256] = {0};
		memset(buff, 0, 256);
		ltoa(curTime.GetTime(), buff, 10);
		DFN_WritePrivateProfileString(cifIndex, "ifTime", buff, ciniFile);
		memset(buff, 0, 256);
		ltoa(_Curr64Octets, buff, 10);
		DFN_WritePrivateProfileString(cifIndex, "_64Octets", buff, ciniFile);
		memset(buff, 0, 256);
		ltoa(_Curr65to127Octets, buff, 10);
		DFN_WritePrivateProfileString(cifIndex, "_65to127Octets", buff, ciniFile);
	}
	}

w:	ptmp = psnval;
	if(ptmp) ptmpnext = ptmp->next;
	while(ptmp)
	{
		free(ptmp);
		ptmp = ptmpnext;
		if(ptmp) ptmpnext = ptmp->next;
	}

	return !ret;
}
Exemple #18
0
BOOL TRAFFIC_MONITOR(char *server, int port, char *community, int ifindex, 
					 int timeout, int retrydelay, CString strMonitorID, 
					 char *custpath, char *szReturn)
{
	int s;
	struct sockaddr_in serv;

	int		i = 0, ret = 0;
	int		count = 1;
	struct	snval *ptmp = NULL;
	struct	snval *ptmpnext = NULL;

	long	ifOperStatus = 0;
	Gauge	ifSpeed = 0;
	Counter ifInOctets = 0, ifOutOctets = 0;
	Counter ifInErrors = 0, ifOutErrors = 0;

	if((ret = MakeSocket(server, port, s, serv)) < 0)
	{
		if(ret == -1)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Traffic_1%>"));
		else if(ret == -2)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Traffic_2%>"));
		else
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Traffic_3%>"));

		return FALSE;
	}

	struct oid *poid = NULL, *ptmpoid = NULL;
	oid ifInOctets_oid = {{0x2b, 6, 1, 2, 1, 2, 2, 1, 10}, 9};
	oid ifOutOctets_oid = {{0x2b, 6, 1, 2, 1, 2, 2, 1, 16}, 9};
	ifInOctets_oid.id[ifInOctets_oid.len++] = ifindex;
	poid = ptmpoid = &ifInOctets_oid;
	ifOutOctets_oid.id[ifOutOctets_oid.len++] = ifindex;
	ptmpoid->next = &ifOutOctets_oid;
	ptmpoid = ptmpoid->next;

	struct snval *psnval = NULL;
	if((ret = SN_VALUES(s, serv, community, 1, poid, &psnval)) < 0)
	{
		if(ret == -1)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_4%>"));//<%IDS_Dynamo_4%>
		else if(ret == -2)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_5%>"));//<%IDS_Dynamo_5%>
		else if(ret == -3)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_6%>"));//<%IDS_Dynamo_6%>
		else if(ret == -4)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_7%>"));//<%IDS_Dynamo_7%>
		else if(ret == -5)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_8%>"));//<%IDS_Dynamo_8%>
		else if(ret == -6)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_9%>"));//<%IDS_Dynamo_9%>
		else if(ret == -7)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_10%>"));//<%IDS_Dynamo_10%>
		else if(ret == -8)
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_11%>"));//<%IDS_Dynamo_11%>
		else
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_Dynamo_12%>"));//<%IDS_Dynamo_12%>

		goto w;
	}

	ptmp = psnval;
	ptmpnext = NULL;
	while(ptmp)
	{
		switch(count)
		{
		case 1:
			switch(ptmp->sv_type)
			{
			case ASN1_INT:
			case ASN1_COUNTER:
			case ASN1_GAUGE:
			case ASN1_TIMETICKS:
			case ASN1_COUNTER64:
			case ASN1_UINTEGER32:
				ifInOctets = ptmp->sv_val.sv_int;
				break;
			default:
				ifInOctets = 0;
				break;
			}
			break;
		case 2:
			switch(ptmp->sv_type)
			{
			case ASN1_INT:
			case ASN1_COUNTER:
			case ASN1_GAUGE:
			case ASN1_TIMETICKS:
			case ASN1_COUNTER64:
			case ASN1_UINTEGER32:
				ifOutOctets = ptmp->sv_val.sv_int;
				break;
			default:
				ifOutOctets = 0;
				break;
			}
			break;
		}
		count ++;
		ptmp = ptmp->next;
	}

	// computer the traffic 
	{
	char ciniFile[256] = {0}, 
		 cinifile[256] = {0};
	char cifIndex[256] = {0};
	sprintf(cinifile, "snmp_%s_%s.ini", server, strMonitorID);
	sprintf(ciniFile, "%s\\%s", custpath, cinifile);
	sprintf(cifIndex, "ifIndex_%ld", ifindex);

	long	ifTime = 0;
	Counter inOctets = 0, outOctets = 0;

	CTime curTime = CTime::GetCurrentTime();

	ifTime = DFN_GetPrivateProfileInt(cifIndex, "ifTime", -99, ciniFile);
	inOctets = DFN_GetPrivateProfileInt(cifIndex, "ifInOctets", -99, ciniFile);
	outOctets = DFN_GetPrivateProfileInt(cifIndex, "ifOutOctets", -99, ciniFile);

	if(ifTime == -99 || inOctets == -99 || outOctets == -99)
	{
		CString strSection = _T("");
		strSection.Format("ifIndex_%ld", ifindex);

		curTime = CTime::GetCurrentTime();
		CString strMsg = _T("");
		strMsg.Format("%ld", curTime.GetTime());
		::DFN_WritePrivateProfileString((LPCTSTR)strSection, "ifTime", (LPCTSTR)strMsg, ciniFile);

		strMsg.Format("%ld", ifInOctets);
		::DFN_WritePrivateProfileString((LPCTSTR)strSection, "ifInOctets", (LPCTSTR)strMsg, ciniFile);
		strMsg.Format("%ld", ifOutOctets);
		::DFN_WritePrivateProfileString((LPCTSTR)strSection, "ifOutOctets", (LPCTSTR)strMsg, ciniFile);
		WriteLogFile(strMonitorID, "读配置文件失败");
	}
	else
	{
		float ifInOctetsRate = 0.0, ifOutOctetsRate = 0.0;
		Counter	InOctets = 0, OutOctets = 0;

		CTime bTime(ifTime);
		curTime = CTime::GetCurrentTime();
		CTimeSpan spanTime = curTime - bTime;
		long lInterval = spanTime.GetTotalSeconds();
		
		if(lInterval == 0) lInterval = 1;
		if(lInterval <= 12 * 60 * 60 && lInterval >= 0)
		{
			InOctets = (unsigned int)(ifInOctets - inOctets < 0 ? (COUNTER_MAX - inOctets + ifInOctets) : (ifInOctets - inOctets));
			//ifInOctetsRate = (float)InOctets / lInterval;
			//k
			ifInOctetsRate = (float)InOctets / lInterval/1024;

			OutOctets = (unsigned int)(ifOutOctets - outOctets < 0 ? (COUNTER_MAX - outOctets + ifOutOctets) : (ifOutOctets - outOctets));
			// wang peng /1024 =k
            //Edit By Kevin.Yang PM: 14:55 2004.10.21
            //Reason: 根据张鹏所提供的资料目前Cisio的MIF库中单位为KB,因此在
            //得到的数据后不再需要除以1024
			ifOutOctetsRate = (float)OutOctets / lInterval /1024;
			//ifOutOctetsRate = (float)OutOctets / lInterval;

			sprintf(szReturn, 
					"ifIndex=%ld$ifInOctetsRate=%.2f$ifOutOctetsRate=%.2f$",
					ifindex, 
					ifInOctetsRate * 8, 
					ifOutOctetsRate * 8);
		}
		else
		{
			CString strLog;
			strLog.Format("时间总秒数%d", lInterval);
//			WriteLogFile(strMonitorID, strLog);		
		}
//		WriteLogFile(strMonitorID, szReturn);
		//if(strlen(szReturn) == 0)
		//{
		//	printf("%d年%d月%d日 %d时%d分%d秒 \n%d年%d月%d日 %d时%d分%d秒 \n",
		//		curTime.GetYear(), curTime.GetMonth(), curTime.GetDay(), 
		//		curTime.GetHour(), curTime.GetMinute(), curTime.GetSecond(),
		//		bTime.GetYear(), bTime.GetMonth(), bTime.GetDay(),
		//		bTime.GetHour(), bTime.GetMinute(), bTime.GetSecond());
		//}
		char buff[256] = {0};
		memset(buff, 0, 256);
		ltoa(curTime.GetTime(), buff, 10);
		DFN_WritePrivateProfileString(cifIndex, "ifTime", buff, ciniFile);
		memset(buff, 0, 256);
		ltoa(ifInOctets, buff, 10);
		DFN_WritePrivateProfileString(cifIndex, "ifInOctets", buff, ciniFile);
		memset(buff, 0, 256);
		ltoa(ifOutOctets, buff, 10);
		DFN_WritePrivateProfileString(cifIndex, "ifOutOctets", buff, ciniFile);
	}
	}

w:	ptmp = psnval;
	if(ptmp) ptmpnext = ptmp->next;
	while(ptmp)
	{
		free(ptmp);
		ptmp = ptmpnext;
		if(ptmp) ptmpnext = ptmp->next;
	}

	return !ret;
}
Exemple #19
0
BOOL http_command(char *url, char *cmd, int timeout, char *uid, char *pwd, 
				  char *pserver, int pport, char *puid, char *ppwd, char *szReturn)
{
	BOOL bResult = TRUE;
	CString strCmdInfo = _T("");
	CString	strRemoteUrl = _T("");
	CInternetSession *psession = NULL;
	CHttpConnection* pServer = NULL;
	CHttpFile* pFile = NULL;

	if(*pserver)
	{
		char	pbuff[256] = {0};
		sprintf(pbuff, "%s:%d", pserver, pport);
		psession = new CInternetSession("WinInet", 1, 
								INTERNET_OPEN_TYPE_PROXY, pbuff, NULL, 0);
	}
	else
	{
		psession = new CInternetSession("WinInet");
	}

	try
	{
		CString strServerName;
		CString strObject;
		INTERNET_PORT nPort;
		DWORD dwServiceType;

		strCmdInfo.Format("echo %s;%s;echo %s", C_STA, cmd, C_END);
		strCmdInfo.Replace(' ', '+');
		strRemoteUrl.Format("%s?%s", url, strCmdInfo);

		if (!AfxParseURL(strRemoteUrl, dwServiceType, strServerName, strObject, nPort) ||
			dwServiceType != INTERNET_SERVICE_HTTP)
		{
			sprintf(szReturn, "%s", FuncGetStringFromIDS("<%IDS_Utils_1%>"));//<%IDS_Utils_1%>
			return FALSE;
		}

		pServer = psession->GetHttpConnection(strServerName, nPort);

		pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,
			strObject, NULL, 1, NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT);
		if(*puid)
		{
			CString	User_Pass = _T("");
			User_Pass.Format("%s:%s", puid, ppwd);

			CString	strOutput = _T("Proxy-Authorization: Basic ");

			CBase64	*pBase64 = new CBase64();
			strOutput.Insert(strOutput.GetLength(), pBase64->Encode(User_Pass, User_Pass.GetLength()));
			delete pBase64;
			pBase64 = NULL;
			
			pFile->AddRequestHeaders(strOutput);
		}

		pFile->SendRequest();

		DWORD dwRet;
		pFile->QueryInfoStatusCode(dwRet);
		if(dwRet == HTTP_STATUS_DENIED)
		{
			CString	User_Pass = _T("");
			User_Pass.Insert(User_Pass.GetLength(), uid);
			User_Pass.Insert(User_Pass.GetLength(), ':');
			User_Pass.Insert(User_Pass.GetLength(), pwd);

			CString	strOutput = _T("Authorization: Basic ");

			CBase64	*pBase64 = new CBase64();
			strOutput.Insert(strOutput.GetLength(), pBase64->Encode(User_Pass, User_Pass.GetLength()));
			delete pBase64;
			pBase64 = NULL;
			
			pFile->AddRequestHeaders(strOutput);
			pFile->SendRequest();
			pFile->QueryInfoStatusCode(dwRet);
		}

		if(dwRet == 200)
		{
			while(1)
			{
				char *ca = NULL, *cb = NULL;
				char buf[8192] = {0};
				int n = pFile->Read(buf, sizeof(buf));
				if(n == 0) break;
				buf[n] = 0;
				strncat(szReturn, buf, n);

				if(ca = strstr(szReturn, C_STA)) 
				{
					if(cb = strstr(szReturn, C_END))
					{
						ca += strlen(C_STA);
						while(*ca == 0x0A || *ca == 0x0D) ca ++;
						while(*cb == 0x0A || *cb == 0x0D) cb ++;
						strncpy(szReturn, ca, cb - ca);
						szReturn[cb - ca] = 0;
						break;
					}
				}
			}
		}
		else
		{
			sprintf(szReturn, "%ld", dwRet);
			bResult = FALSE;
		}

		if(pFile) pFile->Close();
		if(pServer) pServer->Close();
	}
	catch (CInternetException* pEx)
	{
		TCHAR szErr[1024];
		pEx->GetErrorMessage(szErr, 1024);

		sprintf(szReturn, "%s", szErr);
		
		bResult = FALSE;

		pEx->Delete();
	}

	if (pFile != NULL)
		delete pFile;
	if (pServer != NULL)
		delete pServer;
	psession->Close();
	delete psession;

	return bResult;
}
Exemple #20
0
BOOL CPop3Connection::ReadReturnResponse(CPop3Message& message, DWORD dwSize)
{
	//Must be connected to perform a "RETR"
	if(!m_bConnected)
	{
		//m_sLastCommandResponse = _T("ͨÐÅ佨Á¢");//<%IDS_Pop3_31%>
		m_sLastCommandResponse = FuncGetStringFromIDS("<%IDS_Pop3_31%>");//<%IDS_Pop3_31%>
		return FALSE;
	}
	
	//Retrieve the message body
	LPSTR pszOverFlowBuffer = NULL;
	int nSize = dwSize + 100;
	char* sBuf = new char[nSize];
	char* sMessageBuf = sBuf;
	if (!ReadResponse(sBuf, nSize, "\r\n.\r\n", &pszOverFlowBuffer, 32000))
	{
		delete [] sBuf;
		if (pszOverFlowBuffer)
			delete [] pszOverFlowBuffer;
		
		TRACE(_T("Error retrieving the RETR response"));
		return FALSE;
	}
	if (pszOverFlowBuffer)
		sMessageBuf = pszOverFlowBuffer;
	
	//determine if the response is an error
	if (strnicmp(sMessageBuf,"+OK", 3) != 0)
	{
		delete [] sBuf;
		if (pszOverFlowBuffer)
			delete [] pszOverFlowBuffer;
		
		SetLastError(WSAEPROTONOSUPPORT);
		TRACE(_T("POP3 server did not respond correctly to the RETR response\n"));
		return FALSE;
	}
	else
	{  
		//remove the first line which contains the +OK from the message
		char* pszFirst = GetFirstCharInResponse(sMessageBuf);
		VERIFY(pszFirst);
		
		//transfer the message contents to the message class
		int nMessageSize = sMessageBuf - pszFirst + strlen(sMessageBuf);
		
		// Do we already have memory allocated? If so, destroy it!
		if (message.m_pszMessage)
		{
			delete [] message.m_pszMessage;
			message.m_pszMessage = NULL;
		}
		
		message.m_pszMessage = new char[nMessageSize + 1];
		memcpy(message.m_pszMessage, pszFirst, nMessageSize);
		message.m_pszMessage[nMessageSize] = '\0';
	}
	delete [] sBuf;
	if (pszOverFlowBuffer)
		delete [] pszOverFlowBuffer;
	
	return TRUE; 
}
Exemple #21
0
BOOL ProInfo(const char * strParas , char * szReturn , int &nSize)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());


	bool bRet = false;
	CString strHost = _T("");
	CString strUserName = _T("");
	CString strPWD = _T("");
	int nProID=0;		//保存传进来的进程ID号
	int nPort = 3306;	//MySQL的默认端口号是3306

	MYSQL_RES * res;	//MYSQL数据库的记录集指针
	MYSQL_ROW row;		
	MYSQL	*mysql;	//接收MySQL数据的对象
	CStringList paramList;
	MakeStringListByChar(paramList, strParas);
	POSITION pos = paramList.GetHeadPosition();
	while(pos)
	{
		CString strTemp = paramList.GetNext(pos);
		if(strTemp.Find(__MACHINENAME__, 0)==0)
		{
			strHost = strTemp.Right(strTemp.GetLength() - (int)strlen(__MACHINENAME__));
		}
		else if(strTemp.Find(__PORT__, 0)==0)
		{
			nPort = atoi(strTemp.Right(strTemp.GetLength() - (int)strlen(__PORT__)));
		}
		else if(strTemp.Find(__USERACCOUNT__ , 0)==0)
		{
			strUserName = strTemp.Right(strTemp.GetLength() - (int)strlen(__USERACCOUNT__));
		}
		else if(strTemp.Find(__PASSWORD__ , 0)==0)
		{
			strPWD = strTemp.Right(strTemp.GetLength() - (int)strlen(__PASSWORD__));
		}
		else if(strTemp.Find(__PROID__, 0)==0)
		{
			nProID = atoi(strTemp.Right(strTemp.GetLength() - (int)strlen(__PROID__)));
		}
	}

	if(strHost.IsEmpty())
	{
		sprintf(szReturn,"error = %s",FuncGetStringFromIDS("SV_MYSQL","MYSQL_SERVER_HOST_IS_NULL"));
		return false;
	}
	if(nPort<=0)
	{
		sprintf(szReturn,"error = %s",FuncGetStringFromIDS("SV_MYSQL","MYSQL_SERVER_PORT_IS_BAD"));
		return false;
	}
	unsigned int i=0;
	CString strTMP = _T("");
	//////////////////////////////////////////////////

	int nID = 0;						//MYSQL线程标识,你要kill一个语句的时候很有用
	CString strDBUser = _T("");			//user列,显示当前用户,如果不是root,这个命令就只显示你权限范围内的sql语句
	CString strDBHost = _T("");			//host列,显示这个语句是从哪个ip的哪个端口上发出的
	CString strDatabase = _T("");		//db列,显示这个进程目前连接的是哪个数据库
	CString strCommand = _T("");		//command列,显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)。
	int nTime = 0;						//time列,此这个状态持续的时间,单位是秒
	CString strState = _T("");			//state列,显示使用当前连接的sql语句的状态
	CString strInfo = _T("");			//info列,显示这个sql语句,因为长度有限,所以长的sql语句就显示不全
	unsigned long nCurrentID = 0;		//当前线程ID

	int nTotalConn=0;					//连接总数
	map<CString,int> hostMap;
	map<CString,int>::const_iterator ptrHost;
	typedef pair <CString,int> hostPair;

	//////////////////////////////////////////////////

	if((mysql = mysql_init((MYSQL   *)NULL)) && mysql_real_connect(mysql,strHost, strUserName, strPWD, NULL, nPort,  NULL, 0))
	{
//		res = mysql_list_processes(mysql);
		CString strCommand=_T("");
		mysql_query(mysql,"show processlist");
		res = mysql_store_result(mysql);
		nCurrentID = mysql_thread_id(mysql);	//获取当前线程ID
		strCommand.Format("kill %d",nCurrentID);
		while(row = mysql_fetch_row(res))
		{	
			nID = atoi(row[0]);
			strDBUser = row[1];
			strDBHost = row[2];
			strDatabase = row[3];
			strCommand = row[4];
			nTime = atoi(row[5]);
			strState = row[6];
			strInfo = row[7];
			strDBHost=strDBHost.Left(strDBHost.Find(':'));		//擦掉获得的主机端口号
			ptrHost = hostMap.find(strDBHost.GetBuffer(strDBHost.GetLength()));

			if(nID!=nCurrentID)
			{
				if(ptrHost==hostMap.end())
				{
					hostMap.insert(hostPair(strDBHost.GetBuffer(strDBHost.GetLength()),1));
				}																						//用MAP保存主机名,并且将主机出现次数统计在键值中
				else
				{
					hostMap[strDBHost.GetBuffer(strDBHost.GetLength())]++;
				}
			}
/*
			else
			{
				PrintLog(row[0]);
				PrintLog(row[2]);
			}
*/			
			nTotalConn++;
		}

		nTotalConn=nTotalConn-1;		//减去自身的连接
		for(ptrHost=hostMap.begin();ptrHost!=hostMap.end();ptrHost++)
		{
			strTMP.Format("%s%s的连接数是%d,",strTMP.GetBuffer(strTMP.GetLength()),ptrHost->first,ptrHost->second);
		}
		strTMP.Delete(strTMP.GetLength()-1,1);			//去除返回值后多余的一个“,”
		sprintf(szReturn,"nTotalConn=%d$result=%s",nTotalConn,strTMP.GetBuffer(strTMP.GetLength()));

		CString strInput ;
		strInput =szReturn;
		MakeCharByString(szReturn,nSize,strInput);
		mysql_free_result(res);				//释放结果集使用的内存。
		mysql_close(mysql);					// 关闭服务器连接。
		bRet = TRUE;

	}
	else
	{
		sprintf(szReturn, "error=%s(%s:%d)$", FuncGetStringFromIDS("SV_MYSQL",
            "MYSQL_CONNECT_DATABASE_FAILED"), strHost, nPort);
		fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(mysql));

        mysql_close( mysql ) ;
        return FALSE;
	}

/*
	const char * strEnd=szReturn;
	while(*strEnd)
	{
		PrintLog(strEnd);
		strEnd+=strlen(strEnd)+1;
	}
*/
	return bRet;	
}
Exemple #22
0
BOOL MySQL(const char * strParas, char * szReturn, int& nSize)
//(CStringList &paramList, char *szReturn)
{
    BOOL bRet = TRUE;

    CString strHost = _T(""), //MySqL Server
        //strDBName = _T("mysql"),//Database Name,default mysql
        strUser = _T(""), //UserName
        strPwd = _T("");// Password
    int nPort = 3306;//MySQL Server Port,default 3306
/////////////////////////////////////////////////////////////////////////////
    const  char   *pszT;//Temp string
    MYSQL		* myData ;//Access Mysql objcect
/////////////////////////////////////////////////////////////////////////////
	CStringList paramList;
	MakeStringListByChar(paramList,strParas);

    POSITION pos = paramList.GetHeadPosition();
    while(pos)
    {
        CString strTemp = paramList.GetNext(pos);
		if(strTemp.Find(__MACHINENAME__, 0) == 0)
		{//Get Host
			strHost = strTemp.Right(strTemp.GetLength() - (int)strlen(__MACHINENAME__));
		}
		else if(strTemp.Find(__PORT__, 0) == 0)
		{//Get Port
			nPort = atoi(strTemp.Right(strTemp.GetLength() - (int)strlen(__PORT__)));
		}
        else if(strTemp.Find(__USERACCOUNT__, 0) == 0)
		{//Get Username
			strUser = strTemp.Right(strTemp.GetLength() - (int)strlen(__USERACCOUNT__));
		}
        else if(strTemp.Find(__PASSWORD__, 0) == 0)
		{//Get password
			strPwd = strTemp.Right(strTemp.GetLength() - (int)strlen(__PASSWORD__));
		}
        /*else if(strTemp.Find(__DBNAME__, 0) == 0)
		{//Get database name
			strDBName = strTemp.Right(strTemp.GetLength() - strlen(__DBNAME__));
		}*/
    }

    if(strHost.IsEmpty())
    {//host is empty
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("SV_MYSQL",
            "MYSQL_SERVER_HOST_IS_NULL"));
        return FALSE;
    }
    if(nPort <= 0)
    {//Invalid port
        sprintf(szReturn, "error=%s", FuncGetStringFromIDS("SV_MYSQL",
            "MYSQL_SERVER_PORT_IS_BAD"));
        return FALSE;
    }
	printf("----------%s--%s--%s--------\n",strHost,strUser,strPwd);

    if((myData = mysql_init((MYSQL*) 0)) && 
       mysql_real_connect( myData, strHost, strUser, strPwd, NULL, nPort,
			   NULL, 0 ) )
    {
        /*if ( mysql_select_db( myData, strDBName ) < 0 ) 
        {
            sprintf(szReturn, "error=%s(%s)$", FuncGetStringFromIDS("SV_MYSQL",
                "MYSQL_SELECT_DATABASE_FAILED"), strDBName);
	        //printf( "Can't select the %s database !\n", strDBName) ;
	        mysql_close( myData ) ;
	        return FALSE;
        }*/

        pszT = mysql_stat( myData ) ;		//mysql_stat(MYSQL * myData)取得目录数据库系统状况

        if(pszT)
        {
            Parser(pszT, strHost.GetBuffer(strHost.GetLength()), szReturn);
//			mysql_free_result(pszT);
			CString strInput ;
			strInput =szReturn;
			MakeCharByString(szReturn,nSize,strInput);
				

        }
        else
        {
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("SV_MYSQL",
                "MYSQL_QUERY_STAT_FAILED"));
            mysql_close( myData ) ;
            return FALSE;
        }
    }
    else 
    {
        sprintf(szReturn, "error=%s(%s:%d)$", FuncGetStringFromIDS("SV_MYSQL",
            "MYSQL_CONNECT_DATABASE_FAILED"), strHost, nPort);
        //printf( "Can't connect to the mysql server on port %d !\n",
	    //    MYSQL_PORT ) ;
		fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(myData));

        mysql_close( myData ) ;
        return FALSE;
    }
    mysql_close( myData ) ;
    return TRUE;
}
Exemple #23
0
int OpenControlChannel(char *hostname, int port, char *username, char *password, int timeout, char *retrfile, 
					   int ptype, char *pserver, int pport, char *puid, char *ppwd, char *szReturn, CFtpParam& ftpParam)
{
	struct	sockaddr_in	sa;
	struct	hostent		*hp;
	char	buffer[1024] = {0};
	int		ret = 0;
	CString	strCmd = _T("");
	CString strMessage = _T("");

	if(*pserver)
	{
		// Use Proxy
		switch(ptype)
		{
		case 0:
			// Common Proxy
			hp = gethostbyname(pserver);
			if(!hp)
			{
				sprintf(szReturn, "error=%s$",  FuncGetStringFromIDS("SV_PROXY",
                    "PROXY_DOMAIN_NAME_PARSER_ERROR"));//<%IDS_FTP_1%>
				return 1;
			}

			memcpy(&sa.sin_addr,hp->h_addr_list[0],hp->h_length);
			sa.sin_family = AF_INET;
			sa.sin_port=htons(pport);
			if (connect_timeo(ftpParam.ctrlSocket, (struct sockaddr *)&sa, sizeof(sa), timeout))
			{
				shutdown(ftpParam.ctrlSocket, 0x02);
				closesocket(ftpParam.ctrlSocket);
				sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_PROXY",
                    "PROXY_CONNECT_FAILED"));//<%IDS_FTP_2%>
				return 1;
			}
			break;
		case 1:
			// Socks5 Proxy
			if(socks5_protocol(ftpParam.ctrlSocket, hostname, port, pserver, pport, puid, ppwd, timeout))
			{
				sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_PROXY",
                    "PROXY_SERVER_ERROR"));//<%IDS_FTP_3%>
				return 1;
			}
			break;
		default:
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                "FTP_UNKNOWN_PROXY_TYPE"));//<%IDS_FTP_4%>
			return 1;
		}
	}
	else
	{
		// Direct Connect
		hp = gethostbyname(hostname);
		if(!hp)	
		{
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_DNS",
                "DNS_DOMAIN_NAME_PARSE_ERROR"));//<%IDS_FTP_5%>
			return 1;
		}

		memcpy(&sa.sin_addr,hp->h_addr_list[0],hp->h_length);
		sa.sin_family = AF_INET;
		sa.sin_port=htons(port);
		if (connect_timeo(ftpParam.ctrlSocket, (struct sockaddr *)&sa, sizeof(sa), timeout))
		{
			shutdown(ftpParam.ctrlSocket, 0x02);
			closesocket(ftpParam.ctrlSocket);
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                "FTP_CONNET_FAILED"));//<%IDS_FTP_6%>
			return 1;
		}
	}

	CString	retMsg = _T("");
	if(WaitVersionInfo(ftpParam.ctrlSocket, timeout))
	{
		sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
            "FTP_WAIT_INIT_INFO_TIMEOUT"));//<%IDS_FTP_7%>
		return 1;
	}

	// Send USER Command
	if(*pserver && ptype == 0)
		strCmd.Format("USER %s@%s\r\n", username, hostname);
	else
		strCmd.Format("USER %s\r\n", username);
	ret = FTP_COMMAND(ftpParam.ctrlSocket, strCmd, strMessage);
	if(ret != 2 && ret != 3)
	{
		sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
            "FTP_SEND_USERNAME_FAILED"));//<%IDS_FTP_8%>
		return 1;
	}

	// Send PASS Command
	strCmd.Format("PASS %s\r\n", password);
	ret = FTP_COMMAND(ftpParam.ctrlSocket, strCmd, strMessage);
	if(ret != 2 && ret != 3)
	{
		sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
            "FTP_SEND_PWD_FAILED"));//<%IDS_FTP_9%>
		return 1;
	}

	// Binary Mode
	strCmd = "TYPE I\r\n";
	ret = FTP_COMMAND(ftpParam.ctrlSocket, strCmd, strMessage);
	if(ret != 2 && ret != 3)
	{
		sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
            "FTP_APPLY_BINARY_MODE_ERROR"));//<%IDS_FTP_10%>
		return 1;
	}

	if(ftpParam.passive_mode)
	{
		// Passive Mode
		if(EnterPassiveMode(ftpParam))
		{
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                "FTP_APPLY_PASSIVITY_MODE_ERROR"));//<%IDS_FTP_11%>
			return 1;
		}
	}
	else
	{
		int Count = 0;
		while(1)
		{
			ftpParam.local_port = rand() % 55536 + 10000;
			
			sa.sin_family = AF_INET;
			sa.sin_addr.s_addr = htonl(INADDR_ANY);
			sa.sin_port=htons(ftpParam.local_port);
			if(bind(ftpParam.dataSocket, (struct sockaddr *)&sa, sizeof(sa)) == SOCKET_ERROR)
			{
				if(Count < 5)
				{
					Count ++;
					continue;
				}
				else
				{
					sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                        "FTP_LOCATE_BIND_ERROR"));//<%IDS_FTP_12%>
					return 1;
				}
			}

			if(listen(ftpParam.dataSocket, 10) == SOCKET_ERROR)
			{
				if(Count < 5)
				{
					Count ++;
					continue;
				}
				else
				{
					sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                        "FTP_LOCATE_CREATE_COMMUNICATE_ERROR"));//<%IDS_FTP_13%>
					return 1;
				}
			}

			break;
		}

		struct sockaddr_in lsa;
		int salen = sizeof(lsa);
		if(getsockname(ftpParam.ctrlSocket, (struct sockaddr *)&lsa, &salen) == SOCKET_ERROR)
		{
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                "FTP_GET_LOCATE_INFO_ERROR"));//<%IDS_FTP_14%>
			return 1;
		}
		strcpy(ftpParam.local_host, inet_ntoa(lsa.sin_addr));
		strCmd.Format("PORT %s,%d,%d\r\n", ftpParam.local_host, ftpParam.local_port/256, ftpParam.local_port%256);
		strCmd.Replace('.', ',');
		ret = FTP_COMMAND(ftpParam.ctrlSocket, strCmd, strMessage);
		if(ret < 0 || ret != 2)
		{
			if(!ftpParam.passive_mode)
			{
				//closesocket(dataSocket);
				ftpParam.passive_mode = 1;
				if(EnterPassiveMode(ftpParam))
				{
					sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                        "FTP_APPLY_PASSIVITY_MODE_ERROR"));//<%IDS_FTP_15%>
					return 1;
				}
			}
		}
	}

    if(strlen(retrfile) > 0)
    {
	    strCmd.Format("RETR %s\r\n", retrfile);
	    WriteString(ftpParam.ctrlSocket, strCmd);
	    ret = ReadString2(ftpParam.ctrlSocket,buffer);
	    if(ret != 1 && ret != 2 && ret != 3 && ret != 9)
	    {
		    if(ret == 5)
			    sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                "FTP_FILE_NOT_FOUND"));//<%IDS_FTP_16%>
		    else
			    sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_FTP",
                "FTP_UNKNOWN_ERROR"));//<%IDS_FTP_17%>
		    return 1;
	    }
    }

	return 0;
}
Exemple #24
0
BOOL TFTP_MONITOR(char *server, int port, char *file, int timeout, char *custpath, 
				  char *szReturn)
{
	SOCKET	s;
	int		nAckSeq = 0;
	int		nSaveFlag = 0;
	int		datalen = 0;
	DWORD	dwBytes = 0;
	int		i = 0, n = 0, dw = 0;
	struct	hostent *hp = NULL;
	struct	sockaddr_in serv;

	DWORD	dwbTime = 0, dweTime = 0;
	DWORD	dwbReceive = 0, dweReceive = 0;

	int		reqlen = 0;
	u_char	req[1024] = {0};
	u_char	res[1024] = {0};

	if((s = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET)
	{
		sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_SOCKET",
            "SOCKET_CREATE_FAILED"));
		return FALSE;
	}

	if((hp = gethostbyname(server)) == NULL)
	{
		sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_DSN",
            "DNS_DOMAIN_NAME_PARSE_ERROR"));
		return FALSE;
	}

	memcpy(&serv.sin_addr,hp->h_addr_list[0],hp->h_length);
    serv.sin_family = AF_INET;
    serv.sin_port = htons(port);

	// RRQ
	req[reqlen ++] = 0x00;
	req[reqlen ++] = 0x01;

	// Filename
	for(i = 0;i < (int)strlen(file);i ++)
		req[reqlen ++] = file[i];
	req[reqlen ++] = 0x00;

	// Mode
	req[reqlen ++] = 'O';
	req[reqlen ++] = 'C';
	req[reqlen ++] = 'T';
	req[reqlen ++] = 'E';
	req[reqlen ++] = 'T';
	req[reqlen ++] = 0x00;

	dwbTime = ::GetTickCount();

	if((n = sendto(s, (char *)req, reqlen, 0, (struct sockaddr *)&serv, sizeof(serv))) == SOCKET_ERROR)
	{
		sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_SOCKET",
            "SOCKET_SEND_DATA_ERROR"));
		return FALSE;
	}

#ifdef SAVEASFILE
	CFile	datafile;
	char	szFile[256] = {0};
	
	sprintf(szFile, ".\\%s", file);
	if(!datafile.Open(szFile, CFile::modeWrite|CFile::modeCreate)) 
	{
		sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_BASIC",
            "BASIC_CREATE_FILE_FAIL"));
		return FALSE;
	}
#endif

	dwbReceive = ::GetTickCount();

	while(1)
	{
		if(RESPONSE_WAIT(s, timeout) <= 0)
		{
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_SOCKET",
                "SOCKET_RECV_DATA_TIMEOUT"));
			return FALSE;
		}

		dw = sizeof(serv);
		n = recvfrom(s, (char *)res, sizeof(res), 0, (struct sockaddr *)&serv, &dw);
		if(n == SOCKET_ERROR || n == 0)
		{
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_SCOKET",
                "SOCKET_RECV_DATA_ERROR"));
			return FALSE;
		}

		int nCode = res[0] * 0x100 + res[1];
		if(nCode == 0x05)
		{
			sprintf(szReturn, "error=%s [%d]$", res + 4, res[2] * 0x100 + res[3]);
			return FALSE;
		}

		if(nCode != 0x03)
		{
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_SOCKET",
                "SOCKET_UNKNOWN_ERROR"));
			return FALSE;
		}

		datalen = n;

		if(res[2] * 0x100 + res[3] > nAckSeq)
		{
			nAckSeq ++;
			nSaveFlag = 1;
		}

		reqlen = 0;
		req[reqlen ++] = 0x00;
		req[reqlen ++] = 0x04;
		req[reqlen ++] = res[2];
		req[reqlen ++] = res[3];
		if((n = sendto(s, (char *)req, reqlen, 0, (struct sockaddr *)&serv, sizeof(serv))) == SOCKET_ERROR)
		{
			sprintf(szReturn, "error=%s$", FuncGetStringFromIDS("SV_SOCKET",
                "SOCKET_SEND_DATA_EEROR"));
			return FALSE;
		}

		if(nSaveFlag) dwBytes += datalen - 4;

#ifdef SAVEASFILE
		if(nSaveFlag) datafile.Write(res + 4, datalen - 4);
#endif
		nSaveFlag = 0;

		if(datalen - 4 < 512) break;
	}
	
#ifdef SAVEASFILE
	datafile.Close();
#endif

	dweTime = ::GetTickCount();
	dweReceive = ::GetTickCount();

	DWORD dwInterval = dweReceive - dwbReceive;
	if(dwInterval == 0) dwInterval = 1;

	sprintf(szReturn, "roundTripTime=%.3f$bytes=%ld$bytesPerSec=%.3f", 
			(dweTime - dwbTime) / 1000.0, dwBytes, (dwBytes / 1024.0) / (dwInterval / 1000.0));

	return TRUE;
}
Exemple #25
0
BOOL ProList(const char * strParas , char * szReturn , int &nSize)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	bool bRet = false;
	CString strHost = _T("");
	CString strUserName = _T("");
	CString strPWD = _T("");
	int nPort = 3306;	//MySQL的默认端口号是3306

	MYSQL_RES * res;	//MYSQL数据库的记录集指针
	MYSQL_ROW row;		
	MYSQL	*mysql;	//接收MySQL数据的对象
	CStringList paramList;
	MakeStringListByChar(paramList, strParas);
	POSITION pos = paramList.GetHeadPosition();
	while(pos)
	{
		CString strTemp = paramList.GetNext(pos);
		if(strTemp.Find(__MACHINENAME__, 0)==0)
		{
			strHost = strTemp.Right(strTemp.GetLength() - (int)strlen(__MACHINENAME__));
		}
		else if(strTemp.Find(__PORT__, 0)==0)
		{
			nPort = atoi(strTemp.Right(strTemp.GetLength() - (int)strlen(__PORT__)));
		}
		else if(strTemp.Find(__USERACCOUNT__ , 0)==0)
		{
			strUserName = strTemp.Right(strTemp.GetLength() - (int)strlen(__USERACCOUNT__));
		}
		else if(strTemp.Find(__PASSWORD__ , 0)==0)
		{
			strPWD = strTemp.Right(strTemp.GetLength() - (int)strlen(__PASSWORD__));
		}
	}

	if(strHost.IsEmpty())
	{
		sprintf(szReturn,"error = %s",FuncGetStringFromIDS("SV_MYSQL","MYSQL_SERVER_HOST_IS_NULL"));
		return false;
	}
	if(nPort<=0)
	{
		sprintf(szReturn,"error = %s",FuncGetStringFromIDS("SV_MYSQL","MYSQL_SERVER_PORT_IS_BAD"));
		return false;
	}
	unsigned int i=0;
	CString strTMP = _T("");
	//////////////////////////////////////////////////

	int nID =0;							//MYSQL线程标识,你要kill一个语句的时候很有用
	unsigned long nCurrentID = 0;

	//////////////////////////////////////////////////



	if((mysql = mysql_init((MYSQL   *)NULL)) && mysql_real_connect(mysql,strHost, strUserName, strPWD, NULL, nPort,  NULL, 0))
	{
		res = mysql_list_processes(mysql);
		nCurrentID = mysql_thread_id(mysql);    //获取当前线程ID号。
		while(row = mysql_fetch_row(res))
		{
			
			nID = atoi(row[0]);
			if(nID==nCurrentID)
			{
				break;
			}

			sprintf(szReturn,"%d=%d$",nID,nID);
			strTMP+=szReturn;
			
		}
		sprintf(szReturn,"%s$",strTMP.GetBuffer(1));
		CString strInput ;
		strInput =szReturn;
		MakeCharByString(szReturn,nSize,strInput);

		mysql_free_result(res);		//关闭查询的结果集
		mysql_close(mysql);

		bRet = TRUE;
	}
	else
	{
		sprintf(szReturn, "error=%s(%s:%d)$", FuncGetStringFromIDS("SV_MYSQL",
            "MYSQL_CONNECT_DATABASE_FAILED"), strHost, nPort);
		fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(mysql));

        mysql_close( mysql ) ;
        return FALSE;
	}
/*
	const char * strEnd = szReturn;
	while(*strEnd)
	{
		PrintLog(strEnd);
		strEnd+=strlen(strEnd)+1;
	}
*/
	return TRUE;	
}
Exemple #26
0
BOOL DNS_MONITOR(char *server, int port, char *domain, CStringList &lstAddress, 
				 char *custpath, char *szReturn)
{
	u_char reply[1000];
	SOCKET udpSocket;
    struct sockaddr_in serv;
	unsigned int n;
	int dw, ret, Count = 0, iCount = 0;
	LONG	dwBeginTime, dwElapseTime;

	u_char request[1000] =
				{ 
				0x01, 0x01, 0x01, 0x00,
				0x00, 0x01, 0x00, 0x00,
				0x00, 0x00, 0x00, 0x00
				};
	Count = 12;

	for(n = 0;n < strlen(domain);n ++)
	{
		if(domain[n] != '.')
		{
			iCount ++;
			request[Count + iCount] = domain[n];
		}
		else
		{
			request[Count] = iCount;
			Count = Count + iCount + 1;
			iCount = 0;
		}
	}
	request[Count] = iCount;
	Count = Count + iCount + 1;
	request[Count] = 0x00;
	request[Count + 1] = 0x00;
	request[Count + 2] = 0x01;
	request[Count + 3] = 0x00;
	request[Count + 4] = 0x01;
	Count += 5;

	udpSocket = socket(AF_INET, SOCK_DGRAM, 0);
	if(udpSocket == INVALID_SOCKET)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_1%>"));//<%IDS_DNS_1%>
		return FALSE;
	}

	struct hostent *hp;
	hp = gethostbyname(server);
	if(!hp)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_2%>"));//<%IDS_DNS_2%>
		return FALSE;
	}

	memcpy(&serv.sin_addr,hp->h_addr_list[0],hp->h_length);
    serv.sin_family = AF_INET;
    serv.sin_port = htons(port);
	
	dwBeginTime = GetTickCount();
    n = sendto(udpSocket, (char *)request, Count, 0, (struct sockaddr *)&serv, sizeof(serv));
	if(n == SOCKET_ERROR)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_3%>"));//<%IDS_DNS_3%>
		return FALSE;
	}
	
	ret = RESPONSE_WAIT(udpSocket, DNS_TIMEOUT);
	if(ret > 0)
	{
		dw = sizeof(serv);
		if((n = recvfrom(udpSocket, (char *)reply, 1000, 0, (struct sockaddr *)&serv, &dw)) < 0)
		{
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_4%>"));//<%IDS_DNS_4%>
			return FALSE;
		}

		switch(reply[3] & 0x0F)
		{
		case 0:
			break;
		case 1:
			// Malformed DNS Request Packet
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_5%>"));//<%IDS_DNS_5%>
			return FALSE;
		case 2:
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_6%>"));//<%IDS_DNS_6%>
			return FALSE;
		case 3:
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_7%>"));//<%IDS_DNS_7%>
			return FALSE;
		}

		if(reply[0] == request[0] && reply[1] == request[1])
		{
			if(reply[6] * 256 + reply[7] == 0)
			{
				sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_8%>"));//<%IDS_DNS_8%>
				return FALSE;
			}

			//DNSMessageParser(reply, n);

			if(lstAddress.GetCount() != 0)
			{
				ret = VerifyDNS(reply, n, lstAddress);
				if(ret == 0)
				{
					dwElapseTime = GetTickCount() - dwBeginTime;
					sprintf(szReturn, "roundTripTime=%ld$", dwElapseTime);
					return TRUE;
				}
				else if(ret == -1)
				{
					sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_9%>"));//<%IDS_DNS_9%>
					return FALSE;
				}
				else if(ret == -2)
				{
					sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_11%>"));	//Verify Failed,<%IDS_DNS_11%> 
					return FALSE;
				}
				else
				{
					sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_12%>"));//<%IDS_DNS_12%>
					return FALSE;
				}
			}
			else
			{
				dwElapseTime = GetTickCount() - dwBeginTime;
				sprintf(szReturn, "roundTripTime=%ld$", dwElapseTime);
			}
		}
		else
		{
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_13%>"));//<%IDS_DNS_13%>
			return FALSE;
		}
	}
	else
	{
		if(ret == 0)
		{
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_14%>"));	//<%IDS_DNS_14%>
			return FALSE;
		}
		else
		{
			sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_DNS_15%>"));//<%IDS_DNS_15%>
			return FALSE;
		}
	}

	return TRUE;
}
Exemple #27
0
BOOL IPLANET_MONITOR(char *url, int timeout, char *uid, char *pwd, 
					 char *pserver, int pport, char *puid, char *ppwd, 
					 char *custpath, char *szReturn)
{
	int		totalRequests = 0,
			badRequests = 0,
			status_2xx = 0,
			status_3xx = 0,
			status_4xx = 0,
			status_5xx = 0,
			status_xxx = 0,
			status_200 = 0,
			status_302 = 0,
			status_304 = 0,
			status_401 = 0,
			status_403 = 0;

	char msg[8192] = {0};
	if(!GetUrlData(url, timeout, uid, pwd, pserver, pport, puid, ppwd, 8192, msg))
	{
		sprintf(szReturn, "error=%s", msg);
		return FALSE;
	}

	int index = 0;
	int		percent = 0;
	char tmp[256] = {0};
	CString strBuff(msg);
	while(1)
	{
		index = strBuff.Find('<', 0);
		if(index < 0) break;
		int index2 = strBuff.Find('>', index);
		if(index2 < 0) break;
		strBuff.Insert(index, ':');
		strBuff.Delete(index + 1, index2 - index + 1);
	}
	strBuff.Replace("\r\n", " ");
	strBuff.Replace(':', ' ');
	strBuff.MakeLower();

	index = strBuff.Find("total requests", 0);
	if(index < 0) 
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_1%>"));//<%IDS_iPlanet_1%>
		return FALSE;
	}
	strBuff.Delete(0, index + 6);
	if(sscanf(strBuff, "%s %d", tmp, &totalRequests) != 2)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_2%>"));//<%IDS_iPlanet_2%>
		return FALSE;
	}

	index = strBuff.Find("bad requests", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_3%>"));//<%IDS_iPlanet_3%>
		return FALSE;
	}
	strBuff.Delete(0, index + 4);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &badRequests) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_4%>"));//<%IDS_iPlanet_4%>
		return FALSE;
	}

	index = strBuff.Find("2xx", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_5%>"));//<%IDS_iPlanet_5%>
		return FALSE;
	}
	strBuff.Delete(0, index);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &status_2xx) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_6%>"));//<%IDS_iPlanet_6%>
		return FALSE;
	}

	index = strBuff.Find("3xx", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_7%>"));//<%IDS_iPlanet_7%>
		return FALSE;
	}
	strBuff.Delete(0, index);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &status_3xx) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_8%>"));//<%IDS_iPlanet_8%>
		return FALSE;
	}

	index = strBuff.Find("4xx", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_9%>"));//<%IDS_iPlanet_9%>
		return FALSE;
	}
	strBuff.Delete(0, index);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &status_4xx) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_10%>"));//<%IDS_iPlanet_10%>
		return FALSE;
	}

	index = strBuff.Find("5xx", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_11%>"));//<%IDS_iPlanet_11%>
		return FALSE;
	}
	strBuff.Delete(0, index);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &status_5xx) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_12%>"));//<%IDS_iPlanet_12%>
		return FALSE;
	}

	index = strBuff.Find("xxx", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_13%>"));//<%IDS_iPlanet_13%>
		return FALSE;
	}
	strBuff.Delete(0, index);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &status_xxx) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_14%>"));//<%IDS_iPlanet_14%>
		return FALSE;
	}
	
	if(status_xxx == 200)
	{
		index = strBuff.Find("200", 0);
		if(index >= 0)
			strBuff.Delete(0, index + 3);
	}
	index = strBuff.Find("200", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_15%>"));//<%IDS_iPlanet_15%>
		return FALSE;
	}
	strBuff.Delete(0, index);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &status_200) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_16%>"));//<%IDS_iPlanet_16%>
		return FALSE;
	}

	if(status_200 == 302)
	{
		index = strBuff.Find("302", 0);
		if(index >= 0)
			strBuff.Delete(0, index + 3);
	}
	index = strBuff.Find("302", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_17%>"));//<%IDS_iPlanet_17%>
		return FALSE;
	}
	strBuff.Delete(0, index);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &status_302) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_18%>"));//<%IDS_iPlanet_18%>
		return FALSE;
	}

	if(status_302 == 304)
	{
		index = strBuff.Find("304", 0);
		if(index >= 0)
			strBuff.Delete(0, index + 3);
	}

	index = strBuff.Find("304", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_19%>"));//<%IDS_iPlanet_19%>
		return FALSE;
	}
	strBuff.Delete(0, index);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &status_304) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_20%>"));//<%IDS_iPlanet_20%>
		return FALSE;
	}

	if(status_304 == 401)
	{
		index = strBuff.Find("401", 0);
		if(index >= 0)
			strBuff.Delete(0, index + 3);
	}
	index = strBuff.Find("401", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_21%>"));//<%IDS_iPlanet_21%>
		return FALSE;
	}
	strBuff.Delete(0, index);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &status_401) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_22%>"));//<%IDS_iPlanet_22%>
		return FALSE;
	}

	if(status_401 == 403)
	{
		index = strBuff.Find("403", 0);
		if(index >= 0)
			strBuff.Delete(0, index + 3);
	}
	index = strBuff.Find("403", 0);
	if(index < 0)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_23%>"));//<%IDS_iPlanet_23%>
		return FALSE;
	}
	strBuff.Delete(0, index);
	if(sscanf(strBuff, "%s %d%% %d", tmp, &percent, &status_403) != 3)
	{
		sprintf(szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_iPlanet_24%>"));//<%IDS_iPlanet_24%>
		return FALSE;
	}

	sprintf(szReturn, "totalRequests=%d$badRequests=%d$status_2xx=%d$status_3xx=%d$status_4xx=%d$status_5xx=%d$status_xxx=%d$status_200=%d$status_302=%d$status_304=%d$status_401=%d$status_403=%d$", 
			totalRequests, badRequests, status_2xx, status_3xx, status_4xx, 
			status_5xx, status_xxx, status_200, status_302, status_304, 
			status_401, status_403);

	return TRUE;
}
Exemple #28
0
BOOL SlaveStatus(const char * strParas , char * szReturn, int &nSize)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	bool bRet = false;
	CString strHost = _T("");
	CString strUserName = _T("");
	CString strPWD = _T("");
	int nPort = 3306;

	MYSQL_RES * res;	//MYSQL数据库的记录集指针
	MYSQL_ROW row;		
	MYSQL	*mysql;	//接收MySQL数据的对象
	CStringList paramList;
	MakeStringListByChar(paramList, strParas);
	POSITION pos = paramList.GetHeadPosition();
	while(pos)
	{
		CString strTemp = paramList.GetNext(pos);
		if(strTemp.Find(__MACHINENAME__, 0)==0)
		{
			strHost = strTemp.Right(strTemp.GetLength() - (int)strlen(__MACHINENAME__));
		}
		else if(strTemp.Find(__PORT__, 0)==0)
		{
			nPort = atoi(strTemp.Right(strTemp.GetLength() - (int)strlen(__PORT__)));
		}
		else if(strTemp.Find(__USERACCOUNT__ , 0)==0)
		{
			strUserName = strTemp.Right(strTemp.GetLength() - (int)strlen(__USERACCOUNT__));
		}
		else if(strTemp.Find(__PASSWORD__ , 0)==0)
		{
			strPWD = strTemp.Right(strTemp.GetLength() - (int)strlen(__PASSWORD__));
		}
	}

	if(strHost.IsEmpty())
	{
		sprintf(szReturn,"error=%s",FuncGetStringFromIDS("SV_MYSQL","MYSQL_SERVER_HOST_IS_NULL"));
		return false;
	}
	if(nPort<=0)
	{
		sprintf(szReturn,"error=%s",FuncGetStringFromIDS("SV_MYSQL","MYSQL_SERVER_PORT_IS_BAD"));
		return false;
	}
	unsigned int i=0;
	CString strTMP = _T("");
	//////////////////////////////////////////////////

	CString strSlaveIOState = _T("");
	CString strMasterHost = _T("");
	CString strMasterUser = _T("");
	CString strSlaveIORunning = _T("");						//Slave是否在运行
	CString strSlaveSQLRunning = _T("");
	int nMasterPort = 3306;
	CString strSecondsBehindMaster = _T("");				//最后一次同步时间

	//////////////////////////////////////////////////


	if((mysql = mysql_init((MYSQL   *)NULL)) && mysql_real_connect(mysql,strHost, strUserName, strPWD, NULL, nPort,  NULL, 0))
	{
		mysql_query(mysql, "show slave status");
		res = mysql_store_result(mysql);

		while(row = mysql_fetch_row(res))
		{
/*			
			PrintLog(row[1]);
			PrintLog(row[2]);
			PrintLog(row[3]);

			for (i=0; i<mysql_num_fields(res); i++)
			{
				PrintLog(row[i]);
			}
*/
			strSlaveIOState = row[0];
			strMasterHost = row[1];
			strMasterUser = row[2];
			nMasterPort = atoi(row[3]);
			strSlaveIORunning =row[10];
			strSlaveSQLRunning = row[11];
			strSecondsBehindMaster = row[32];
			
	
		
		}
		if(strSlaveIOState.IsEmpty())
			strSlaveIOState="null";
		if(strMasterHost.IsEmpty())
			strMasterHost="null";
		if(strMasterUser.IsEmpty())
			strMasterUser="******";
		if(strSlaveIORunning.IsEmpty())
			strSlaveIORunning="null";
		sprintf(szReturn,"SlaveIOState=%s$MasterHost=%s$MasterUser=%s$MasterPort=%d$SlaveIORunning=%s$SlaveSQLRunning=%s$SecondsBehindMaster=%s$",
			strSlaveIOState.GetBuffer(1),
			strMasterHost.GetBuffer(1),
			strMasterUser.GetBuffer(1),
			nMasterPort,
			strSlaveIORunning.GetBuffer(1),
			strSlaveSQLRunning.GetBuffer(1),
			strSecondsBehindMaster.GetBuffer(1));

		CString strInput ;
		strInput =szReturn;
		MakeCharByString(szReturn,nSize,strInput);
				
		mysql_free_result(res);
		bRet = TRUE;
	}
	else
	{
		sprintf(szReturn, "error=%s(%s:%d)$", FuncGetStringFromIDS("SV_MYSQL",
            "MYSQL_CONNECT_DATABASE_FAILED"), strHost, nPort);
		fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(mysql));

        mysql_close( mysql ) ;
        return FALSE;
	}

	mysql_close(mysql);
/*
	char * strEnd = szReturn;
	while(*strEnd)
	{
		PrintLog(strEnd);
		strEnd+=strlen(strEnd)+1;
	}
*/
	return bRet;
}
Exemple #29
0
void CIEEvents::OnDocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
{
	TRACE("OnDocumentComplete\r\n");

	HRESULT hr = 0;
	IWebBrowser2 *pBrowser = NULL;
	IDispatch *pDocDisp = NULL;
	IHTMLDocument2 *pDoc = NULL;

	if(SUCCEEDED(hr = pDisp->QueryInterface(IID_IWebBrowser2, (void **)&pBrowser)))
	{
		if(SUCCEEDED(hr = pBrowser->get_Document(&pDocDisp)))
		{
			if(SUCCEEDED(hr = pDocDisp->QueryInterface(IID_IHTMLDocument2, (void **)&pDoc)))
			{
				IPersistFile * pPF = NULL;
				if(SUCCEEDED(hr = pDoc->QueryInterface(IID_IPersistFile, (void**)&pPF)))
				{
					CString strFile = _T("");
					strFile.Format("%s\\doc\\aim\\exec\\jre\\bin\\%d.html", FuncGetInstallPath(), m_nID);
					if (SUCCEEDED (hr = pPF->Save(strFile.AllocSysString(), FALSE)))
					{
						CStdioFile sFile;
						CFileException ex;
						if(!sFile.Open(strFile, CFile::modeRead, &ex))
							sprintf(m_szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_IEEvents_1%>"));//<%IDS_IEEvents_1%>
						
						char szBuffer[100 * 1024] = {0};
//						sFile.ReadHuge(szBuffer, sizeof(szBuffer));
						if(!strstr(szBuffer, m_strMatchContent))
							sprintf(m_szReturn, "error=%s", FuncGetStringFromIDS("<%IDS_IEEvents_2%>"));//<%IDS_IEEvents_2%>

						sFile.Close();
					}
					else
					{
						sprintf(m_szReturn, "%s", "status=-1$");
					}

					pPF->Release();
				}
				else
				{
					sprintf(m_szReturn, "%s", "status=-1$");
				}

				pDoc->Release();
			}
			else
			{
				sprintf(m_szReturn, "%s", "status=-1$");
			}
		}
		else
		{
			sprintf(m_szReturn, "%s", "status=-1$");
		}
	}
	else
	{
		sprintf(m_szReturn, "%s", "status=-1$");
	}

	PostQuitMessage(1);
}
Exemple #30
0
BOOL MemoryStatus(const char * strParas , char * szReturn, int &nSize)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	bool bRet = FALSE;
	CString strHost = _T("");
	CString strUserName = _T("");
	CString strPWD = _T("");
	int nPort = 3306;		//MySQL的默认端口号

	MYSQL * mysql;			//MySQL对象
	MYSQL_RES * res;		//MySQL记录集指针
	MYSQL_ROW row;		//MySQL行指针

	CStringList strList;
	MakeStringListByChar(strList, strParas);
	POSITION pos=strList.GetHeadPosition();
	while(pos)
	{
		CString strTemp=strList.GetNext(pos);
		if(strTemp.Find(__MACHINENAME__)==0)
		{
			strHost = strTemp.Right(strTemp.GetLength() - (int)strlen(__MACHINENAME__));
		}
		else if(strTemp.Find(__USERACCOUNT__)==0)
		{
			strUserName = strTemp.Right(strTemp.GetLength() - (int)strlen(__USERACCOUNT__));
		}
		else if(strTemp.Find(__PASSWORD__)==0)
		{
			strPWD = strTemp.Right(strTemp.GetLength() - (int)strlen(__PASSWORD__));
		}
		else if(strTemp.Find(__PORT__)==0)
		{
			nPort = atoi(strTemp.Right(strTemp.GetLength() - (int)strlen(__PORT__)));
		}
	}
	if(strHost.IsEmpty())
	{
		sprintf(szReturn,"error=%s$",FuncGetStringFromIDS("SV_MYSQL","MYSQL_SERVER_HOST_IS_NULL"));
		return FALSE;
	}
	if(nPort<=0)
	{
		sprintf(szReturn,"error=%s$",FuncGetStringFromIDS("SV_MYSQL","MYSQL_SERVER_PORT_IS_BAD"));
		return FALSE;
	}
	////////////////////////////////////////////////

	int Innodb_page_size=0;					//页大小(单位:字节)
	int Innodb_buffer_pool_pages_total =0;	//缓冲池总大小(单位:页数)
	int Innodb_buffer_pool_pages_free = 0;	//空页数(单位:页)
	int Innodb_buffer_pool_pages_data = 0;	//包含数据的页(单位:页)
	int Innodb_buffer_pool_pages_dirty =0;	//当前的脏页(单位:页),脏页是指该页包含尚未写磁盘的修改
	int Innodb_buffer_pool_pages_latched = 0;	//在InnoDB缓冲池中锁定的页数。这是当前正读或写或由于其它原因不能清空或删除的页数
	unsigned int nCurrentID=0;

	////////////////////////////////////////////////
	
	if((mysql = mysql_init((MYSQL *)NULL)) && mysql_real_connect(mysql, strHost, strUserName, strPWD, NULL, nPort, NULL, 0))
	{
		mysql_query(mysql,"show status");
		res = mysql_store_result(mysql);

		while(row = mysql_fetch_row(res))
		{
			if(!strcmp(row[0], "Innodb_page_size"))
			{
				Innodb_page_size=atoi(row[1]);
				Innodb_page_size=Innodb_page_size/1024;		//将页的单位从字节转化为Kb
				
			}
			else if(!strcmp(row[0], "Innodb_buffer_pool_pages_total"))
			{
				Innodb_buffer_pool_pages_total = atoi(row[1]);
				
			}
			else if(!strcmp(row[0], "Innodb_buffer_pool_pages_free"))
			{
				Innodb_buffer_pool_pages_free = atoi(row[1]);
			}
			else if(!strcmp(row[0], "Innodb_buffer_pool_pages_data"))
			{
				Innodb_buffer_pool_pages_data = atoi(row[1]);
			}
			else if(!strcmp(row[0], "Innodb_buffer_pool_pages_dirty"))
			{
				Innodb_buffer_pool_pages_dirty = atoi(row[1]);
			}
			else if(!strcmp(row[0], "Innodb_buffer_pool_pages_latched"))
			{
				Innodb_buffer_pool_pages_latched = atoi(row[1]);
			}
			
		}
		sprintf(szReturn,"PageSize=%d$TotalPages=%d$FreePages=%d$DataPages=%d$DirtyPages=%d$LatchedPages=%d$",
			Innodb_page_size,
			Innodb_buffer_pool_pages_total,
			Innodb_buffer_pool_pages_free,
			Innodb_buffer_pool_pages_data,
			Innodb_buffer_pool_pages_dirty,
			Innodb_buffer_pool_pages_latched);
		CString strInput ;
		strInput =szReturn;
		MakeCharByString(szReturn,nSize,strInput);
		mysql_free_result(res);
		bRet = TRUE;


	}
	else
	{
		sprintf(szReturn, "error=%s(%s:%d)$", FuncGetStringFromIDS("SV_MYSQL",
            "MYSQL_CONNECT_DATABASE_FAILED"), strHost, nPort);
		fprintf(stderr, "Failed to connect to database: Error: %s\n",
          mysql_error(mysql));

        mysql_close( mysql ) ;
        return FALSE;
	}
/*
	const char * strEnd = szReturn;
	while(*strEnd)
	{
		PrintLog(strEnd);
		strEnd+=strlen(strEnd)+1;
	}
*/
	mysql_close(mysql);
	return TRUE;
}