Added: HttpProxy parameter for setting proxies on stream urls.
authorBas Rieter <basrieter@gmail.com>
Tue, 19 Nov 2013 11:54:35 +0000 (12:54 +0100)
committerBas Rieter <basrieter@gmail.com>
Tue, 19 Nov 2013 22:52:41 +0000 (23:52 +0100)
xbmc/filesystem/CurlFile.cpp
xbmc/filesystem/CurlFile.h

index 2197c44..aee94c4 100644 (file)
@@ -772,6 +772,8 @@ void CCurlFile::ParseAndCorrectUrl(CURL &url2)
           m_seekable = false;
         else if (name.Equals("Accept-Charset"))
           SetAcceptCharset(value);
+        else if (name.Equals("HttpProxy"))
+          SetStreamProxy(value, PROXY_HTTP);
         else
           SetRequestHeader(name, value);
       }
@@ -784,6 +786,17 @@ void CCurlFile::ParseAndCorrectUrl(CURL &url2)
     m_url = url2.Get();
 }
 
+void CCurlFile::SetStreamProxy(const CStdString &proxy, ProxyType type)
+{
+  CURL url(proxy);
+  m_proxy = url.GetWithoutUserDetails();
+  m_proxyuserpass = url.GetUserName();
+  if (!url.GetPassWord().empty())
+    m_proxyuserpass += ":" + url.GetPassWord();
+  m_proxytype = type;
+  CLog::Log(LOGDEBUG, "Overriding proxy from URL parameter: %s, type %d", m_proxy.c_str(), proxyType2CUrlProxyType[m_proxytype]);
+}
+
 bool CCurlFile::Post(const CStdString& strURL, const CStdString& strPostData, CStdString& strHTML)
 {
   m_postdata = strPostData;
index e16c255..ead7662 100644 (file)
@@ -74,6 +74,7 @@ namespace XFILE
       void SetProxy(CStdString &proxy)                           { m_proxy = proxy; }
       void SetProxyUserPass(CStdString &proxyuserpass)           { m_proxyuserpass = proxyuserpass; }
       void SetProxyType(ProxyType proxytype)                     { m_proxytype = proxytype; }
+      void SetStreamProxy(const CStdString &proxy, ProxyType type);
       void SetCustomRequest(CStdString &request)                 { m_customrequest = request; }
       void UseOldHttpVersion(bool bUse)                          { m_useOldHttpVersion = bUse; }
       void SetContentEncoding(CStdString encoding)               { m_contentencoding = encoding; }