[vlc-devel] commit: If http-use-IE-proxy is enable, use Internet Explorer entered HTTP proxy server configuration for all URL. Don't take into account bypasses settings and auto configuration scripts. (Adrien Maglo )

git version control git at videolan.org
Mon Nov 16 20:14:20 CET 2009


vlc | branch: master | Adrien Maglo <magsoft at videolan.org> | Fri Aug 28 15:03:09 2009 +0200| [240be4940bba265c0128e5dfe3ebc2381bcabb5a] | committer: Rémi Duraffort 

If http-use-IE-proxy is enable, use Internet Explorer entered HTTP proxy server configuration for all URL. Don't take into account bypasses settings and auto configuration scripts.

Signed-off-by: Rémi Duraffort <ivoire at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=240be4940bba265c0128e5dfe3ebc2381bcabb5a
---

 modules/access/http.c |   76 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 76 insertions(+), 0 deletions(-)

diff --git a/modules/access/http.c b/modules/access/http.c
index 4fac39c..37543f7 100644
--- a/modules/access/http.c
+++ b/modules/access/http.c
@@ -57,6 +57,11 @@
 #ifdef HAVE_LIBPROXY
 #    include <proxy.h>
 #endif
+
+#ifdef WIN32
+#   include <Windows.h>
+#endif
+
 /*****************************************************************************
  * Module descriptor
  *****************************************************************************/
@@ -99,6 +104,11 @@ static void Close( vlc_object_t * );
 #define MAX_REDIRECT_TEXT N_("Max number of redirection")
 #define MAX_REDIRECT_LONGTEXT N_("Limit the number of redirection to follow.")
 
+#define USE_IE_PROXY_TEXT N_("Use Internet Explorer entered HTTP proxy server")
+#define USE_IE_PROXY_LONGTEXT N_("Use Internet Explorer entered HTTP proxy " \
+    "server for all URL. Don't take into account bypasses settings and auto " \
+    "configuration scripts.")
+
 vlc_module_begin ()
     set_description( N_("HTTP input") )
     set_capability( "access", 0 )
@@ -125,6 +135,10 @@ vlc_module_begin ()
               FORWARD_COOKIES_LONGTEXT, true )
     add_integer( "http-max-redirect", 5, NULL, MAX_REDIRECT_TEXT,
                  MAX_REDIRECT_LONGTEXT, true )
+#ifdef WIN32
+    add_bool( "http-use-IE-proxy", false, NULL, USE_IE_PROXY_TEXT,
+              USE_IE_PROXY_LONGTEXT, true )
+#endif
     add_obsolete_string("http-user")
     add_obsolete_string("http-pwd")
     add_shortcut( "http" )
@@ -371,6 +385,67 @@ static int OpenWithCookies( vlc_object_t *p_this, const char *psz_access,
             msg_Err(p_access, "Allocating memory for libproxy failed");
         }
     }
+#elif defined( WIN32 )
+    else
+    {
+        if( var_CreateGetBool( p_access, "http-use-IE-proxy" ) )
+        {
+            /* Try to get the proxy server address from Windows internet settings using registry. */
+            HKEY h_key;
+            /* Open the key */
+            if( RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Microsoft" \
+                              "\\Windows\\CurrentVersion\\Internet Settings",
+                              0, KEY_READ, &h_key ) == ERROR_SUCCESS )
+            {
+                DWORD i_dataReadSize = 4; /* sizeof( DWORD ); */
+                DWORD proxyEnable = 0;
+                /* Get the proxy enable value */
+                if( RegQueryValueEx( h_key, "ProxyEnable", NULL, NULL,
+                                     (char *)&proxyEnable, &i_dataReadSize )
+                                     == ERROR_SUCCESS )
+                {
+                    if( proxyEnable )
+                    {
+                        /* Proxy is enable */
+                        char psz_key[256];
+                        i_dataReadSize = 256;
+                        if( RegQueryValueEx( h_key, "ProxyServer",
+                                             NULL, NULL, psz_key,
+                                             &i_dataReadSize )
+                                             == ERROR_SUCCESS )
+                        {
+                            /* Get the proxy URL :
+                            Proxy server value in the registry can be something like "address:port"
+                            or "ftp=adress1:port1;http=adress2:port2 ..." depending of the
+                            confirguration. */
+                            char *psz_proxy;
+                            psz_proxy = strstr( psz_key, "http=" );
+                            if( psz_proxy != NULL )
+                            {
+                                psz_proxy += strlen( "http=" );
+                                char *psz_endUrl = strchr( psz_proxy, ';' );
+                                if( psz_endUrl != NULL )
+                                    *psz_endUrl = '\0';
+                            }
+                            else
+                                psz_proxy = psz_key;
+                            /* Set proxy enable for this connection. */
+                            p_sys->b_proxy = true;
+                            vlc_UrlParse( &p_sys->proxy, psz_proxy, 0 );
+                        }
+                        msg_Warn( p_access, "Couldn't read in registry " \
+                                  "the proxy server address." );
+                    }
+                }
+                else
+                    msg_Warn( p_access, "Couldn't read in registry if the " \
+                              "proxy is enable or not." );
+            }
+            else
+                msg_Warn( p_access, "Couldn't open internet settings key " \
+                          "in registry." );
+        }
+    }
 #elif HAVE_GETENV
     else
     {
@@ -382,6 +457,7 @@ static int OpenWithCookies( vlc_object_t *p_this, const char *psz_access,
         }
     }
 #endif
+
     if( psz ) /* No, this is NOT a use-after-free error */
     {
         psz = var_CreateGetNonEmptyString( p_access, "http-proxy-pwd" );




More information about the vlc-devel mailing list