X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/30b30ec1c01acb6f128e3fc8eb74d978a287ae1a..8e7ac74ad9dbd15a874c66632f6da22f6b23d9c6:/methods/ftp.h diff --git a/methods/ftp.h b/methods/ftp.h index 1b2e147d0..d7f1f7fbe 100644 --- a/methods/ftp.h +++ b/methods/ftp.h @@ -1,5 +1,6 @@ // -*- mode: cpp; mode: fold -*- -// Description /*{{{*/// $Id: ftp.h,v 1.1 1999/03/15 06:01:00 jgg Exp $ +// Description /*{{{*/// $Id: ftp.h,v 1.4 2001/03/06 07:15:29 jgg Exp $ +// $Id: ftp.h,v 1.4 2001/03/06 07:15:29 jgg Exp $ /* ###################################################################### FTP Aquire Method - This is the FTP aquire method for APT. @@ -17,11 +18,20 @@ class FTPConn int DataFd; int DataListenFd; URI ServerName; + bool ForceExtended; bool TryPassive; - - struct sockaddr_in PasvAddr; - struct sockaddr_in Peer; + bool Debug; + struct addrinfo *PasvAddr; + + // Generic Peer Address + struct sockaddr_storage PeerAddr; + socklen_t PeerAddrLen; + + // Generic Server Address (us) + struct sockaddr_storage ServerAddr; + socklen_t ServerAddrLen; + // Private helper functions bool ReadLine(string &Text); bool Login(); @@ -30,22 +40,43 @@ class FTPConn public: + bool Comp(URI Other) {return Other.Host == ServerName.Host && Other.Port == ServerName.Port && Other.User == ServerName.User && Other.Password == ServerName.Password; }; + // Raw connection IO bool ReadResp(unsigned int &Ret,string &Text); bool WriteMsg(unsigned int &Ret,string &Text,const char *Fmt,...); // Connection control - bool Open(); + bool Open(pkgAcqMethod *Owner); void Close(); bool GoPasv(); + bool ExtGoPasv(); // Query - unsigned long Size(const char *Path); + bool Size(const char *Path,unsigned long &Size); bool ModTime(const char *Path, time_t &Time); - bool Get(const char *Path,FileFd &To,unsigned long Resume = 0); + bool Get(const char *Path,FileFd &To,unsigned long Resume, + Hashes &MD5,bool &Missing); FTPConn(URI Srv); ~FTPConn(); }; +class FtpMethod : public pkgAcqMethod +{ + virtual bool Fetch(FetchItem *Itm); + virtual bool Configuration(string Message); + + FTPConn *Server; + + static string FailFile; + static int FailFd; + static time_t FailTime; + static void SigTerm(int); + + public: + + FtpMethod(); +}; + #endif