[Pkg-crosswire-devel] Bug#539794: Bug#539794: libsword8: please use passive FTP for module manager / bookshelf updater

Jonathan Marsden jmarsden at fastmail.fm
Mon Aug 3 20:29:57 BST 2009


Mark Hedges wrote:

> It might be a good idea to send the PASV command in the ftp
> connection to refresh the index and install text modules from
> crosswire.org.

As far as I know, this already happens (well, EPSV rather than PASV, but 
the same principle).

QUESTION:

Mark, are you using installmgr (included in the libsword8 package) or 
bibletime to do this updating?  Your report is unfortunately somewhat 
imprecise about exactly how you are trying to install SWORD modules.

TESTING AND TEST REULTS:

I just tested this here, and using

   installmgr -sc

in a newly-created user account, I get a generated config file 
~/.sword/InstallMgr/InstallMgr.conf file that begins with

   [General]
   PassiveFTP=true

and the debug info displayed by installmgr includes:

   CURLFTPTransport: => Send header: EPSV
   CURLFTPTransport: TEXT: Connect data stream passively
   CURLFTPTransport: <= Recv header: 229 Entering Extended Passive Mode 
(|||16020|)

That looks like passive mode being requested and enabled, to me.

The PC I used for these tests sits behind a hardware firewall device 
that does NAT, and does not have a large number of open ports waiting 
for incoming active FTP connections from anywhere.

As a further check, I also ran tcpdump while running the installmgr -sc 
command, to capture the network traffic concerned to a file, and the 
resulting .cap file shows only TCP connections starting from my local 
machine -- that is, passive FTP being used.  I then repeated this kind 
of testing for the two commands

   installmgr -r CrossWire           # Get list of modules
   installmgr -ri CrossWire NETfree  # Install a module

The results were similar.  Passive FTP was used each time, the EPSV 
command was sent and accepted in each test session.  I can attach the 
.cap files, if anyone thinks they would be useful.

CONCLUSION:

At least in my testing, libsword8 (installmgr) already uses passive FTP 
when doing repository master list syncs, obtaining lists of modules, and 
installing modules.

ANALYSIS:

Perhaps this feature request should be directed at BibleTime, if 
BibleTime is not using passive FTP, and cannot be configured to use it? 
  However, it looks to me that BibleTime also does in fact try to use 
Passive mode, the code at src/frontend/bookshelfmanager/btinstallmgr.cpp 
includes:

   BtInstallMgr::BtInstallMgr()
         : InstallMgr(instbackend::configPath().toLatin1(), this),
         m_firstCallOfPreStatus(true)
   { //use this class also as status reporter
         qDebug("BtInstallMgr::BtInstallMgr");
         this->setFTPPassive(true);
   }

Until it is clear which package this bug is really being filed against, 
I don't plan to retest using BibleTime to do these operations with 
tcpdump capturing the traffic... but once we know it is in fact 
BibleTime, I can do that and report my results.

NEXT STEPS:

(1) Please provide specific details on how to reproduce this issue.

(2) Please include exactly how you are syncing your master repository 
list, obtaining the list of modules, and installing one sample module.

(3) Please state specifically which of these three different operations 
you believe are not currently using passive mode FTP.

(4) If your module installation process uses BibleTime, please also 
check (and state) whether you have configured BibleTime to use Passive 
FTP, if you want (or need) it do to that and you believe it does not 
already do so by default.

Thanks,

Jonathan






More information about the Pkg-crosswire-devel mailing list