Browse Source

Simplifying interface for configuring proxy layer

Source commit: 2c0ccd46e4797935e248fcfcaa52b34bd39bcb5c
Martin Prikryl 9 years ago
parent
commit
dbeed2fa5e

+ 2 - 29
source/filezilla/AsyncProxySocketLayer.cpp

@@ -45,37 +45,10 @@ CAsyncProxySocketLayer::~CAsyncProxySocketLayer()
 /////////////////////////////////////////////////////////////////////////////
 // Member-Funktion CAsyncProxySocketLayer
 
-void CAsyncProxySocketLayer::SetProxy(int nProxyType, const char * pProxyHost, int ProxyPort)
+void CAsyncProxySocketLayer::SetProxy(int nProxyType, const char * pProxyHost, int ProxyPort, bool bUseLogon, const char * pProxyUser, const char * pProxyPass)
 {
   USES_CONVERSION;
   //Validate the parameters
-  DebugAssert(nProxyType==PROXYTYPE_SOCKS4  ||
-       nProxyType==PROXYTYPE_SOCKS4A ||
-       nProxyType==PROXYTYPE_SOCKS5  ||
-       nProxyType==PROXYTYPE_HTTP11);
-  DebugAssert(!m_nProxyOpID);
-  DebugAssert(pProxyHost && *pProxyHost);
-  DebugAssert(ProxyPort>0);
-  DebugAssert(ProxyPort<=65535);
-
-  delete m_ProxyData.pProxyHost;
-  delete m_ProxyData.pProxyUser;
-  delete m_ProxyData.pProxyPass;
-  m_ProxyData.pProxyUser = NULL;
-  m_ProxyData.pProxyPass = NULL;
-
-  m_ProxyData.nProxyType = nProxyType;
-  m_ProxyData.pProxyHost = new char[strlen(pProxyHost)+1];
-  strcpy(m_ProxyData.pProxyHost, pProxyHost);
-  m_ProxyData.nProxyPort = ProxyPort;
-  m_ProxyData.bUseLogon = FALSE;
-}
-
-void CAsyncProxySocketLayer::SetProxy(int nProxyType, const char * pProxyHost, int ProxyPort, const char * pProxyUser, const char * pProxyPass)
-{
-  USES_CONVERSION;
-  //Validate the parameters
-  DebugAssert(nProxyType==PROXYTYPE_SOCKS5 || nProxyType==PROXYTYPE_HTTP11);
   DebugAssert(!m_nProxyOpID);
   DebugAssert(pProxyHost && *pProxyHost);
   DebugAssert(ProxyPort>0);
@@ -101,7 +74,7 @@ void CAsyncProxySocketLayer::SetProxy(int nProxyType, const char * pProxyHost, i
     m_ProxyData.pProxyPass = new char[strlen(pProxyPass)+1];
     strcpy(m_ProxyData.pProxyPass, pProxyPass);
   }
-  m_ProxyData.bUseLogon = TRUE;
+  m_ProxyData.bUseLogon = bUseLogon;
 }
 
 void CAsyncProxySocketLayer::OnReceive(int nErrorCode)

+ 1 - 3
source/filezilla/AsyncProxySocketLayer.h

@@ -102,15 +102,13 @@ public:
   virtual BOOL Connect(const SOCKADDR * lpSockAddr, int nSockAddrLen);
   virtual BOOL Listen(int nConnectionBacklog);
 
-  void SetProxy(int nProxyType, const char * pProxyHost, int ProxyPort); // May not be PROXYTYPE_NOPROXY
-
   // Sets the proxy details.
   // nProxyType - Type of the proxy. May be PROXYTYPE_NONE, PROXYTYPE_SOCKS4, PROXYTYPE_SOCKS5 or PROXYTYPE_HTTP11
   // ProxyHost - The address of the proxy. Can be either IP or URL
   // ProxyPort - The port of the proxy
   // ProxyUser - the username for SOCKS5 proxies
   // ProxyPass - the password for SOCKS5 proxies
-  void SetProxy(int nProxyType, const char * pProxyHost, int ProxyPort, const char * pProxyUser, const char * pProxyPass); // Only SOCKS5 and HTTP1.1 proxies
+  void SetProxy(int nProxyType, const char * pProxyHost, int ProxyPort, bool bUseLogon, const char * pProxyUser, const char * pProxyPass);
 
   // Returns the address of the server behind the SOCKS proxy you are connected to
   virtual BOOL GetPeerName(CString & rPeerAddress, UINT & rPeerPort);

+ 3 - 23
source/filezilla/FtpControlSocket.cpp

@@ -402,29 +402,9 @@ bool CFtpControlSocket::InitConnect()
   if (nProxyType != PROXYTYPE_NOPROXY)
   {
     m_pProxyLayer = new CAsyncProxySocketLayer;
-    if (nProxyType == PROXYTYPE_SOCKS4)
-      m_pProxyLayer->SetProxy(PROXYTYPE_SOCKS4, T2CA(GetOption(OPTION_PROXYHOST)), GetOptionVal(OPTION_PROXYPORT));
-    else if (nProxyType==PROXYTYPE_SOCKS4A)
-      m_pProxyLayer->SetProxy(PROXYTYPE_SOCKS4A, T2CA(GetOption(OPTION_PROXYHOST)),GetOptionVal(OPTION_PROXYPORT));
-    else if (nProxyType==PROXYTYPE_SOCKS5)
-      if (GetOptionVal(OPTION_PROXYUSELOGON))
-        m_pProxyLayer->SetProxy(PROXYTYPE_SOCKS5, T2CA(GetOption(OPTION_PROXYHOST)),
-                    GetOptionVal(OPTION_PROXYPORT),
-                    T2CA(GetOption(OPTION_PROXYUSER)),
-                    T2CA(GetOption(OPTION_PROXYPASS)));
-      else
-        m_pProxyLayer->SetProxy(PROXYTYPE_SOCKS5, T2CA(GetOption(OPTION_PROXYHOST)),
-                    GetOptionVal(OPTION_PROXYPORT));
-    else if (nProxyType==PROXYTYPE_HTTP11)
-      if (GetOptionVal(OPTION_PROXYUSELOGON))
-        m_pProxyLayer->SetProxy(PROXYTYPE_HTTP11, T2CA(GetOption(OPTION_PROXYHOST)),
-                    GetOptionVal(OPTION_PROXYPORT),
-                    T2CA(GetOption(OPTION_PROXYUSER)),
-                    T2CA(GetOption(OPTION_PROXYPASS)));
-      else
-        m_pProxyLayer->SetProxy(PROXYTYPE_HTTP11, T2CA(GetOption(OPTION_PROXYHOST)) ,GetOptionVal(OPTION_PROXYPORT));
-    else
-      DebugFail();
+    m_pProxyLayer->SetProxy(
+      nProxyType, T2CA(GetOption(OPTION_PROXYHOST)), GetOptionVal(OPTION_PROXYPORT),
+      GetOptionVal(OPTION_PROXYUSELOGON), T2CA(GetOption(OPTION_PROXYUSER)), T2CA(GetOption(OPTION_PROXYPASS)));
     AddLayer(m_pProxyLayer);
   }
 

+ 3 - 23
source/filezilla/TransferSocket.cpp

@@ -863,30 +863,10 @@ BOOL CTransferSocket::Create(BOOL bUseSsl)
   if (nProxyType != PROXYTYPE_NOPROXY)
   {
     USES_CONVERSION;
-
     m_pProxyLayer = new CAsyncProxySocketLayer;
-    if (nProxyType == PROXYTYPE_SOCKS4)
-      m_pProxyLayer->SetProxy(PROXYTYPE_SOCKS4, T2CA(GetOption(OPTION_PROXYHOST)), GetOptionVal(OPTION_PROXYPORT));
-    else if (nProxyType == PROXYTYPE_SOCKS4A)
-      m_pProxyLayer->SetProxy(PROXYTYPE_SOCKS4A, T2CA(GetOption(OPTION_PROXYHOST)), GetOptionVal(OPTION_PROXYPORT));
-    else if (nProxyType == PROXYTYPE_SOCKS5)
-      if (GetOptionVal(OPTION_PROXYUSELOGON))
-        m_pProxyLayer->SetProxy(PROXYTYPE_SOCKS5, T2CA(GetOption(OPTION_PROXYHOST)),
-                    GetOptionVal(OPTION_PROXYPORT),
-                    T2CA(GetOption(OPTION_PROXYUSER)),
-                    T2CA(GetOption(OPTION_PROXYPASS)));
-      else
-        m_pProxyLayer->SetProxy(PROXYTYPE_SOCKS5, T2CA(GetOption(OPTION_PROXYHOST)),
-                    GetOptionVal(OPTION_PROXYPORT));
-    else if (nProxyType == PROXYTYPE_HTTP11)
-      if (GetOptionVal(OPTION_PROXYUSELOGON))
-        m_pProxyLayer->SetProxy(PROXYTYPE_HTTP11, T2CA(GetOption(OPTION_PROXYHOST)), GetOptionVal(OPTION_PROXYPORT),
-                    T2CA(GetOption(OPTION_PROXYUSER)),
-                    T2CA(GetOption(OPTION_PROXYPASS)));
-      else
-        m_pProxyLayer->SetProxy(PROXYTYPE_HTTP11, T2CA(GetOption(OPTION_PROXYHOST)), GetOptionVal(OPTION_PROXYPORT));
-    else
-      DebugFail();
+    m_pProxyLayer->SetProxy(
+      nProxyType, T2CA(GetOption(OPTION_PROXYHOST)), GetOptionVal(OPTION_PROXYPORT),
+      GetOptionVal(OPTION_PROXYUSELOGON), T2CA(GetOption(OPTION_PROXYUSER)), T2CA(GetOption(OPTION_PROXYPASS)));
     AddLayer(m_pProxyLayer);
   }