diff --git a/README.md b/README.md index b68f197..8cf10a7 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,6 @@ ibrowse is a HTTP client written in erlang. * Asynchronous requests. Responses are streamed to a process * Basic authentication * Supports proxy authentication -* Supports socks5 * Can talk to secure webservers using SSL * *Any other features in the code not listed here :)* @@ -280,17 +279,3 @@ support this. Nor did www.google.com. But good old BBC supports this: {"Via","1.1 hatproxy01 (NetCache NetApp/5.6.2)"}], "TRACE / HTTP/1.1\r\nHost: www.bbc.co.uk\r\nConnection: keep-alive\r\nX-Forwarded-For: 172.24.28.29\r\nVia: 1.1 hatproxy01 (NetCache NetApp/5.6.2)\r\nCookie: BBC-UID=7452e...\r\n\r\n"} ``` - -A `GET` using a socks5: - -```erlang -ibrowse:send_req("http://google.com", [], get, [], - [{socks5_host, "127.0.0.1"}, - {socks5_port, 5335}]). - -ibrowse:send_req("http://google.com", [], get, [], - [{socks5_host, "127.0.0.1"}, - {socks5_port, 5335}, - {socks5_user, "user4321"}, - {socks5_pass, "pass7654"}]). -``` diff --git a/src/ibrowse_http_client.erl b/src/ibrowse_http_client.erl index eef8b9f..822deb8 100644 --- a/src/ibrowse_http_client.erl +++ b/src/ibrowse_http_client.erl @@ -510,13 +510,7 @@ do_connect(Host, Port, Options, #state{is_ssl = true, Timeout) -> ssl:connect(Host, Port, get_sock_options(Host, Options, SSLOptions), Timeout); do_connect(Host, Port, Options, _State, Timeout) -> - Socks5Host = get_value(socks5_host, Options, undefined), - case Socks5Host of - undefined -> - gen_tcp:connect(Host, Port, get_sock_options(Host, Options, []), Timeout); - _ -> - catch ibrowse_socks5:connect(Host, Port, Options) - end. + gen_tcp:connect(Host, Port, get_sock_options(Host, Options, []), Timeout). get_sock_options(Host, Options, SSLOptions) -> Caller_socket_options = get_value(socket_options, Options, []), diff --git a/src/ibrowse_socks5.erl b/src/ibrowse_socks5.erl deleted file mode 100644 index 41d57f2..0000000 --- a/src/ibrowse_socks5.erl +++ /dev/null @@ -1,47 +0,0 @@ --module(ibrowse_socks5). - --export([connect/3]). - --define(TIMEOUT, 2000). - --define(SOCKS5, 5). --define(AUTH_METHOD_NO, 0). --define(AUTH_METHOD_USERPASS, 2). --define(ADDRESS_TYPE_IP4, 1). --define(COMMAND_TYPE_TCPIP_STREAM, 1). --define(RESERVER, 0). --define(STATUS_GRANTED, 0). - -connect(Host, Port, Options) -> - Socks5Host = proplists:get_value(socks5_host, Options), - Socks5Port = proplists:get_value(socks5_port, Options), - - {ok, Socket} = gen_tcp:connect(Socks5Host, Socks5Port, [binary, {packet, 0}, {keepalive, true}, {active, false}]), - - {ok, _Bin} = - case proplists:get_value(socks5_user, Options, undefined) of - undefined -> - ok = gen_tcp:send(Socket, <>), - {ok, <>} = gen_tcp:recv(Socket, 2, ?TIMEOUT); - _Else -> - Socks5User = list_to_binary(proplists:get_value(socks5_user, Options)), - Socks5Pass = list_to_binary(proplists:get_value(socks5_pass, Options)), - - ok = gen_tcp:send(Socket, <>), - {ok, <>} = gen_tcp:recv(Socket, 2, ?TIMEOUT), - - UserLength = byte_size(Socks5User), - - ok = gen_tcp:send(Socket, << 1, UserLength >>), - ok = gen_tcp:send(Socket, Socks5User), - PassLength = byte_size(Socks5Pass), - ok = gen_tcp:send(Socket, << PassLength >>), - ok = gen_tcp:send(Socket, Socks5Pass), - {ok, <<1, 0>>} = gen_tcp:recv(Socket, 2, ?TIMEOUT) - end, - - {ok, {IP1,IP2,IP3,IP4}} = inet:getaddr(Host, inet), - - ok = gen_tcp:send(Socket, <>), - {ok, << ?SOCKS5, ?STATUS_GRANTED, ?RESERVER, ?ADDRESS_TYPE_IP4, IP1, IP2, IP3, IP4, Port:16 >>} = gen_tcp:recv(Socket, 10, ?TIMEOUT), - {ok, Socket}.