1 #ifndef PROXY_H 2 #define PROXY_H 3 4 #include "HTTP.h" 5 #include "Network.h" 6 7 #define PROXY_CONNECTION_TIMEOUT (4 * 1000) 8 9 #define PROXY_MAX_USERNAME_LEN 255 10 #define PROXY_MAX_PASSWORD_LEN 255 11 12 #define PROXY_ERROR_SUCCESS 0 13 #define PROXY_ERROR_GENERIC 1 14 #define PROXY_ERROR_PARAMETER 2 15 #define PROXY_ERROR_CANCELED 3 16 #define PROXY_ERROR_CONNECTION 4 17 #define PROXY_ERROR_DISCONNECTED 5 18 #define PROXY_ERROR_VERSION 6 19 #define PROXY_ERROR_AUTHENTICATION 7 20 #define PROXY_ERROR_TARGET 8 21 22 struct PROXY_PARAM_IN 23 { 24 char Hostname[MAX_HOST_NAME_LEN + 1]; 25 USHORT Port; 26 char TargetHostname[MAX_HOST_NAME_LEN + 1]; 27 USHORT TargetPort; 28 char Username[PROXY_MAX_USERNAME_LEN + 1]; 29 char Password[PROXY_MAX_PASSWORD_LEN + 1]; 30 UINT Timeout; 31 char HttpCustomHeader[HTTP_CUSTOM_HEADER_MAX_SIZE + 1]; 32 char HttpUserAgent[HTTP_HEADER_USER_AGENT_MAX_SIZE + 1]; 33 #ifdef OS_WIN32 34 void *Hwnd; 35 #endif 36 }; 37 38 struct PROXY_PARAM_OUT 39 { 40 SOCK *Sock; 41 IP ResolvedIp; 42 }; 43 44 UINT ProxyHttpConnect(PROXY_PARAM_OUT *out, PROXY_PARAM_IN *in, volatile bool *cancel_flag); 45 UINT ProxySocks5Connect(PROXY_PARAM_OUT *out, PROXY_PARAM_IN *in, volatile bool *cancel_flag); 46 UINT ProxySocks4Connect(PROXY_PARAM_OUT *out, PROXY_PARAM_IN *in, volatile bool *cancel_flag); 47 48 #endif 49