sftp: Make sftp works through HTTP proxy

This commit is contained in:
Tatsuhiro Tsujikawa 2015-05-12 00:32:08 +09:00
parent d0ad7033c3
commit 21c328fc11
2 changed files with 28 additions and 7 deletions

View File

@ -132,18 +132,31 @@ std::unique_ptr<Command> FtpInitiateConnectionCommand::createNextCommandProxied
setConnectedAddrInfo(getRequest(), hostname, pooledSocket);
if(proxyMethod == V_TUNNEL) {
if (getRequest()->getProtocol() == "sftp") {
return make_unique<SftpNegotiationCommand>
(getCuid(),
getRequest(),
getFileEntry(),
getRequestGroup(),
getDownloadEngine(),
pooledSocket,
SftpNegotiationCommand::SEQ_SFTP_OPEN);
}
// options contains "baseWorkingDir"
return make_unique<FtpNegotiationCommand>
(getCuid(),
getRequest(),
getFileEntry(),
getRequestGroup(),
getDownloadEngine(),
pooledSocket,
FtpNegotiationCommand::SEQ_SEND_CWD_PREP,
options);
getRequest(),
getFileEntry(),
getRequestGroup(),
getDownloadEngine(),
pooledSocket,
FtpNegotiationCommand::SEQ_SEND_CWD_PREP,
options);
}
assert(getRequest()->getProtocol() == "ftp");
if(proxyMethod != V_GET) {
assert(0);
return nullptr;

View File

@ -40,6 +40,7 @@
#include "Segment.h"
#include "SocketCore.h"
#include "SocketRecvBuffer.h"
#include "SftpNegotiationCommand.h"
namespace aria2 {
@ -59,6 +60,13 @@ FtpTunnelResponseCommand::~FtpTunnelResponseCommand() {}
std::unique_ptr<Command> FtpTunnelResponseCommand::getNextCommand()
{
if (getRequest()->getProtocol() == "sftp") {
return make_unique<SftpNegotiationCommand>
(getCuid(), getRequest(), getFileEntry(),
getRequestGroup(), getDownloadEngine(),
getSocket());
}
return make_unique<FtpNegotiationCommand>
(getCuid(), getRequest(), getFileEntry(),
getRequestGroup(), getDownloadEngine(),