summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Doane <jaydoane@apache.org>2021-06-17 22:18:27 -0700
committerJay Doane <jay.s.doane@gmail.com>2021-06-24 23:18:52 -0700
commit3675e5ecf71e2f749404c82012a4804d02894701 (patch)
treece9791ebda4086a09092c2478f2107ba9199c475
parent9337019c0b42134c48277eea8467cb870ad267aa (diff)
downloadcouchdb-3675e5ecf71e2f749404c82012a4804d02894701.tar.gz
Use correct socks5 proxy ibrowse options
With the move from using a forked ibrowse to upstream [1], the ibrowse options for socks5 proxy settings all changed to a `socks5_` prefix. [1] https://github.com/apache/couchdb/pull/3551
-rw-r--r--src/couch_replicator/src/couch_replicator_docs.erl37
1 files changed, 34 insertions, 3 deletions
diff --git a/src/couch_replicator/src/couch_replicator_docs.erl b/src/couch_replicator/src/couch_replicator_docs.erl
index cc2d33ae3..7c60e8a43 100644
--- a/src/couch_replicator/src/couch_replicator_docs.erl
+++ b/src/couch_replicator/src/couch_replicator_docs.erl
@@ -571,8 +571,7 @@ parse_proxy_params(ProxyUrl) ->
password = Passwd,
protocol = Protocol
} = ibrowse_lib:parse_url(ProxyUrl),
- [
- {proxy_protocol, Protocol},
+ Params = [
{proxy_host, Host},
{proxy_port, Port}
] ++ case is_list(User) andalso is_list(Passwd) of
@@ -580,7 +579,24 @@ parse_proxy_params(ProxyUrl) ->
[];
true ->
[{proxy_user, User}, {proxy_password, Passwd}]
- end.
+ end,
+ case Protocol of
+ socks5 ->
+ [proxy_to_socks5(Param) || Param <- Params];
+ _ ->
+ Params
+ end.
+
+
+-spec proxy_to_socks5({atom(), string()}) -> {atom(), string()}.
+proxy_to_socks5({proxy_host, Val}) ->
+ {socks5_host, Val};
+proxy_to_socks5({proxy_port, Val}) ->
+ {socks5_port, Val};
+proxy_to_socks5({proxy_user, Val}) ->
+ {socks5_user, Val};
+proxy_to_socks5({proxy_password, Val}) ->
+ {socks5_password, Val}.
-spec ssl_params([_]) -> [_].
@@ -790,6 +806,21 @@ check_strip_credentials_test() ->
]].
+parse_proxy_params_test() ->
+ ?assertEqual([
+ {proxy_host, "foo.com"},
+ {proxy_port, 443},
+ {proxy_user, "u"},
+ {proxy_password, "p"}
+ ], parse_proxy_params("https://u:p@foo.com")),
+ ?assertEqual([
+ {socks5_host, "foo.com"},
+ {socks5_port, 1080},
+ {socks5_user, "u"},
+ {socks5_password, "p"}
+ ], parse_proxy_params("socks5://u:p@foo.com")).
+
+
setup() ->
DbName = ?tempdb(),
{ok, Db} = couch_db:create(DbName, [?ADMIN_CTX]),