patch from bluezery finishing socks env variable pickup from ecore_con_socks.c

SVN revision: 68650
This commit is contained in:
Mike Blumenkrantz 2012-03-03 19:49:19 +00:00
parent d010e69fe1
commit 8235a2b7df
1 changed files with 43 additions and 18 deletions

View File

@ -151,6 +151,8 @@ ecore_con_url_pipeline_get(void)
return EINA_FALSE; return EINA_FALSE;
} }
extern Ecore_Con_Socks *_ecore_con_proxy_global;
EAPI Ecore_Con_Url * EAPI Ecore_Con_Url *
ecore_con_url_new(const char *url) ecore_con_url_new(const char *url)
{ {
@ -182,22 +184,41 @@ ecore_con_url_new(const char *url)
return NULL; return NULL;
} }
// Read socks proxy
url_con->proxy_type = -1; url_con->proxy_type = -1;
if (_ecore_con_proxy_global) if (_ecore_con_proxy_global && _ecore_con_proxy_global->ip &&
(_ecore_con_proxy_global->version == 4 ||
_ecore_con_proxy_global->version == 5))
{ {
if (_ecore_con_proxy_global->ip) char proxy[256];
char host[256];
if (_ecore_con_proxy_global->version == 5)
{ {
char host[128]; if (_ecore_con_proxy_global->lookup)
if (_ecore_con_proxy_global->port > 0 && snprintf(host, sizeof(host), "socks5h://%s",
_ecore_con_proxy_global->port <= 65535) _ecore_con_proxy_global->ip);
snprintf(host, sizeof(host), "socks4://%s:%d", else snprintf(host, sizeof(host), "socks5://%s",
_ecore_con_proxy_global->ip, _ecore_con_proxy_global->ip);
_ecore_con_proxy_global->port);
else
snprintf(host, sizeof(host), "socks4://%s",
_ecore_con_proxy_global->ip);
ecore_con_url_proxy_set(url_con, host);
} }
else if (_ecore_con_proxy_global->version == 4)
{
if (_ecore_con_proxy_global->lookup)
snprintf(host, sizeof(host), "socks4a://%s",
_ecore_con_proxy_global->ip);
else snprintf(host, sizeof(host), "socks4://%s",
_ecore_con_proxy_global->ip);
}
if (_ecore_con_proxy_global->port > 0 &&
_ecore_con_proxy_global->port <= 65535)
snprintf(proxy, sizeof(proxy), "%s:%d", host,
_ecore_con_proxy_global->port);
else snprintf(proxy, sizeof(proxy), "%s", host);
ecore_con_url_proxy_set(url_con, proxy);
ecore_con_url_proxy_username_set(url_con,
_ecore_con_proxy_global->username);
} }
ret = curl_easy_setopt(url_con->curl_easy, CURLOPT_ENCODING, "gzip,deflate"); ret = curl_easy_setopt(url_con->curl_easy, CURLOPT_ENCODING, "gzip,deflate");
@ -1118,17 +1139,20 @@ ecore_con_url_proxy_set(Ecore_Con_Url *url_con, const char *proxy)
if (vers->version_num < 0x71507) if (vers->version_num < 0x71507)
{ {
url_con->proxy_type = CURLPROXY_HTTP; url_con->proxy_type = CURLPROXY_HTTP;
if (strstr(proxy, "socks4")) url_con->proxy_type = CURLPROXY_SOCKS4; if (strstr(proxy, "socks4a"))
else if (strstr(proxy, "socks4a"))
url_con->proxy_type = CURLPROXY_SOCKS4A; url_con->proxy_type = CURLPROXY_SOCKS4A;
else if (strstr(proxy, "socks5")) else if (strstr(proxy, "socks4"))
url_con->proxy_type = CURLPROXY_SOCKS5; url_con->proxy_type = CURLPROXY_SOCKS4;
else if (strstr(proxy, "socks5h")) else if (strstr(proxy, "socks5h"))
url_con->proxy_type = CURLPROXY_SOCKS5_HOSTNAME; url_con->proxy_type = CURLPROXY_SOCKS5_HOSTNAME;
res = curl_easy_setopt(url_con->curl_easy, CURLOPT_PROXYTYPE, url_con->proxy_type); else if (strstr(proxy, "socks5"))
url_con->proxy_type = CURLPROXY_SOCKS5;
res = curl_easy_setopt(url_con->curl_easy, CURLOPT_PROXYTYPE,
url_con->proxy_type);
if (res != CURLE_OK) if (res != CURLE_OK)
{ {
ERR("curl proxy type setting failed: %s", curl_easy_strerror(res)); ERR("curl proxy type setting failed: %s",
curl_easy_strerror(res));
url_con->proxy_type = -1; url_con->proxy_type = -1;
return EINA_FALSE; return EINA_FALSE;
} }
@ -1253,6 +1277,7 @@ _ecore_con_url_event_url_complete(Ecore_Con_Url *url_con, CURLMsg *curlmsg)
if (curlmsg && (curlmsg->data.result == CURLE_OK)) if (curlmsg && (curlmsg->data.result == CURLE_OK))
curl_easy_getinfo(curlmsg->easy_handle, CURLINFO_RESPONSE_CODE, &status); curl_easy_getinfo(curlmsg->easy_handle, CURLINFO_RESPONSE_CODE, &status);
else ERR("Curl message have errors: %d", curlmsg->data.result);
e->status = status; e->status = status;
e->url_con = url_con; e->url_con = url_con;