ScpFileSystem.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. //---------------------------------------------------------------------------
  2. #ifndef ScpFileSystemH
  3. #define ScpFileSystemH
  4. #include <FileSystems.h>
  5. //---------------------------------------------------------------------------
  6. class TCommandSet;
  7. class TSecureShell;
  8. //---------------------------------------------------------------------------
  9. class TSCPFileSystem : public TCustomFileSystem
  10. {
  11. public:
  12. __fastcall TSCPFileSystem(TTerminal * ATerminal, TSecureShell * SecureShell);
  13. virtual __fastcall ~TSCPFileSystem();
  14. virtual void __fastcall Open();
  15. virtual void __fastcall Close();
  16. virtual bool __fastcall GetActive();
  17. virtual void __fastcall Idle();
  18. virtual AnsiString __fastcall AbsolutePath(AnsiString Path);
  19. virtual void __fastcall AnyCommand(const AnsiString Command,
  20. TCaptureOutputEvent OutputEvent);
  21. virtual void __fastcall ChangeDirectory(const AnsiString Directory);
  22. virtual void __fastcall CachedChangeDirectory(const AnsiString Directory);
  23. virtual void __fastcall AnnounceFileListOperation();
  24. virtual void __fastcall ChangeFileProperties(const AnsiString FileName,
  25. const TRemoteFile * File, const TRemoteProperties * Properties);
  26. virtual bool __fastcall LoadFilesProperties(TStrings * FileList);
  27. virtual void __fastcall CalculateFilesChecksum(const AnsiString & Alg,
  28. TStrings * FileList, TStrings * Checksums,
  29. TCalculatedChecksumEvent OnCalculatedChecksum);
  30. virtual void __fastcall CopyToLocal(TStrings * FilesToCopy,
  31. const AnsiString TargetDir, const TCopyParamType * CopyParam,
  32. int Params, TFileOperationProgressType * OperationProgress,
  33. bool & DisconnectWhenComplete);
  34. virtual void __fastcall CopyToRemote(TStrings * FilesToCopy,
  35. const AnsiString TargetDir, const TCopyParamType * CopyParam,
  36. int Params, TFileOperationProgressType * OperationProgress,
  37. bool & DisconnectWhenComplete);
  38. virtual void __fastcall CreateDirectory(const AnsiString DirName,
  39. const TRemoteProperties * Properties);
  40. virtual void __fastcall CreateLink(const AnsiString FileName, const AnsiString PointTo, bool Symbolic);
  41. virtual void __fastcall DeleteFile(const AnsiString FileName,
  42. const TRemoteFile * File, int Params);
  43. virtual void __fastcall CustomCommandOnFile(const AnsiString FileName,
  44. const TRemoteFile * File, AnsiString Command, int Params, TCaptureOutputEvent OutputEvent);
  45. virtual void __fastcall DoStartup();
  46. virtual void __fastcall HomeDirectory();
  47. virtual bool __fastcall IsCapable(int Capability) const;
  48. virtual void __fastcall LookupUsersGroups();
  49. virtual void __fastcall ReadCurrentDirectory();
  50. virtual void __fastcall ReadDirectory(TRemoteFileList * FileList);
  51. virtual void __fastcall ReadFile(const AnsiString FileName,
  52. TRemoteFile *& File);
  53. virtual void __fastcall ReadSymlink(TRemoteFile * SymlinkFile,
  54. TRemoteFile *& File);
  55. virtual void __fastcall RenameFile(const AnsiString FileName,
  56. const AnsiString NewName);
  57. virtual void __fastcall CopyFile(const AnsiString FileName,
  58. const AnsiString NewName);
  59. virtual AnsiString __fastcall FileUrl(const AnsiString FileName);
  60. virtual TStrings * __fastcall GetFixedPaths();
  61. virtual void __fastcall SpaceAvailable(const AnsiString Path,
  62. TSpaceAvailable & ASpaceAvailable);
  63. virtual const TSessionInfo & __fastcall GetSessionInfo();
  64. virtual const TFileSystemInfo & __fastcall GetFileSystemInfo(bool Retrieve);
  65. virtual bool __fastcall TemporaryTransferFile(const AnsiString & FileName);
  66. virtual bool __fastcall GetStoredCredentialsTried();
  67. virtual AnsiString __fastcall GetUserName();
  68. protected:
  69. __property TStrings * Output = { read = FOutput };
  70. __property int ReturnCode = { read = FReturnCode };
  71. virtual AnsiString __fastcall GetCurrentDirectory();
  72. private:
  73. TSecureShell * FSecureShell;
  74. TCommandSet * FCommandSet;
  75. TFileSystemInfo FFileSystemInfo;
  76. AnsiString FCurrentDirectory;
  77. TStrings * FOutput;
  78. int FReturnCode;
  79. AnsiString FCachedDirectoryChange;
  80. bool FProcessingCommand;
  81. int FLsFullTime;
  82. TCaptureOutputEvent FOnCaptureOutput;
  83. void __fastcall ClearAliases();
  84. void __fastcall ClearAlias(AnsiString Alias);
  85. void __fastcall CustomReadFile(const AnsiString FileName,
  86. TRemoteFile *& File, TRemoteFile * ALinkedByFile);
  87. static AnsiString __fastcall DelimitStr(AnsiString Str);
  88. void __fastcall DetectReturnVar();
  89. bool __fastcall IsLastLine(AnsiString & Line);
  90. static bool __fastcall IsTotalListingLine(const AnsiString Line);
  91. void __fastcall EnsureLocation();
  92. void __fastcall ExecCommand(const AnsiString & Cmd, int Params,
  93. const AnsiString & CmdString);
  94. void __fastcall ExecCommand(TFSCommand Cmd, const TVarRec * args = NULL,
  95. int size = 0, int Params = -1);
  96. void __fastcall ReadCommandOutput(int Params, const AnsiString * Cmd = NULL);
  97. void __fastcall SCPResponse(bool * GotLastLine = NULL);
  98. void __fastcall SCPDirectorySource(const AnsiString DirectoryName,
  99. const TCopyParamType * CopyParam, int Params,
  100. TFileOperationProgressType * OperationProgress, int Level);
  101. void __fastcall SCPError(const AnsiString Message, bool Fatal);
  102. void __fastcall SCPSendError(const AnsiString Message, bool Fatal);
  103. void __fastcall SCPSink(const AnsiString TargetDir,
  104. const AnsiString FileName, const AnsiString SourceDir,
  105. const TCopyParamType * CopyParam, bool & Success,
  106. TFileOperationProgressType * OperationProgress, int Params, int Level);
  107. void __fastcall SCPSource(const AnsiString FileName,
  108. const TCopyParamType * CopyParam, int Params,
  109. TFileOperationProgressType * OperationProgress, int Level);
  110. void __fastcall SendCommand(const AnsiString Cmd);
  111. void __fastcall SkipFirstLine();
  112. void __fastcall SkipStartupMessage();
  113. void __fastcall UnsetNationalVars();
  114. TRemoteFile * __fastcall CreateRemoteFile(const AnsiString & ListingStr,
  115. TRemoteFile * LinkedByFile = NULL);
  116. void __fastcall CaptureOutput(const AnsiString & AddedLine, bool StdError);
  117. static bool __fastcall RemoveLastLine(AnsiString & Line,
  118. int & ReturnCode, AnsiString LastLine = "");
  119. };
  120. //---------------------------------------------------------------------------
  121. #endif // ScpFileSystemH