[vlc-commits] HTTP win32: use http-proxy options to setup the proxy
Jean-Baptiste Kempf
git at videolan.org
Mon Feb 5 19:21:21 CET 2018
vlc/vlc-3.0 | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Fri Feb 2 17:22:18 2018 +0100| [4867a39c36492aa9cc85f1fd115ff8e9e5965731] | committer: Jean-Baptiste Kempf
HTTP win32: use http-proxy options to setup the proxy
Because win32/netconf is not ready
(cherry picked from commit 6514ed051d579972f21949be3900a48d8d62c647)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=4867a39c36492aa9cc85f1fd115ff8e9e5965731
---
modules/access/http.c | 15 ---------------
src/libvlc-module.c | 22 ++++++++++++++++++++++
src/win32/netconf.c | 30 ++++++++++++++++++++++++++++--
3 files changed, 50 insertions(+), 17 deletions(-)
diff --git a/modules/access/http.c b/modules/access/http.c
index 8d050bdec6..f5b4eacbd1 100644
--- a/modules/access/http.c
+++ b/modules/access/http.c
@@ -56,16 +56,6 @@
static int Open ( vlc_object_t * );
static void Close( vlc_object_t * );
-#define PROXY_TEXT N_("HTTP proxy")
-#define PROXY_LONGTEXT N_( \
- "HTTP proxy to be used It must be of the form " \
- "http://[user@]myproxy.mydomain:myport/ ; " \
- "if empty, the http_proxy environment variable will be tried." )
-
-#define PROXY_PASS_TEXT N_("HTTP proxy password")
-#define PROXY_PASS_LONGTEXT N_( \
- "If your HTTP proxy requires a password, set it here." )
-
#define RECONNECT_TEXT N_("Auto re-connect")
#define RECONNECT_LONGTEXT N_( \
"Automatically try to reconnect to the stream in case of a sudden " \
@@ -78,11 +68,6 @@ vlc_module_begin ()
set_category( CAT_INPUT )
set_subcategory( SUBCAT_INPUT_ACCESS )
- add_string( "http-proxy", NULL, PROXY_TEXT, PROXY_LONGTEXT,
- false )
- add_password( "http-proxy-pwd", NULL,
- PROXY_PASS_TEXT, PROXY_PASS_LONGTEXT, false )
- add_obsolete_bool( "http-use-IE-proxy" )
add_bool( "http-reconnect", false, RECONNECT_TEXT,
RECONNECT_LONGTEXT, true )
/* 'itpc' = iTunes Podcast */
diff --git a/src/libvlc-module.c b/src/libvlc-module.c
index 9d29d24b4e..77ab8283ab 100644
--- a/src/libvlc-module.c
+++ b/src/libvlc-module.c
@@ -844,6 +844,16 @@ static const char *const ppsz_prefres[] = {
#define KEY_LONGTEXT N_( \
"This private key file (PEM format) is used for server-side TLS.")
+#define PROXY_TEXT N_("HTTP proxy")
+#define PROXY_LONGTEXT N_( \
+ "HTTP proxy to be used It must be of the form " \
+ "http://[user@]myproxy.mydomain:myport/ ; " \
+ "if empty, the http_proxy environment variable will be tried." )
+
+#define PROXY_PASS_TEXT N_("HTTP proxy password")
+#define PROXY_PASS_LONGTEXT N_( \
+ "If your HTTP proxy requires a password, set it here." )
+
#define SOCKS_SERVER_TEXT N_("SOCKS server")
#define SOCKS_SERVER_LONGTEXT N_( \
"SOCKS proxy server to use. This must be of the form " \
@@ -1802,6 +1812,18 @@ vlc_module_begin ()
add_obsolete_string( "http-crl" ) /* since 3.0.0 */
add_obsolete_string( "sout-http-crl" ) /* since 2.0.0 */
+#ifdef _WIN32
+ add_string( "http-proxy", NULL, PROXY_TEXT, PROXY_LONGTEXT,
+ false )
+ add_password( "http-proxy-pwd", NULL,
+ PROXY_PASS_TEXT, PROXY_PASS_LONGTEXT, false )
+#else
+ add_obsolete_string( "http-proxy" )
+ add_obsolete_string( "http-proxy-pwd" )
+
+#endif
+ add_obsolete_bool( "http-use-IE-proxy" )
+
set_section( N_( "Socks proxy") , NULL )
add_string( "socks", NULL,
SOCKS_SERVER_TEXT, SOCKS_SERVER_LONGTEXT, true )
diff --git a/src/win32/netconf.c b/src/win32/netconf.c
index accdddf2ce..3a6dcda1ea 100644
--- a/src/win32/netconf.c
+++ b/src/win32/netconf.c
@@ -27,10 +27,36 @@
#include <vlc_common.h>
#include <vlc_network.h>
+#include <vlc_url.h>
-char *vlc_getProxyUrl(const char *url)
+char *vlc_getProxyUrl(const char *psz_url)
{
- char *proxy_url = NULL;
+ VLC_UNUSED(psz_url);
+
+ char *proxy = config_GetPsz( (vlc_object_t *)(NULL), "http-proxy" );
+ if (proxy == NULL)
+ return NULL;
+
+ char *proxy_pwd = config_GetPsz( (vlc_object_t *)(NULL), "http-proxy-pwd" );
+ if (proxy_pwd == NULL)
+ return proxy;
+
+ vlc_url_t url;
+ if (vlc_UrlParse(&url, proxy) < 0) {
+ free (proxy);
+ free (proxy_pwd);
+ return NULL;
+ }
+
+ if (url.psz_password == NULL )
+ url.psz_password = vlc_uri_encode(proxy_pwd);
+
+ char *proxy_url = vlc_uri_compose (&url);
+ vlc_UrlClean (&url);
+
+ free (proxy_pwd);
+ free (proxy);
+
#if 0
/* Try to get the proxy server address from Windows internet settings. */
HKEY h_key;
More information about the vlc-commits
mailing list