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; }
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; }
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; } }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
BOOL WebLogic(const char * strParas, char * szReturn, int& nSize) //(CStringList ¶mList, 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 { } }
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; }
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 = ðerStatsPkts64Octets; ptmpoid->next = ðerStatsPkts65to127Octets; 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; }
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; }
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; }
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; }
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; }
BOOL MySQL(const char * strParas, char * szReturn, int& nSize) //(CStringList ¶mList, 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; }
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; }
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; }
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; }
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; }
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; }
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; }
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); }
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; }