Przeglądaj źródła

Revert "add socks5 support"

This reverts commit d8150feeaf.

Conflicts:
	.gitignore
	src/ibrowse_http_client.erl
	src/ibrowse_socks5.erl
pull/117/head
Robert Newson 11 lat temu
rodzic
commit
7009545c46
3 zmienionych plików z 1 dodań i 69 usunięć
  1. +0
    -15
      README.md
  2. +1
    -7
      src/ibrowse_http_client.erl
  3. +0
    -47
      src/ibrowse_socks5.erl

+ 0
- 15
README.md Wyświetl plik

@ -27,7 +27,6 @@ ibrowse is a HTTP client written in erlang.
* Asynchronous requests. Responses are streamed to a process * Asynchronous requests. Responses are streamed to a process
* Basic authentication * Basic authentication
* Supports proxy authentication * Supports proxy authentication
* Supports socks5
* Can talk to secure webservers using SSL * Can talk to secure webservers using SSL
* *Any other features in the code not listed here :)* * *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)"}], {"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"} "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"}]).
```

+ 1
- 7
src/ibrowse_http_client.erl Wyświetl plik

@ -510,13 +510,7 @@ do_connect(Host, Port, Options, #state{is_ssl = true,
Timeout) -> Timeout) ->
ssl:connect(Host, Port, get_sock_options(Host, Options, SSLOptions), Timeout); ssl:connect(Host, Port, get_sock_options(Host, Options, SSLOptions), Timeout);
do_connect(Host, Port, Options, _State, 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) -> get_sock_options(Host, Options, SSLOptions) ->
Caller_socket_options = get_value(socket_options, Options, []), Caller_socket_options = get_value(socket_options, Options, []),

+ 0
- 47
src/ibrowse_socks5.erl Wyświetl plik

@ -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, <<?SOCKS5, 1, ?AUTH_METHOD_NO>>),
{ok, <<?SOCKS5, ?AUTH_METHOD_NO>>} = 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, <<?SOCKS5, 1, ?AUTH_METHOD_USERPASS>>),
{ok, <<?SOCKS5, ?AUTH_METHOD_USERPASS>>} = 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, <<?SOCKS5, ?COMMAND_TYPE_TCPIP_STREAM, ?RESERVER, ?ADDRESS_TYPE_IP4, IP1, IP2, IP3, IP4, Port:16>>),
{ok, << ?SOCKS5, ?STATUS_GRANTED, ?RESERVER, ?ADDRESS_TYPE_IP4, IP1, IP2, IP3, IP4, Port:16 >>} = gen_tcp:recv(Socket, 10, ?TIMEOUT),
{ok, Socket}.

Ładowanie…
Anuluj
Zapisz