ScpFileSystem.h 5.5 KB

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