| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 | //---------------------------------------------------------------------------#ifndef ScpFileSystemH#define ScpFileSystemH#include <FileSystems.h>#include <CopyParam.h>//---------------------------------------------------------------------------class TCommandSet;class TSecureShell;struct TOverwriteFileParams;//---------------------------------------------------------------------------class TSCPFileSystem : public TCustomFileSystem{public:  __fastcall TSCPFileSystem(TTerminal * ATerminal, TSecureShell * SecureShell);  virtual __fastcall ~TSCPFileSystem();  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 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, bool Encrypt);  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 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:  __property TStrings * Output = { read = FOutput };  __property int ReturnCode = { read = FReturnCode };  virtual UnicodeString __fastcall GetCurrentDirectory();private:  TSecureShell * FSecureShell;  TCommandSet * FCommandSet;  TFileSystemInfo FFileSystemInfo;  UnicodeString FCurrentDirectory;  TStrings * FOutput;  int FReturnCode;  UnicodeString FCachedDirectoryChange;  bool FProcessingCommand;  int FLsFullTime;  TCaptureOutputEvent FOnCaptureOutput;  bool FScpFatalError;  void __fastcall DetectUtf();  void __fastcall ClearAliases();  void __fastcall ClearAlias(UnicodeString Alias);  void __fastcall CustomReadFile(const UnicodeString FileName,    TRemoteFile *& File, TRemoteFile * ALinkedByFile);  static UnicodeString __fastcall DelimitStr(UnicodeString Str);  void __fastcall DetectReturnVar();  bool __fastcall IsLastLine(UnicodeString & Line);  static bool __fastcall IsTotalListingLine(const UnicodeString Line);  void __fastcall EnsureLocation();  void __fastcall ExecCommand(const UnicodeString & Cmd, int Params,    const UnicodeString & CmdString);  void __fastcall ExecCommand(TFSCommand Cmd, const TVarRec * args = NULL,    int size = 0, int Params = -1);  void __fastcall ReadCommandOutput(int Params, const UnicodeString * Cmd = NULL);  void __fastcall SCPResponse(bool * GotLastLine = NULL);  void __fastcall SCPDirectorySource(const UnicodeString DirectoryName,    const UnicodeString TargetDir, const TCopyParamType * CopyParam, int Params,    TFileOperationProgressType * OperationProgress, int Level);  void __fastcall SCPError(const UnicodeString Message, bool Fatal);  void __fastcall SCPSendError(const UnicodeString Message, bool Fatal);  void __fastcall SCPSink(const UnicodeString TargetDir,    const UnicodeString FileName, const UnicodeString SourceDir,    const TCopyParamType * CopyParam, bool & Success,    TFileOperationProgressType * OperationProgress, int Params, int Level);  void __fastcall SCPSource(const UnicodeString FileName,    const UnicodeString TargetDir, const TCopyParamType * CopyParam, int Params,    TFileOperationProgressType * OperationProgress, int Level);  void __fastcall SendCommand(const UnicodeString Cmd);  void __fastcall SkipFirstLine();  void __fastcall SkipStartupMessage();  void __fastcall UnsetNationalVars();  TRemoteFile * __fastcall CreateRemoteFile(const UnicodeString & ListingStr,    TRemoteFile * LinkedByFile = NULL);  void __fastcall CaptureOutput(const UnicodeString & AddedLine, TCaptureOutputType OutputType);  void __fastcall ChangeFileToken(const UnicodeString & DelimitedName,    const TRemoteToken & Token, TFSCommand Cmd, const UnicodeString & RecursiveStr);  unsigned int __fastcall ConfirmOverwrite(    const UnicodeString & SourceFullFileName, const UnicodeString & TargetFileName,    TOperationSide Side,    const TOverwriteFileParams * FileParams, const TCopyParamType * CopyParam,    int Params, TFileOperationProgressType * OperationProgress);  static bool __fastcall RemoveLastLine(UnicodeString & Line,    int & ReturnCode, UnicodeString LastLine = L"");};//---------------------------------------------------------------------------#endif // ScpFileSystemH
 |