Implement SOCKS proxy feature
This commit is contained in:
40
client/proxy/ProxyManager.h
Normal file
40
client/proxy/ProxyManager.h
Normal file
@@ -0,0 +1,40 @@
|
||||
#pragma once
|
||||
#include "Manager.h"
|
||||
#include <map>
|
||||
|
||||
class CProxyManager : public CManager
|
||||
{
|
||||
public:
|
||||
BOOL m_bUse;
|
||||
CProxyManager(ISocketBase* pClient, int n = 0, void* user = nullptr);
|
||||
virtual ~CProxyManager();
|
||||
virtual void OnReceive(PBYTE lpBuffer, ULONG nSize);
|
||||
int Send(LPBYTE lpData, UINT nSize);
|
||||
void Disconnect(DWORD index);
|
||||
void SendConnectResult(LPBYTE lpBuffer, DWORD ip, USHORT port);
|
||||
static DWORD __stdcall SocksThread(LPVOID lparam);
|
||||
static DWORD __stdcall SocksThreadhostname(LPVOID lparam);
|
||||
DWORD m_nSend;
|
||||
std::map<DWORD, SOCKET*> list;
|
||||
SOCKET* GetSocket(DWORD index,BOOL del=FALSE);
|
||||
CRITICAL_SECTION m_cs;
|
||||
int Threads;
|
||||
void AddThread(int n = 1) {
|
||||
CAutoLock L(m_cs);
|
||||
Threads += n;
|
||||
}
|
||||
void Wait() {
|
||||
while (GetThread())
|
||||
Sleep(50);
|
||||
}
|
||||
int GetThread() {
|
||||
CAutoLock L(m_cs);
|
||||
return Threads;
|
||||
}
|
||||
};
|
||||
|
||||
struct SocksThreadArg {
|
||||
CProxyManager* pThis;
|
||||
LPBYTE lpBuffer;
|
||||
int len;
|
||||
};
|
||||
Reference in New Issue
Block a user