Index: kprotocolmanager.cpp =================================================================== RCS file: /home/kde/kdelibs/kio/kprotocolmanager.cpp,v retrieving revision 1.93 diff -u -r1.93 kprotocolmanager.cpp --- kprotocolmanager.cpp 2001/06/16 16:06:40 1.93 +++ kprotocolmanager.cpp 2001/06/27 12:43:22 @@ -295,6 +295,11 @@ QString proxy; ProxyType pt = proxyType(); + // this overrides any proxy settings in order to use real FTP + // proxy server like DeLeGate + if ( url.protocol() == "ftp" && KIO::SlaveConfig::self()->configData( "ftp", QString::null, "UseFtpProxyServer" ) == "true" ) + return QString::fromLatin1( "DIRECT" ); + switch (pt) { case PACProxy: Index: ftp/ftp.cc =================================================================== RCS file: /home/kde/kdelibs/kio/ftp/ftp.cc,v retrieving revision 1.141 diff -u -r1.141 ftp.cc --- ftp/ftp.cc 2001/06/26 18:22:08 1.141 +++ ftp/ftp.cc 2001/06/27 12:43:23 @@ -285,7 +285,25 @@ m_initialPath = QString::null; - if (!connect( m_host, m_port )) + // real values to be used + QString r_host( m_host ); + int r_port ( m_port ); + MetaData cfgData = KIO::SlaveConfig::self()->configData( "ftp", QString::null ); + if ( cfgData[ "UseFtpProxyServer" ] == "true" ) + { + bool ok; + + r_host = cfgData[ "FtpProxyServer" ]; + r_port = cfgData[ "FtpProxyPort" ].toInt( &ok ); + if ( r_host.isEmpty() ) + r_host = QString::fromLatin1( "ftpproxy" ); + if ( r_port <= 0 || !ok ) + r_port = 8028; + + kdDebug(7102) << "using FTP proxy server host=" << r_host << " port=" << r_port << endl; + } + + if (!connect( r_host, r_port )) return; // error emitted by connect m_bFtpStarted = true; @@ -383,6 +401,7 @@ QString user = m_user; QString pass = m_pass; + bool useFtpProxy = ( KIO::SlaveConfig::self()->configData( "ftp", QString::null, "UseFtpProxyServer" ) == "true" ); if ( config()->readBoolEntry("EnableAutoLogin") ) { @@ -395,7 +414,7 @@ } kdDebug(7102) << "ftpLogin " << user << endl; - if ( !user.isEmpty() ) + if ( !user.isEmpty() || useFtpProxy ) { AuthInfo info; QCString tempbuf; @@ -454,6 +473,16 @@ tempbuf = "user "; tempbuf += user.latin1(); + if ( useFtpProxy ) + { + tempbuf += "@"; + tempbuf += m_host.latin1(); + if ( m_port > 0 && m_port != 21 ) + { + tempbuf += ":"; + tempbuf += QString::number( m_port ).latin1(); + } + } kdDebug(7102) << "Sending Login name: " << user << endl; bool loggedIn = (ftpSendCmd( tempbuf, '2' ) && !strncmp( rspbuf, "230", 3)); bool needPass = !strncmp( rspbuf, "331", 3); @@ -814,8 +843,10 @@ char buf[64]; int on = 1; + MetaData cfgData = KIO::SlaveConfig::self()->configData( "ftp", QString::null ); ////////////// First try passive (EPSV & PASV) modes - if ( KIO::SlaveConfig::self()->configData( "ftp", m_host, "DisablePassiveMode" ) != "true" ) + if ( KIO::SlaveConfig::self()->configData( "ftp", m_host, "DisablePassiveMode" ) != "true" && + ( cfgData[ "UseFtpProxyServer" ] != "true" || cfgData[ "FtpProxyDisablePASV" ] != "true" )) { if (ftpOpenEPSVDataConnection()) return true;