| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 | 
							- //---------------------------------------------------------------------------
 
- #ifndef SftpFileSystemH
 
- #define SftpFileSystemH
 
- #include <FileSystems.h>
 
- //---------------------------------------------------------------------------
 
- class TSFTPPacket;
 
- class TOverwriteFileParams;
 
- struct TSFTPSupport;
 
- class TSecureShell;
 
- //---------------------------------------------------------------------------
 
- enum TSFTPOverwriteMode { omOverwrite, omAppend, omResume };
 
- extern const int SFTPMaxVersion;
 
- //---------------------------------------------------------------------------
 
- class TSFTPFileSystem : public TCustomFileSystem
 
- {
 
- friend class TSFTPPacket;
 
- friend class TSFTPQueue;
 
- friend class TSFTPAsynchronousQueue;
 
- friend class TSFTPUploadQueue;
 
- friend class TSFTPDownloadQueue;
 
- friend class TSFTPLoadFilesPropertiesQueue;
 
- friend class TSFTPCalculateFilesChecksumQueue;
 
- friend class TSFTPBusy;
 
- public:
 
-   __fastcall TSFTPFileSystem(TTerminal * ATerminal, TSecureShell * SecureShell);
 
-   virtual __fastcall ~TSFTPFileSystem();
 
-   virtual void __fastcall Open();
 
-   virtual void __fastcall Close();
 
-   virtual bool __fastcall GetActive();
 
-   virtual void __fastcall CollectUsage();
 
-   virtual void __fastcall Idle();
 
-   virtual UnicodeString __fastcall AbsolutePath(UnicodeString Path, bool Local);
 
-   virtual void __fastcall AnyCommand(const UnicodeString Command,
 
-     TCaptureOutputEvent OutputEvent);
 
-   virtual void __fastcall ChangeDirectory(const UnicodeString Directory);
 
-   virtual void __fastcall CachedChangeDirectory(const UnicodeString Directory);
 
-   virtual void __fastcall AnnounceFileListOperation();
 
-   virtual void __fastcall ChangeFileProperties(const UnicodeString FileName,
 
-     const TRemoteFile * File, const TRemoteProperties * Properties,
 
-     TChmodSessionAction & Action);
 
-   virtual bool __fastcall LoadFilesProperties(TStrings * FileList);
 
-   virtual void __fastcall CalculateFilesChecksum(const UnicodeString & Alg,
 
-     TStrings * FileList, TStrings * Checksums,
 
-     TCalculatedChecksumEvent OnCalculatedChecksum);
 
-   virtual void __fastcall CopyToLocal(TStrings * FilesToCopy,
 
-     const UnicodeString TargetDir, const TCopyParamType * CopyParam,
 
-     int Params, TFileOperationProgressType * OperationProgress,
 
-     TOnceDoneOperation & OnceDoneOperation);
 
-   virtual void __fastcall CopyToRemote(TStrings * FilesToCopy,
 
-     const UnicodeString TargetDir, const TCopyParamType * CopyParam,
 
-     int Params, TFileOperationProgressType * OperationProgress,
 
-     TOnceDoneOperation & OnceDoneOperation);
 
-   virtual void __fastcall Source(
 
-     TLocalFileHandle & Handle, const UnicodeString & TargetDir, UnicodeString & DestFileName,
 
-     const TCopyParamType * CopyParam, int Params,
 
-     TFileOperationProgressType * OperationProgress, unsigned int Flags,
 
-     TUploadSessionAction & Action, bool & ChildError);
 
-   virtual void __fastcall DirectorySunk(
 
-     const UnicodeString & DestFullName, const TRemoteFile * File, const TCopyParamType * CopyParam);
 
-   virtual void __fastcall Sink(
 
-     const UnicodeString & FileName, const TRemoteFile * File,
 
-     const UnicodeString & TargetDir, UnicodeString & DestFileName, int Attrs,
 
-     const TCopyParamType * CopyParam, int Params, TFileOperationProgressType * OperationProgress,
 
-     unsigned int Flags, TDownloadSessionAction & Action);
 
-   virtual void __fastcall CreateDirectory(const UnicodeString DirName);
 
-   virtual void __fastcall CreateLink(const UnicodeString FileName, const UnicodeString PointTo, bool Symbolic);
 
-   virtual void __fastcall DeleteFile(const UnicodeString FileName,
 
-     const TRemoteFile * File, int Params, TRmSessionAction & Action);
 
-   virtual void __fastcall CustomCommandOnFile(const UnicodeString FileName,
 
-     const TRemoteFile * File, UnicodeString Command, int Params, TCaptureOutputEvent OutputEvent);
 
-   virtual void __fastcall DoStartup();
 
-   virtual void __fastcall HomeDirectory();
 
-   virtual UnicodeString __fastcall GetHomeDirectory();
 
-   virtual bool __fastcall IsCapable(int Capability) const;
 
-   virtual void __fastcall LookupUsersGroups();
 
-   virtual void __fastcall ReadCurrentDirectory();
 
-   virtual void __fastcall ReadDirectory(TRemoteFileList * FileList);
 
-   virtual void __fastcall ReadFile(const UnicodeString FileName,
 
-     TRemoteFile *& File);
 
-   virtual void __fastcall ReadSymlink(TRemoteFile * SymlinkFile,
 
-     TRemoteFile *& File);
 
-   virtual void __fastcall RenameFile(const UnicodeString FileName, const TRemoteFile * File,
 
-     const UnicodeString NewName);
 
-   virtual void __fastcall CopyFile(const UnicodeString FileName, const TRemoteFile * File,
 
-     const UnicodeString NewName);
 
-   virtual TStrings * __fastcall GetFixedPaths();
 
-   virtual void __fastcall SpaceAvailable(const UnicodeString Path,
 
-     TSpaceAvailable & ASpaceAvailable);
 
-   virtual const TSessionInfo & __fastcall GetSessionInfo();
 
-   virtual const TFileSystemInfo & __fastcall GetFileSystemInfo(bool Retrieve);
 
-   virtual bool __fastcall TemporaryTransferFile(const UnicodeString & FileName);
 
-   virtual bool __fastcall GetStoredCredentialsTried();
 
-   virtual UnicodeString __fastcall GetUserName();
 
-   virtual void __fastcall GetSupportedChecksumAlgs(TStrings * Algs);
 
-   virtual void __fastcall LockFile(const UnicodeString & FileName, const TRemoteFile * File);
 
-   virtual void __fastcall UnlockFile(const UnicodeString & FileName, const TRemoteFile * File);
 
-   virtual void __fastcall UpdateFromMain(TCustomFileSystem * MainFileSystem);
 
-   virtual void __fastcall ClearCaches();
 
- protected:
 
-   TSecureShell * FSecureShell;
 
-   TFileSystemInfo FFileSystemInfo;
 
-   bool FFileSystemInfoValid;
 
-   int FVersion;
 
-   UnicodeString FCurrentDirectory;
 
-   UnicodeString FDirectoryToChangeTo;
 
-   UnicodeString FHomeDirectory;
 
-   AnsiString FEOL;
 
-   TList * FPacketReservations;
 
-   Variant FPacketNumbers;
 
-   char FPreviousLoggedPacket;
 
-   int FNotLoggedPackets;
 
-   int FBusy;
 
-   void * FBusyToken;
 
-   bool FAvoidBusy;
 
-   TStrings * FExtensions;
 
-   TSFTPSupport * FSupport;
 
-   TAutoSwitch FUtfStrings;
 
-   bool FUtfDisablingAnnounced;
 
-   bool FSignedTS;
 
-   TStrings * FFixedPaths;
 
-   unsigned long FMaxPacketSize;
 
-   bool FSupportsStatVfsV2;
 
-   bool FSupportsHardlink;
 
-   std::unique_ptr<TStringList> FChecksumAlgs;
 
-   std::unique_ptr<TStringList> FChecksumSftpAlgs;
 
-   void __fastcall SendCustomReadFile(TSFTPPacket * Packet, TSFTPPacket * Response,
 
-     unsigned long Flags);
 
-   void __fastcall CustomReadFile(const UnicodeString FileName,
 
-     TRemoteFile *& File, unsigned char Type, TRemoteFile * ALinkedByFile = NULL,
 
-     int AllowStatus = -1);
 
-   virtual UnicodeString __fastcall GetCurrentDirectory();
 
-   unsigned long __fastcall GotStatusPacket(TSFTPPacket * Packet, int AllowStatus);
 
-   bool __fastcall RemoteFileExists(const UnicodeString FullPath, TRemoteFile ** File = NULL);
 
-   TRemoteFile * __fastcall LoadFile(TSFTPPacket * Packet,
 
-     TRemoteFile * ALinkedByFile, const UnicodeString FileName,
 
-     TRemoteFileList * TempFileList = NULL, bool Complete = true);
 
-   void __fastcall LoadFile(TRemoteFile * File, TSFTPPacket * Packet,
 
-     bool Complete = true);
 
-   UnicodeString __fastcall LocalCanonify(const UnicodeString & Path);
 
-   UnicodeString __fastcall Canonify(UnicodeString Path);
 
-   UnicodeString __fastcall RealPath(const UnicodeString Path);
 
-   UnicodeString __fastcall RealPath(const UnicodeString Path, const UnicodeString BaseDir);
 
-   void __fastcall ReserveResponse(const TSFTPPacket * Packet,
 
-     TSFTPPacket * Response);
 
-   int __fastcall ReceivePacket(TSFTPPacket * Packet, int ExpectedType = -1,
 
-     int AllowStatus = -1, bool TryOnly = false);
 
-   bool __fastcall PeekPacket();
 
-   void __fastcall RemoveReservation(int Reservation);
 
-   void __fastcall SendPacket(const TSFTPPacket * Packet);
 
-   int __fastcall ReceiveResponse(const TSFTPPacket * Packet,
 
-     TSFTPPacket * Response, int ExpectedType = -1, int AllowStatus = -1, bool TryOnly = false);
 
-   int __fastcall SendPacketAndReceiveResponse(const TSFTPPacket * Packet,
 
-     TSFTPPacket * Response, int ExpectedType = -1, int AllowStatus = -1);
 
-   void __fastcall UnreserveResponse(TSFTPPacket * Response);
 
-   void __fastcall TryOpenDirectory(const UnicodeString Directory);
 
-   bool __fastcall SupportsExtension(const UnicodeString & Extension) const;
 
-   void __fastcall ResetConnection();
 
-   void __fastcall DoCalculateFilesChecksum(
 
-     const UnicodeString & Alg, const UnicodeString & SftpAlg,
 
-     TStrings * FileList, TStrings * Checksums,
 
-     TCalculatedChecksumEvent OnCalculatedChecksum,
 
-     TFileOperationProgressType * OperationProgress, bool FirstLevel);
 
-   void __fastcall RegisterChecksumAlg(const UnicodeString & Alg, const UnicodeString & SftpAlg);
 
-   void __fastcall DoDeleteFile(const UnicodeString FileName, unsigned char Type);
 
-   void __fastcall SFTPSource(const UnicodeString FileName,
 
-     const UnicodeString TargetDir, const TCopyParamType * CopyParam, int Params,
 
-     TFileOperationProgressType * OperationProgress, unsigned int Flags,
 
-     TUploadSessionAction & Action, bool & ChildError);
 
-   RawByteString __fastcall SFTPOpenRemoteFile(const UnicodeString & FileName,
 
-     unsigned int OpenType, __int64 Size = -1);
 
-   int __fastcall SFTPOpenRemote(void * AOpenParams, void * Param2);
 
-   void __fastcall SFTPCloseRemote(const RawByteString Handle,
 
-     const UnicodeString FileName, TFileOperationProgressType * OperationProgress,
 
-     bool TransferFinished, bool Request, TSFTPPacket * Packet);
 
-   void __fastcall SFTPConfirmOverwrite(const UnicodeString & FullFileName, UnicodeString & FileName,
 
-     const TCopyParamType * CopyParam, int Params, TFileOperationProgressType * OperationProgress,
 
-     TSFTPOverwriteMode & Mode, const TOverwriteFileParams * FileParams);
 
-   bool SFTPConfirmResume(const UnicodeString DestFileName, bool PartialBiggerThanSource,
 
-     TFileOperationProgressType * OperationProgress);
 
-   char * __fastcall GetEOL() const;
 
-   inline void __fastcall BusyStart();
 
-   inline void __fastcall BusyEnd();
 
-   inline unsigned long __fastcall TransferBlockSize(unsigned long Overhead,
 
-     TFileOperationProgressType * OperationProgress, unsigned long MaxPacketSize = 0);
 
-   inline unsigned long __fastcall UploadBlockSize(const RawByteString & Handle,
 
-     TFileOperationProgressType * OperationProgress);
 
-   inline unsigned long __fastcall DownloadBlockSize(
 
-     TFileOperationProgressType * OperationProgress);
 
-   inline int __fastcall PacketLength(unsigned char * LenBuf, int ExpectedType);
 
-   void __fastcall Progress(TFileOperationProgressType * OperationProgress);
 
- };
 
- //---------------------------------------------------------------------------
 
- #endif // SftpFileSystemH
 
 
  |