| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | 
							- //------------------------------------------------------------------------------
 
- #ifndef S3FileSystemH
 
- #define S3FileSystemH
 
- //------------------------------------------------------------------------------
 
- #include <FileSystems.h>
 
- //------------------------------------------------------------------------------
 
- struct TNeonCertificateData;
 
- struct TLibS3CallbackData;
 
- struct TLibS3BucketContext;
 
- struct TLibS3ListBucketCallbackData;
 
- struct ssl_st;
 
- #ifdef NEED_LIBS3
 
- // resolve clash
 
- #define S3Protocol _S3Protocol
 
- #include "libs3.h"
 
- #undef S3Protocol
 
- #else
 
- struct ne_session_s;
 
- struct ne_ssl_certificate_s;
 
- struct S3ResponseProperties;
 
- struct S3RequestContext;
 
- struct S3ErrorDetails;
 
- struct S3ListBucketContent;
 
- struct S3ResponseHandler;
 
- enum S3Status { };
 
- enum _S3Protocol { };
 
- #endif
 
- //------------------------------------------------------------------------------
 
- class TS3FileSystem : public TCustomFileSystem
 
- {
 
- public:
 
-   explicit TS3FileSystem(TTerminal * ATerminal);
 
-   virtual __fastcall ~TS3FileSystem();
 
-   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 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 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 UnicodeString NewName);
 
-   virtual void __fastcall CopyFile(const UnicodeString FileName,
 
-     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:
 
-   bool FActive;
 
-   TFileSystemInfo FFileSystemInfo;
 
-   UnicodeString FCurrentDirectory;
 
-   UnicodeString FCachedDirectoryChange;
 
-   TSessionInfo FSessionInfo;
 
-   UTF8String FAccessKeyId;
 
-   UTF8String FSecretAccessKey;
 
-   UTF8String FHostName;
 
-   int FTimeout;
 
-   S3RequestContext * FRequestContext;
 
-   _S3Protocol FLibS3Protocol;
 
-   ne_session_s * FNeonSession;
 
-   UnicodeString FTlsVersionStr;
 
-   UnicodeString FResponse;
 
-   typedef std::map<UnicodeString, UnicodeString> TRegions;
 
-   TRegions FRegions;
 
-   TRegions FHostNames;
 
-   virtual UnicodeString __fastcall GetCurrentDirectory();
 
-   void LibS3Deinitialize();
 
-   bool VerifyCertificate(TNeonCertificateData Data);
 
-   void CollectTLSSessionInfo();
 
-   void CheckLibS3Error(const TLibS3CallbackData & Data);
 
-   void InitSslSession(ssl_st * Ssl, ne_session_s * Session);
 
-   void RequestInit(TLibS3CallbackData & Data);
 
-   void TryOpenDirectory(const UnicodeString & Directory);
 
-   void ReadDirectoryInternal(const UnicodeString & Path, TRemoteFileList * FileList, int MaxKeys, const UnicodeString & FileName);
 
-   void ParsePath(UnicodeString Path, UnicodeString & BucketName, UnicodeString & Prefix);
 
-   TRemoteToken MakeRemoteToken(const char * OwnerId, const char * OwnerDisplayName);
 
-   TLibS3BucketContext GetBucketContext(const UnicodeString & BucketName);
 
-   void DoListBucket(
 
-     const UnicodeString & Prefix, TRemoteFileList * FileList, int MaxKeys, const TLibS3BucketContext & BucketContext,
 
-     TLibS3ListBucketCallbackData & Data);
 
-   UnicodeString GetFolderPath(const UnicodeString & Path);
 
-   static TS3FileSystem * GetFileSystem(void * CallbackData);
 
-   static void LibS3SessionCallback(ne_session_s * Session, void * CallbackData);
 
-   static S3Status LibS3ResponsePropertiesCallback(const S3ResponseProperties * Properties, void * CallbackData);
 
-   static void LibS3ResponseCompleteCallback(S3Status Status, const S3ErrorDetails * Error, void * CallbackData);
 
-   static int LibS3SslCallback(int Failures, const ne_ssl_certificate_s * Certificate, void * CallbackData);
 
-   static void LibS3ResponseDataCallback(const char * Data, size_t Size, void * CallbackData);
 
-   static S3Status LibS3ListServiceCallback(
 
-     const char * OwnerId, const char * OwnerDisplayName, const char * BucketName,
 
-     int64_t CreationDate, void * CallbackData);
 
-   static S3Status LibS3ListBucketCallback(
 
-     int IsTruncated, const char * NextMarker, int ContentsCount, const S3ListBucketContent * Contents,
 
-     int CommonPrefixesCount, const char ** CommonPrefixes, void * CallbackData);
 
- };
 
- //------------------------------------------------------------------------------
 
- UnicodeString __fastcall S3LibVersion();
 
- UnicodeString __fastcall S3LibDefaultHostName();
 
- UnicodeString __fastcall S3LibDefaultRegion();
 
- //------------------------------------------------------------------------------
 
- #endif
 
 
  |