sftp: Make sftp works through HTTP proxy

pull/384/head
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,6 +132,17 @@ std::unique_ptr<Command> FtpInitiateConnectionCommand::createNextCommandProxied
setConnectedAddrInfo(getRequest(), hostname, pooledSocket); setConnectedAddrInfo(getRequest(), hostname, pooledSocket);
if(proxyMethod == V_TUNNEL) { 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" // options contains "baseWorkingDir"
return make_unique<FtpNegotiationCommand> return make_unique<FtpNegotiationCommand>
(getCuid(), (getCuid(),
@ -144,6 +155,8 @@ std::unique_ptr<Command> FtpInitiateConnectionCommand::createNextCommandProxied
options); options);
} }
assert(getRequest()->getProtocol() == "ftp");
if(proxyMethod != V_GET) { if(proxyMethod != V_GET) {
assert(0); assert(0);
return nullptr; return nullptr;

View File

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