⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 caccess.cpp

📁 实现了拖盘
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	int Length;
	int l;
	bool r=PackageMake(pBuffer,5,&Length,MOD_ACCESS,MOD_RUNTIME,PKG_AcR255,ErrorStr,"");
    if(r==false)
	{
		Error=GetLastErrorStr();
		Error="CAccess::RuntimeWithAccess255:"+Error;
		pDoc->SetConnectInfo(Error);
		return -1;
	}
	l=m_pSrvSocket->SendData(pBuffer,Length);
	if(l!=Length)
	{
		LPVOID lpMsgBuf; //Windows will allocate 
		::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),
					  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言
						  (LPTSTR)&lpMsgBuf, 0, NULL );
		//显示
		Error=(LPTSTR)lpMsgBuf;
		Error="CAccess::RuntimeWithAccess255:"+Error;
		pDoc->SetConnectInfo(Error);
		//释放内存
		::LocalFree( lpMsgBuf );
		return -1;
	}
	return 0;
}

int CAccess::EntitlementWithAccess0()
{
	int PackageLength;
	char pBuffer[1024];
	CString Error;
	//对称加密并进行base64编码
	unsigned char SDBIkey[17]="!@#$%^&*()_+|<>?";
	DWORD OutLength=0;
	BYTE out[40];
	for(int i=0;i<40;i++)
		out[i]='\0';
	CString cookie=m_pCookie;
	SDBIEnc((BYTE*)m_pCookie,cookie.GetLength(),out,&OutLength,SDBIkey);
	char OutBase[40];
	for(i=0;i<40;i++)
		OutBase[i]='\0';
	Base64Encode(out, OutLength, OutBase);
	cookie=OutBase;
	delete m_pCookie;
	m_pCookie=new char[cookie.GetLength()+1];
	strcpy(m_pCookie,OutBase);
	//加密结束
	//打数据包
	if(!PackageMake(pBuffer,1024,&PackageLength,MOD_ACCESS,MOD_ENTITLEMENT,PKG_AcE0,m_pCookie,m_pUrl,""))
	{
		Error=GetLastErrorStr();
		Error="CAccess::EntitlementWithAccess0:"+Error;
		pDoc->SetConnectInfo(Error);
		return -1;
	}
	pBuffer[PackageLength]='\0';
	//建立连接
	m_pClientSocket=new CClientSocket(this,CAccess::ClientProcessPendingRead);
	int r=m_pClientSocket->BuildConnect(EntitlementPort,(LPCTSTR)EntitlementIP);
	if(r!=0)
	{
		pDoc->SetConnectInfo("CAccess::EntitlementWithAccess0:建立连接失败");
		FreeClientP();
		return -1;
	}
	//写日志信息
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="建立连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect++;
	ClientConnect++;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);
	//发送数据包
	r=m_pClientSocket->SendData(pBuffer,PackageLength);
	if(r!=PackageLength)
	{
		LPVOID lpMsgBuf; //Windows will allocate 
		::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),
					  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言
						  (LPTSTR)&lpMsgBuf, 0, NULL );
		//显示
		Error=(LPTSTR)lpMsgBuf;
		Error="CAccess::EntitlementWithAccess0:"+Error;
		pDoc->SetConnectInfo(Error);
		//释放内存
		::LocalFree( lpMsgBuf );
		FreeClientP();
		return -1;
	}
	//设立定时器
	BuildTimer();
	return 0;
}

int CAccess::EntitlementWithAccess1()
{
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	//释放指针m_pClientSocket
	FreeClientP();
	//销毁定时器
	StopTimer();
	//写日志信息
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="断开连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect--;
	ClientConnect--;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);
/*	//加密对称加密技术DES算法解密
	unsigned char des_key[8];
	CString DEFAULT_KEY="&@$+/;f`";
	for (int i=0;i<DEFAULT_KEY.GetLength();i++)
		des_key[i]=DEFAULT_KEY.GetAt(i);

	DES des;
	des.decrypt(des_key,(unsigned char*)m_pCookie,DEFAULT_KEY.GetLength()/8);

	//加密对称加密技术DES算法解密结束*/
	//对称解密并进行base64解码
	unsigned char SDBIkey[17]="!@#$%^&*()_+|<>?";
	DWORD OutLength=0;
	DWORD BaseLength=0;
	BYTE out[40];
	char OutBase[40];
	for(int i=0;i<40;i++)
		OutBase[i]=0;
	Base64Decode(m_pCookie, out, &OutLength);
	SDBIDec(out,OutLength,(BYTE*)OutBase,&BaseLength,SDBIkey);
	delete m_pCookie;
	m_pCookie=new char[BaseLength+1];
	strcpy(m_pCookie,OutBase);
	//解密结束
	CString role;
	role=m_pRole;
	CString filename;
	if(!(pDatabase->IfConnected()))
	{
		int c=pDatabase->ConnectDB(DbSource,DbUser,DbPass);
		if(c!=0)
		{
			((CMainFrame*)AfxGetMainWnd())->OnFileShutlisten();
			return -1;
		}
	}
	int r=pDatabase->GetRoleURL(m_pCookie,role,filename);
	if(r!=0)
	{
		m_ErrorCode=5;
		RuntimeWithAccess255();
		return -1;
	}
	m_pMenu=(char*)(LPCTSTR)(filename);
	RuntimeWithAccess5();
	return 0;
}

int CAccess::EntitlementWithAccess255()
{
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	//释放指针m_pClientSocket
	FreeClientP();
	//销毁定时器
	StopTimer();
	//写日志信息
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="断开连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect--;
	ClientConnect--;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);
	
	RuntimeWithAccess255();
	return 0;
}

int CAccess::AuthorityWithAccess0()
{
	char pBuffer[4096];
	for(int i=0;i<4096;i++)
		pBuffer[i]='\0';
	CString Error;
	int PackageLength;
	//封装数据包
	if(!PackageMake(pBuffer,4096,&PackageLength,MOD_ACCESS,MOD_AUTHORITY,PKG_AcAu0,\
		m_pLogInfo,""))
	{
		Error=GetLastErrorStr();
		Error="CAccess::AuthorityWithAccess0:"+Error;
		pDoc->SetConnectInfo(Error);
		return -1;
	}
	pBuffer[PackageLength]='\0';
	//建立连接
	m_pClientSocket=new CClientSocket(this,CAccess::ClientProcessPendingRead);
	int r=m_pClientSocket->BuildConnect(AuthorityPort,(LPCTSTR)AuthorityIP);
	if(r!=0)
	{
		pDoc->SetConnectInfo("CAccess::AuthorityWithAccess0:建立连接失败");
		FreeClientP();
		return -1;
	}
	//写日志信息
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="建立连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect++;
	ClientConnect++;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);
	//发送数据包
	r=m_pClientSocket->SendData(pBuffer,PackageLength);
	if(r!=PackageLength)
	{
		LPVOID lpMsgBuf; //Windows will allocate 
		::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),
					  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言
						  (LPTSTR)&lpMsgBuf, 0, NULL );
		//显示
		Error=(LPTSTR)lpMsgBuf;
		Error="CAccess::AuthorityWithAccess0:"+Error;
		pDoc->SetConnectInfo(Error);
		//释放内存
		::LocalFree( lpMsgBuf );
		FreeClientP();
		return -1;
	}
	//设立定时器
	BuildTimer();
	delete m_pLogInfo;
	m_pLogInfo=NULL;
	return 0;
}

int CAccess::AuthorityWithAccess1()
{
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	//释放指针m_pClientSocket
	FreeClientP();
	//销毁定时器
	StopTimer();
	//写日志信息
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="断开连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect--;
	ClientConnect--;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);
/*	//加密对称加密技术DES算法解密
	unsigned char des_key[8];
	CString DEFAULT_KEY="&@$+/;f`";
	for (int i=0;i<DEFAULT_KEY.GetLength();i++)
		des_key[i]=DEFAULT_KEY.GetAt(i);

	DES des;
	des.decrypt(des_key,(unsigned char*)m_pSid,DEFAULT_KEY.GetLength()/8);

	//加密对称加密技术DES算法解密结束
	MY_DB_MESSAGE sid;
	int r=pDatabase->GetUIDFromSID(m_pSid,&sid);
	if(r!=0)
	{
		m_ErrorCode=5;
		RuntimeWithAccess255();
		return -1;
	}
	m_uid=sid.iMessage;
	//加密对称加密技术DES算法加密
	des.decrypt(des_key,(unsigned char*)m_pSid,DEFAULT_KEY.GetLength()/8);

	//加密对称加密技术DES算法加密结束*/
	EntitlementWithAccess0();
	return 0;
}

int CAccess::AuthorityWithAccess255()
{
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	//释放指针m_pClientSocket
	FreeClientP();
	//销毁定时器
	StopTimer();
	//写日志信息
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="断开连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect--;
	ClientConnect--;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);

	RuntimeWithAccess255();
	return 0;
}

int CAccess::SessionMSWithAccess0()
{
	CString uid;
	uid.Format("%04d",m_uid);
	char pBuffer[9];
	pBuffer[8]='\0';
	int length;
	CString Error;
	int result;
	//封装数据包
	if(!PackageMake(pBuffer,8,&length,MOD_ACCESS,MOD_SESSIONMS,PKG_AcS0,uid.GetBuffer(8),""))
	{
		Error=GetLastErrorStr();
		Error="CAccess::SessionMSWithAccess0:"+Error;
		pDoc->SetConnectInfo(Error);
		return -1;
	}
	//建立连接
	m_pClientSocket=new CClientSocket(this,CAccess::ClientProcessPendingRead);
	result=m_pClientSocket->BuildConnect(SessionMSPort,(LPCTSTR)SessionMSIP);
	if(result!=0)
	{
		pDoc->SetConnectInfo("CAccess::SessionMSWithAccess0:建立连接失败");
		FreeClientP();
		return -1;
	}
	//写日志信息
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="建立连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect++;
	ClientConnect++;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);
	//发送数据
	result=m_pClientSocket->SendData(pBuffer,length);
	if(result!=length)
	{
		LPVOID lpMsgBuf; //Windows will allocate 
		::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),
					  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言
						  (LPTSTR)&lpMsgBuf, 0, NULL );
		//显示
		Error=(LPTSTR)lpMsgBuf;
		Error="CAccess::SessionMSWithAccess0:"+Error;
		pDoc->SetConnectInfo(Error);
		//释放内存
		::LocalFree( lpMsgBuf );
		FreeClientP();
		return -1;
	}
	BuildTimer();
	return 0;
}

int CAccess::SessionMSWithAccess1()
{
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	//释放指针m_pClientSocket
	FreeClientP();
	//销毁定时器
	StopTimer();
	//写日志信息
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="断开连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect--;
	ClientConnect--;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);
	if(m_CreateSidTag==ACK)
	{
		//对称加密并进行base64编码
		unsigned char SDBIkey[17]="!@#$%^&*()_+|<>?";
		DWORD OutLength=0;
		BYTE out[40];
		CString sid=m_pSid;
		SDBIEnc((BYTE*)m_pSid,sid.GetLength(),out,&OutLength,SDBIkey);
		char OutBase[40];
		for(int i=0;i<40;i++)
			OutBase[i]='\0';
		Base64Encode(out, OutLength, OutBase);
		sid=OutBase;
		delete m_pSid;
		m_pSid=new char[sid.GetLength()+1];
		strcpy(m_pSid,OutBase);
		//加密结束
	}
	RuntimeWithAccess3();
	return 0;
}

int CAccess::SessionMSWithAccess2()
{
	char pBuffer[23];
	pBuffer[22]='\0';
	CString Error;
	int length;
	//封装数据包
	if(!PackageMake(pBuffer,22,&length,MOD_ACCESS,MOD_SESSIONMS,PKG_AcS2,m_pCookie,""))
	{
		Error=GetLastErrorStr();
		Error="CAccess::SessionMSWithAccess2:"+Error;
		pDoc->SetConnectInfo(Error);
		return -1;
	}
	//建立连接
	m_pClientSocket=new CClientSocket(this,CAccess::ClientProcessPendingRead);
	int r=m_pClientSocket->BuildConnect(SessionMSPort,(LPCTSTR)SessionMSIP);
	if(r!=0)
	{
		pDoc->SetConnectInfo("CAccess::SessionMSWithAccess2:建立连接失败");
		FreeClientP();
		return -1;
	}
	//写日志信息
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="建立连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect++;
	ClientConnect++;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);
	//发送数据
	r=m_pClientSocket->SendData(pBuffer,length);
	if(r!=length)
	{
		LPVOID lpMsgBuf; //Windows will allocate 
		::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),
					  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), //默认语言
						  (LPTSTR)&lpMsgBuf, 0, NULL );
		//显示
		Error=(LPTSTR)lpMsgBuf;
		Error="CAccess::SessionMSWithAccess2:"+Error;
		pDoc->SetConnectInfo(Error);
		//释放内存
		::LocalFree( lpMsgBuf );
		FreeClientP();
		return -1;
	}
	BuildTimer();
	return 0;
}

int CAccess::SessionMSWithAccess3()
{
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	//释放指针m_pClientSocket
	FreeClientP();
	//销毁定时器
	StopTimer();
	//写日志信息
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="断开连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect--;
	ClientConnect--;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);
	RuntimeWithAccess7();
	return 0;
}


int CAccess::SessionMSWithAccess255()
{
	CString PeerIP;
	UINT PeerPort;
	m_pClientSocket->GetPeerAdd(PeerIP,PeerPort);
	//释放指针m_pClientSocket
	FreeClientP();
	//销毁定时器
	StopTimer();
	//写日志信息
	CString add="Access与"+PeerIP;
	add+=":";
	CString port;
	port.Format("%d",PeerPort);
	add+=port;
	add+="断开连接";
	pDoc->SetConnectInfo(add);
	//写状态条
	ActiveConnect--;
	ClientConnect--;
	pMainFrame->DisplayConInfo(ActiveConnect,ClientConnect,ServerConnect);

	RuntimeWithAccess255();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -