Пример #1
0
extern "C" _declspec (dllexport) BOOL DBSpace(const char * strParas, char * szRet, int& nSize)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	CString strServerName=_T("");
	CString strUserAccount=_T("");
	CString strPassWord=_T("");
	CString strDBFile=_T("");

	CStringList lstParas;
	MakeStringListByChar(lstParas,strParas);

	strServerName = GetValueFromList("_ServerName",lstParas);
	strUserAccount = GetValueFromList("_UserAccount",lstParas);	
	strPassWord = GetValueFromList("_PassWord",lstParas);
	strDBFile = GetValueFromList("_DBFile",lstParas);

	char szResult[1024*10]={0};
	char szServer[1024]={0};
	strcpy(szServer,strServerName);
	
	HANDLE hhandle =CreateMutex(NULL,FALSE,"Global\\SiteView-Lotus-Montior");
	if(hhandle ==NULL)
	{
		DWORD nlast;
		nlast =GetLastError();
		printf("begin wait  last error is %d\n",nlast);
		sprintf(szRet,"error=CreateMutex Failed code is %d", nlast);
		nSize = static_cast<int>(strlen(szRet));
		return FALSE;

	}
	WaitForSingleObject(hhandle,INFINITE);

	WritePassword(strPassWord);

	if(!getDBSpace(szServer,strDBFile,szResult))
	{
		ReleaseMutex(hhandle);
		CloseHandle(hhandle);
		CutFlag(szResult,0x13);
		sprintf(szRet,"error=%s", szResult);
		nSize = static_cast<int>(strlen(szRet));
		return FALSE;
	}

	ReleaseMutex(hhandle);
	CloseHandle(hhandle);
	
	CString strInput =szResult;
	nSize = 4096;
	MakeCharByString(szRet,nSize,strInput);
	
	return TRUE;
}
Пример #2
0
extern "C" _declspec (dllexport)  BOOL FileList(const char * strParas, char * szRet, int& nSize)
{	
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	
	CString strServerName=_T("");
	CString strUserAccount=_T("");
	CString strPassWord=_T("");
	CString strDirectory = _T("");

	CStringList lstParas;
	MakeStringListByChar(lstParas,strParas);

	strServerName = GetValueFromList("_ServerName",lstParas);
	strUserAccount = GetValueFromList("_UserAccount",lstParas);	
	strPassWord = GetValueFromList("_PassWord",lstParas);
	strDirectory = GetValueFromList("_Directory",lstParas);

	char szResult[1024*10]={0};
	char szServer[1024]={0};
	strcpy(szServer,strServerName);

	CStringList lstTexts;
	CStringList lstValues;

	HANDLE hhandle =CreateMutex(NULL,FALSE,"Global\\SiteView-Lotus-Montior");
	if(hhandle ==NULL)
	{
		DWORD nlast;
		nlast =GetLastError();
		printf("begin wait  last error is %d\n",nlast);
		sprintf(szRet,"error=CreateMutex Failed code is %d", nlast);
		nSize = static_cast<int>(strlen(szRet));
		return FALSE;

	}
	WaitForSingleObject(hhandle,INFINITE);

	WritePassword(strPassWord);

	BOOL bResult = NSF_List(strServerName, strDirectory, lstTexts, lstValues, szResult);
	if(!bResult)
	{
		ReleaseMutex(hhandle);
		CloseHandle(hhandle);
		CutFlag(szResult,0x13);
		sprintf(szRet,"error=NSF_List Failed %s", szResult);
		nSize = static_cast<int>(strlen(szRet));
		return FALSE;
	}

	ReleaseMutex(hhandle);
	CloseHandle(hhandle);

	POSITION pos=NULL;
    pos = lstTexts.GetHeadPosition();
	char * ca;
	ca =szRet;
	CString strTemp;
    while(pos)
    {
		strTemp=lstTexts.GetNext(pos);
		if(strTemp.Find(".nsf",0)>=0)
		{
			sprintf(ca,"%s=%s$",strTemp.GetBuffer(strTemp.GetLength()),strTemp.GetBuffer(strTemp.GetLength()));
			ca=ca+2*strTemp.GetLength()+2;
		}
        //lstValues.AddTail(lstTexts.GetNext(pos));        
    }
	
	CString strInput =szRet;
	nSize = 4096;
	MakeCharByString(szRet,nSize,strInput);

	return TRUE;
}
Пример #3
0
extern "C" _declspec (dllexport) BOOL Mail(const char * strParas, char * szRet, int& nSize)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	CString strServerName=_T("");
	CString strUserAccount=_T("");
	CString strPassWord=_T("");

	CStringList lstParas;
	MakeStringListByChar(lstParas,strParas);

	strServerName = GetValueFromList("_ServerName",lstParas);
	strUserAccount = GetValueFromList("_UserAccount",lstParas);	
	strPassWord = GetValueFromList("_PassWord",lstParas);

	char szResult[1024*10]={0};
	char szServer[1024]={0};
	strcpy(szServer,strServerName);
	
	HANDLE hhandle =CreateMutex(NULL,FALSE,"Global\\SiteView-Lotus-Montior");
	if(hhandle ==NULL)
	{
		DWORD nlast;
		nlast =GetLastError();
		sprintf(szRet,"error=CreateMutex Failed code is %d", nlast);
		nSize = static_cast<int>(strlen(szRet));
		return FALSE;
	}
	WaitForSingleObject(hhandle,INFINITE);
	
	WritePassword(strPassWord);

	STATUS nStatus =NF_Command(szServer,"show stat mail",szResult);

	ReleaseMutex(hhandle);
	CloseHandle(hhandle);

	if(nStatus != NOERROR)
	{
		sprintf(szRet,"error=%s", szResult);
		nSize = static_cast<int>(strlen(szRet));
		return FALSE;
	}

	//CurrentByteDeliveryRate
	char value[64]={0};
	GetValue(szResult,"CurrentByteDeliveryRate",value,3,"\n",1);
	sprintf(szRet, "%sDeliveredMailRate=%s$", szRet, value);

	//CurrentByteTransferRate
	memset(value,0,64);
	GetValue(szResult,"CurrentByteTransferRate",value,3,"\n",1);
	sprintf(szRet, "%sTaskMailTransferRate=%s$", szRet, value);

	//CurrentMessageDeliveryRate
	memset(value,0,64);
	GetValue(szResult,"CurrentMessageDeliveryRate",value,3,"\n",1);
	sprintf(szRet, "%sRoutedMailRate=%s$", szRet, value);

	//Dead
	memset(value,0,64);
	GetValue(szResult,"Dead",value,3,"\n",1);
	sprintf(szRet, "%sDeadmailRate=%s$", szRet, value);

	//TotalPending
	memset(value,0,64);
	GetValue(szResult,"TotalPending",value,3,"\n",1);
	sprintf(szRet, "%sTotalPending=%s$", szRet, value);

	//Waiting
	memset(value,0,64);
	GetValue(szResult,"Waiting",value,3,"\n",1);
	sprintf(szRet, "%sWaitingMail=%s$", szRet, value);

	//WaitingRecipients
	memset(value,0,64);
	GetValue(szResult,"WaitingRecipients",value,3,"\n",1);
	sprintf(szRet, "%sWaitingRecipients=%s$", szRet, value);

	CString strInput =szRet;
	nSize = 4096;
	MakeCharByString(szRet,nSize,strInput);
	
	return TRUE;
}
Пример #4
0
extern "C" _declspec (dllexport) BOOL Task(const char * strParas, char * szRet, int& nSize)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	
	CString strServerName=_T("");
	CString strUserAccount=_T("");
	CString strPassWord=_T("");

	CStringList lstParas;
	MakeStringListByChar(lstParas,strParas);

	strServerName = GetValueFromList("_ServerName",lstParas);
	strUserAccount = GetValueFromList("_UserAccount",lstParas);	
	strPassWord = GetValueFromList("_PassWord",lstParas);

	char szResult[1024*10]={0};
	char szServer[1024]={0};
	strcpy(szServer,strServerName);
	
	HANDLE hhandle =CreateMutex(NULL,FALSE,"Global\\SiteView-Lotus-Montior");
	if(hhandle ==NULL)
	{
		DWORD nlast;
		nlast =GetLastError();
		sprintf(szRet,"error=CreateMutex Failed code is %d", nlast);
		nSize = static_cast<int>(strlen(szRet));
		return FALSE;
	}
	WaitForSingleObject(hhandle,INFINITE);
	
	WritePassword(strPassWord);

	STATUS nStatus=NF_Command(szServer,"show stat server",szResult);
	if(nStatus != NOERROR)
	{
		sprintf(szRet,"error=%s", szResult);
		nSize = static_cast<int>(strlen(szRet));
		ReleaseMutex(hhandle);
		CloseHandle(hhandle);
		return FALSE;
	}

	//Task count
	char value[64]={0};
	GetValue(szResult,"Tasks",value,3,"\n",1);
	sprintf(szRet, "%sTaskCount=%s$", szRet, value);

	//TransPerMinute
	memset(value,0,64);
	GetValue(szResult,"Server.Trans.PerMinute",value,3,"\n",1);
	sprintf(szRet, "%sTransPerMinute=%s$", szRet, value);

	//UsersPeak
	memset(value,0,64);
	GetValue(szResult,"Server.Users.Peak",value,3,"\n",1);
	sprintf(szRet, "%sUsersPeak=%s$", szRet, value);
	
	memset(szResult, 0, 1024*10);
	nStatus=NF_Command(szServer,"show tasks",szResult);
	if(nStatus != NOERROR)
	{
		sprintf(szRet,"error=%s", szResult);
		nSize = static_cast<int>(strlen(szRet));
		ReleaseMutex(hhandle);
		CloseHandle(hhandle);
		return FALSE;
	}

	ReleaseMutex(hhandle);
	CloseHandle(hhandle);

	memset(value,0,64);
	GetValue(szResult,"Router",value,3,"\n",1);
	sprintf(szRet, "%sRouterStatus=%s$", szRet, value);

	memset(value,0,64);
	GetValue(szResult,"Replicator",value,3,"\n",1);
	sprintf(szRet, "%sRepicatorStatus=%s$", szRet, value);

	memset(value,0,64);
	GetValue(szResult,"Event Monitor",value,3,"\n",1);
	sprintf(szRet, "%sEventStatus=%s$", szRet, value);

	CString strInput =szRet;
	nSize = 4096;
	MakeCharByString(szRet,nSize,strInput);
	
	return TRUE;
}
Пример #5
0
extern "C" _declspec (dllexport) BOOL Disk(const char * strParas, char * szRet, int& nSize)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());
	
	CString strServerName=_T("");
	CString strUserAccount=_T("");
	CString strPassWord=_T("");

	CStringList lstParas;
	MakeStringListByChar(lstParas,strParas);

	strServerName = GetValueFromList("_ServerName",lstParas);
	strUserAccount = GetValueFromList("_UserAccount",lstParas);	
	strPassWord = GetValueFromList("_PassWord",lstParas);

	char szResult[1024*10]={0};
	char szServer[1024]={0};
	strcpy(szServer,strServerName);
	
	HANDLE hhandle =CreateMutex(NULL,FALSE,"Global\\SiteView-Lotus-Montior");
	if(hhandle ==NULL)
	{
		DWORD nlast;
		nlast =GetLastError();
		sprintf(szRet,"error=CreateMutex Failed code is %d ", nlast);
		nSize = static_cast<int>(strlen(szRet));
		return FALSE;
	}
	WaitForSingleObject(hhandle,INFINITE);
	
	WritePassword(strPassWord);

	//得到磁盘 
	STATUS nStatus = NF_Command(szServer,"show stat disk",szResult);

	ReleaseMutex(hhandle);
	CloseHandle(hhandle);

	if(nStatus != NOERROR)
	{
		sprintf(szRet,"error=%s", szResult);
		nSize = static_cast<int>(strlen(szRet));
		return FALSE;
	}
	
	//Free
	char value[64]={0};
	GetValue(szResult,"Free",value,3,"\n",1);
	CutFlag(value,',');
	double dValue  = atof(value)/1024/1024;
	sprintf(szRet, "%sFreeDisks=%.2f$", szRet,dValue);
	
	//Size
	memset(value,0,64);
	GetValue(szResult,"Size",value,3,"\n",1);
	CutFlag(value,',');
	dValue  = atof(value)/1024/1024;
	sprintf(szRet, "%sSizeDisks=%.2f$", szRet,dValue);
	
	//Type
	memset(value,0,64);
	GetValue(szResult,"Type",value,3,"\n",1);
	sprintf(szRet, "%sTypeDisks=%s$", szRet, value);

	//Fixed
	memset(value,0,64);
	GetValue(szResult,"Fixed",value,3,"\n",1);
	sprintf(szRet, "%sFixedDisks=%s$", szRet, value);

	//Remote
	memset(value,0,64);
	GetValue(szResult,"Fixed",value,3,"\n",1);
	sprintf(szRet, "%sRemoteDisks=%s$", szRet, value);

	CString strInput =szRet;
	nSize = 4096;
	MakeCharByString(szRet,nSize,strInput);
	
	return TRUE;
}
Пример #6
0
BOOL MySqlMem(const char * strParas, char * szReturn, int& nSize)
{
	CString strReturn = "",
			strHost = _T(""), 
			strUser = _T(""), //UserName
			strPwd = _T("");// Password

	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(__WINUSERACCOUNT__, 0) == 0)
		{//Get Username
			strUser = strTemp.Right(strTemp.GetLength() - (int)strlen(__WINUSERACCOUNT__));
		}
        else if(strTemp.Find(__WINPASSWORD__, 0) == 0)
		{//Get password
			strPwd = strTemp.Right(strTemp.GetLength() - (int)strlen(__WINPASSWORD__));
		}
    }

	//ofstream fout("mysqltest.txt",ios::app);
	//fout << strHost<< ","<<strUser<< ","<<strPwd<< ","<<"\r\n"; 
	//fout << flush;
	//fout.close(); 
	CoInitialize(NULL);

	try 
	{ 
		WbemScripting::ISWbemLocatorPtr locator; 
		locator.CreateInstance(WbemScripting::CLSID_SWbemLocator);
		
		if (locator != NULL) 
		{ 
			WbemScripting::ISWbemServicesPtr services;
			if(IsLocalHost(strHost))
				services = locator->ConnectServer(".","root\\cimv2","","","","",0,NULL);
			else
				services = locator->ConnectServer((_bstr_t)strHost,"root\\cimv2",(_bstr_t)strUser,(_bstr_t)strPwd,"","",0,NULL);

			WbemScripting::ISWbemObjectSetPtr objects = services->InstancesOf("Win32_LogicalMemoryConfiguration", 0x10, NULL);
			IEnumVARIANTPtr obj_enum = objects->Get_NewEnum(); 
			ULONG fetched; 
			VARIANT var; 
			int nTotalPhyMem, nTotalVirMem;
			while (obj_enum->Next(1,&var,&fetched) == S_OK) 
			{ 
				WbemScripting::ISWbemObjectPtr object = var;
				WbemScripting::ISWbemPropertySetPtr properties = object->Properties_;
				WbemScripting::ISWbemPropertyPtr prop = properties->Item("TotalPhysicalMemory",0);
				_variant_t value = prop->GetValue();
				nTotalPhyMem = (int)value;
				prop = properties->Item("TotalVirtualMemory",0);
				value = prop->GetValue();
				nTotalVirMem = (int)value;
			} 

			_bstr_t com; 
			com="SELECT * FROM Win32_PerfRawData_PerfProc_Process WHERE NAME='mysqld-nt' or NAME='mysqld'"; 
			objects = services->ExecQuery(com,"WQL",0x10,NULL); 
			obj_enum = objects->Get_NewEnum(); 
			while (obj_enum->Next(1,&var,&fetched) == S_OK) 
			{ 
				WbemScripting::ISWbemObjectPtr object = var;
				WbemScripting::ISWbemPropertySetPtr properties = object->Properties_;
				WbemScripting::ISWbemPropertyPtr prop = properties->Item("WorkingSet",0);
				_variant_t value = prop->GetValue();
				int nPhyMem = (int)value/1024;
				prop = properties->Item("PrivateBytes",0);
				value = prop->GetValue();
				int nVirMem = (int)value/1024;
				float fMySqlPhyMemUsage, fMySqlVirMemUsage;
				fMySqlPhyMemUsage = (float)nPhyMem/(float)nTotalPhyMem*100;
				fMySqlVirMemUsage = (float)nVirMem/(float)nTotalVirMem*100;
				strReturn.Format("MySqlPhyMem=%d$MySqlVirMem=%d$MySqlPhyMemUsage=%.2f$MySqlVirMemUsage=%.2f$TotalPhyMem=%d$TotalVirMem=%d$", 
					nPhyMem, nVirMem, fMySqlPhyMemUsage, fMySqlVirMemUsage, nTotalPhyMem, nTotalVirMem);
			} 
			if(strReturn == "")
			{
				sprintf(szReturn, "error=MySql is not run on this server!");
				return FALSE;
			}
		} 
	} 
	catch (_com_error err) 
	{ 
		char buf[200] = {0};
		IErrorInfo * ei = err.ErrorInfo();
		BSTR strDesEI;
		ei->GetDescription(&strDesEI);
		sprintf(szReturn, "error=Error ocured:%x: %s", (unsigned)err.Error(),_com_util::ConvertBSTRToString(strDesEI));
		return FALSE;
	} 
	catch(...) 
	{ 
		sprintf(szReturn, "error=Error ocured: %d",::GetLastError());
		return FALSE;
	} 
	
	strcpy(szReturn,strReturn);
	CString strOutRet;
	strOutRet =szReturn;
	nSize = 2048;
	MakeCharByString(szReturn,nSize,strOutRet);	 
	
	CoUninitialize();

	return TRUE;
}
Пример #7
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;
}
Пример #8
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;
}
Пример #9
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;	
}
Пример #10
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;	
}
Пример #11
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;
}