Re: http_proxy with username and password
Jonas Fonseca <[email protected]>
| Newsgroups | gmane.comp.web.links |
|---|---|
| Message-ID | <[email protected]> |
Simon Tan <[email protected]> wrote Fri, Nov 30, 2007: > I exported the http_proxy variable with username and password like so: > export HTTP_PROXY=http://username:password@host:port. Wget works, but > elinks is unable to get online. Is elinks not able to parse the > variable? If I enter the options and enter the proxy, username, > password, elinks works fine. I understand there might be security > concerns and stuff but if I save the password into a file(don't know > if it's encrypted or not), same security concerns right. > > It would still be a nice feature. Could that be implemented in future > versions? Thanks. Since this is elinks-dev, here is a patch that extracts the user and passwd from the HTTP_PROXY as an alternative to the options. It will then be added as a "Proxy-Authorization: Basic ..." header. Note, since I have no proxy server to test on I just tested it with some debug prints and an online open proxy to see if the header variable was set. diff --git a/src/protocol/http/http.c b/src/protocol/http/http.c index 26daefc..6a33580 100644 --- a/src/protocol/http/http.c +++ b/src/protocol/http/http.c @@ -630,7 +630,20 @@ http_send_header(struct socket *socket) unsigned char *user = get_opt_str("protocol.http.proxy.user", NULL); unsigned char *passwd = get_opt_str("protocol.http.proxy.passwd", NULL); - if (proxy_auth.digest) { + if (conn->uri->userlen) + user = memacpy(conn->uri->user, conn->uri->userlen); + else + user = stracpy(user); + + if (conn->uri->passwordlen) + passwd = memacpy(conn->uri->password, conn->uri->passwordlen); + else + passwd = stracpy(passwd); + + if (!passwd || !user) { + /* Failed to allocate! */ + + } else if (proxy_auth.digest) { unsigned char *response; int userlen = int_min(strlen(user), AUTH_USER_MAXLEN - 1); int passwordlen = int_min(strlen(passwd), AUTH_PASSWORD_MAXLEN - 1); @@ -671,6 +684,8 @@ http_send_header(struct socket *socket) } } } + mem_free_if(user); + mem_free_if(passwd); } /* CONNECT: User-Agent does not reveal anything about the -- Jonas Fonseca