aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Lichtenheld2024-01-22 10:21:22 +0100
committerGert Doering2024-01-22 12:24:14 +0100
commit1141e7505747dd6029ac7cf19b6c2de99a685ccc (patch)
treec456c0988bc371afa224b2670b00b22e4a982092
parent68b00a54e779325f4ac9d9416b4e85261f771c23 (diff)
downloadopenvpn-1141e7505747dd6029ac7cf19b6c2de99a685ccc.zip
openvpn-1141e7505747dd6029ac7cf19b6c2de99a685ccc.tar.gz
--http-proxy-user-pass: allow to specify in either order with --http-proxy
Previously, when using a third argument to --http-proxy other than auto/auto-nct, order did matter between --http-proxy and --http-proxy-user-pass. Always prefer --http-proxy-user-pass when given. Change-Id: I6f402db2fb73f1206fbc1139c47d2bf4378376fa Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com> Acked-by: Gert Doering <gert@greenie.muc.de> Message-Id: <20240122092122.8591-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg28099.html Signed-off-by: Gert Doering <gert@greenie.muc.de> (cherry picked from commit a634cc5eccd55f1d14197da7376bb819bdf72cb6)
-rw-r--r--src/openvpn/options.c4
-rw-r--r--src/openvpn/proxy.c7
-rw-r--r--src/openvpn/proxy.h3
3 files changed, 11 insertions, 3 deletions
diff --git a/src/openvpn/options.c b/src/openvpn/options.c
index 08dc94b..4d7e173 100644
--- a/src/openvpn/options.c
+++ b/src/openvpn/options.c
@@ -1651,6 +1651,8 @@ show_http_proxy_options(const struct http_proxy_options *o)
SHOW_STR(port);
SHOW_STR(auth_method_string);
SHOW_STR(auth_file);
+ SHOW_STR(auth_file_up);
+ SHOW_BOOL(inline_creds);
SHOW_STR(http_version);
SHOW_STR(user_agent);
for (i = 0; i < MAX_CUSTOM_HTTP_HEADER && o->custom_headers[i].name; i++)
@@ -6842,7 +6844,7 @@ add_option(struct options *options,
struct http_proxy_options *ho;
VERIFY_PERMISSION(OPT_P_GENERAL|OPT_P_INLINE);
ho = init_http_proxy_options_once(&options->ce.http_proxy_options, &options->gc);
- ho->auth_file = p[1];
+ ho->auth_file_up = p[1];
ho->inline_creds = is_inline;
}
else if (streq(p[0], "http-proxy-retry") || streq(p[0], "socks-proxy-retry"))
diff --git a/src/openvpn/proxy.c b/src/openvpn/proxy.c
index b2e8b3d..f1ad0df 100644
--- a/src/openvpn/proxy.c
+++ b/src/openvpn/proxy.c
@@ -271,6 +271,11 @@ get_user_pass_http(struct http_proxy_info *p, const bool force)
if (!static_proxy_user_pass.defined)
{
unsigned int flags = GET_USER_PASS_MANAGEMENT;
+ const char *auth_file = p->options.auth_file;
+ if (p->options.auth_file_up)
+ {
+ auth_file = p->options.auth_file_up;
+ }
if (p->queried_creds)
{
flags |= GET_USER_PASS_PREVIOUS_CREDS_FAILED;
@@ -280,7 +285,7 @@ get_user_pass_http(struct http_proxy_info *p, const bool force)
flags |= GET_USER_PASS_INLINE_CREDS;
}
get_user_pass(&static_proxy_user_pass,
- p->options.auth_file,
+ auth_file,
UP_TYPE_PROXY,
flags);
p->queried_creds = true;
diff --git a/src/openvpn/proxy.h b/src/openvpn/proxy.h
index 83b799e..d93f8c4 100644
--- a/src/openvpn/proxy.h
+++ b/src/openvpn/proxy.h
@@ -52,10 +52,11 @@ struct http_proxy_options {
const char *auth_method_string;
const char *auth_file;
+ const char *auth_file_up; /* specified with --http-proxy-user-pass */
const char *http_version;
const char *user_agent;
struct http_custom_header custom_headers[MAX_CUSTOM_HTTP_HEADER];
- bool inline_creds;
+ bool inline_creds; /* auth_file_up is inline credentials */
};
struct http_proxy_options_simple {