24typedef socket_struct SOCKET;
25typedef SOCKET *PSOCKET;
33#define SOCKS_SUCCESS (0)
34#define SOCKS_ERR_TIMEOUT (-500)
35#define SOCKS_BAD_ADR_TYPE (-501)
36#define SOCKS_CONN_ABORTED (-502)
37#define SOCKS_BAD_AUTH_TYPE (-503)
38#define SOCKS_BAD_UN_PW (-504)
39#define SOCKS_UN_TOO_LONG (-505)
40#define SOCKS_PW_TOO_LONG (-506)
41#define SOCKS_BAD_REPLY (-507)
42#define SOCKS_BAD_DOMAIN (-508)
43#define SOCKS_CMD_NOT_SUPPORTED (-509)
44#define SOCKS_BAD_PARAM (-510)
47#define SOCKS_TIMEOUT (10 * TICKS_PER_SECOND)
48#define SOCKS_MAX_UNAME_SIZE 255
49#define SOCKS_MAX_PASSWD_SIZE 255
87enum SocksReply :
unsigned char
90 eSocksReplyGeneral = 1,
91 eSocksReplyRuleset = 2,
92 eSocksReplyNetwork = 3,
94 eSocksReplyConRef = 5,
95 eSocksReplyTtlExp = 6,
96 eSocksReplyCmdNotSup = 7,
97 eSocksReplyAdrNotSup = 8,
107 void SetUsername(
const NBString& username ){ m_username = username; }
108 void SetPassword(
const NBString& password ){ m_password = password; }
109 void SetPort( uint16_t port ){ m_port = port; }
110 void SetAddressType(
SocksAdrType adrType ){ m_adrType = adrType; }
111 void SetAddress(
const NBString& adr ){ m_adr = adr; }
112 void SetAuthType(
SocksAuthType authType ){ m_authType = authType; }
114 void SetEnabled(
bool enable){ m_enable = enable; }
116 NBString& GetUsername(){
return m_username; }
117 NBString& GetPassword(){
return m_password; }
118 uint16_t GetPort(){
return m_port; }
120 NBString& GetAddress(){
return m_adr; }
123 bool IsEnabled(){
return m_enable; }
128 void ClearProxyValues();
141 int SocksConnect( PSOCKET socket, uint16_t localPort, uint32_t timeout,
const IPADDR &ifip,
int ifn );
152 int SendAuthAndProcessReply(
int tcpFd,
const IPADDR& adr,
int port );
162 int SocksProcessReply(
int tcpFd );
170 int SendAuthMethod(
int tcpFd );
178 int AuthWithUsrNmPw(
int tcpFd );
183 uint16_t m_port = 1080;
187 bool m_enable =
false;
190extern SocksProxy* gSocksProxy;
Used to hold and manipulate IPv4 and IPv6 addresses in dual stack mode.
Definition ipv6_addr.h:41
Lightweight alternative to C++ CString class.
Definition nbstring.h:118
SocksProxy * GetSocksProxySettings()
Get a pointer to the currnetly set Socks proxy settings object.
SocksAuthType
SOCKS Autherization Types.
Definition Socks.h:56
SocksClientCmd
SOCKS Client Commands.
Definition Socks.h:67
void SetSocksProxySettings(SocksProxy *socksProxy)
Set the system level SOCKS proxy settings object to the one that is passed in. If this object is set ...
SocksAdrType
SOCKS Address Types.
Definition Socks.h:77
bool AuthWithGssApi()
A weak function that should be overriden by the developer in order to support GSSAPI authorization.
Definition Socks/src/main.cpp:26
@ eSocksAuthTypeGssApi
GSS API.
Definition Socks.h:57
@ eSocksAuthTypeNoAuth
Not as defined in RFC so that it could be propery tested against when being set by user.
Definition Socks.h:59
@ eSocksAuthTypeUnPw
User name and password.
Definition Socks.h:58
@ eSocksClientCmdBind
Not currently supported, see RFC 1928.
Definition Socks.h:69
@ eSocksClientCmdUdpAssoc
Not currently supported, see RFC 1928.
Definition Socks.h:70
@ eSocksClientCmdConnect
Connect.
Definition Socks.h:68
@ eSocksAdrTypeNone
None.
Definition Socks.h:78
@ eSocksAdrTypeIpv4
IPv4.
Definition Socks.h:79
@ eSocksAdrTypeDomain
Domain.
Definition Socks.h:80
@ eSocksAdrTypeIpv6
IPv6.
Definition Socks.h:81