| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- //---------------------------------------------------------------------------
- #ifndef SessionInfoH
- #define SessionInfoH
- #include "SessionData.h"
- #include "Interface.h"
- //---------------------------------------------------------------------------
- enum TSessionStatus { ssClosed, ssOpening, ssOpened };
- //---------------------------------------------------------------------------
- struct TSessionInfo
- {
- TSessionInfo();
- TDateTime LoginTime;
- AnsiString ProtocolBaseName;
- AnsiString ProtocolName;
- AnsiString SecurityProtocolName;
- AnsiString CSCipher;
- AnsiString CSCompression;
- AnsiString SCCipher;
- AnsiString SCCompression;
- AnsiString SshVersionString;
- AnsiString SshImplementation;
- AnsiString HostKeyFingerprint;
- };
- //---------------------------------------------------------------------------
- enum TFSCapability { fcUserGroupListing, fcModeChanging, fcGroupChanging,
- fcOwnerChanging, fcAnyCommand, fcHardLink, fcSymbolicLink, fcResolveSymlink,
- fcTextMode, fcRename, fcNativeTextMode, fcNewerOnlyUpload, fcRemoteCopy,
- fcTimestampChanging, fcRemoteMove, fcLoadingAdditionalProperties,
- fcCheckingSpaceAvailable, fcIgnorePermErrors, fcCalculatingChecksum,
- fcModeChangingUpload, fcPreservingTimestampUpload, fcShellAnyCommand,
- fcSecondaryShell, fcCount };
- //---------------------------------------------------------------------------
- struct TFileSystemInfo
- {
- TFileSystemInfo();
- AnsiString ProtocolBaseName;
- AnsiString ProtocolName;
- AnsiString RemoteSystem;
- AnsiString AdditionalInfo;
- bool IsCapable[fcCount];
- };
- //---------------------------------------------------------------------------
- class TSessionUI
- {
- public:
- virtual void __fastcall Information(const AnsiString & Str, bool Status) = 0;
- virtual int __fastcall QueryUser(const AnsiString Query,
- TStrings * MoreMessages, int Answers, const TQueryParams * Params,
- TQueryType QueryType = qtConfirmation) = 0;
- virtual int __fastcall QueryUserException(const AnsiString Query,
- Exception * E, int Answers, const TQueryParams * Params,
- TQueryType QueryType = qtConfirmation) = 0;
- virtual bool __fastcall PromptUser(TSessionData * Data, TPromptKind Kind,
- AnsiString Name, AnsiString Instructions, TStrings * Prompts,
- TStrings * Results) = 0;
- virtual void __fastcall DisplayBanner(const AnsiString & Banner) = 0;
- virtual void __fastcall ShowExtendedException(Exception * E) = 0;
- virtual void __fastcall Closed() = 0;
- };
- //---------------------------------------------------------------------------
- // Duplicated in LogMemo.h for design-time-only purposes
- enum TLogLineType { llOutput, llInput, llStdError, llMessage, llException };
- //---------------------------------------------------------------------------
- typedef void __fastcall (__closure *TCaptureOutputEvent)(
- const AnsiString & Str, bool StdError);
- typedef void __fastcall (__closure *TCalculatedChecksumEvent)(
- const AnsiString & FileName, const AnsiString & Alg, const AnsiString & Hash);
- //---------------------------------------------------------------------------
- class TCriticalSection;
- //---------------------------------------------------------------------------
- class TSessionLog : protected TStringList
- {
- public:
- __fastcall TSessionLog(TSessionUI* UI, TSessionData * SessionData,
- TConfiguration * Configuration);
- __fastcall ~TSessionLog();
- HIDESBASE void __fastcall Add(TLogLineType Type, const AnsiString & Line);
- void __fastcall AddStartupInfo();
- void __fastcall AddException(Exception * E);
- void __fastcall AddSeparator();
- virtual void __fastcall Clear();
- void __fastcall ReflectSettings();
- void __fastcall Lock();
- void __fastcall Unlock();
- __property TSessionLog * Parent = { read = FParent, write = SetParent };
- __property bool Logging = { read = FLogging };
- __property int BottomIndex = { read = GetBottomIndex };
- __property AnsiString Line[int Index] = { read=GetLine };
- __property TLogLineType Type[int Index] = { read=GetType };
- __property OnChange;
- __property AnsiString CurrentFileName = { read = FCurrentFileName };
- __property bool LoggingToFile = { read = GetLoggingToFile };
- __property int TopIndex = { read = FTopIndex };
- __property AnsiString SessionName = { read = GetSessionName };
- __property AnsiString Name = { read = FName, write = FName };
- __property Count;
- protected:
- void __fastcall CloseLogFile();
- bool __fastcall LogToFile();
- private:
- TConfiguration * FConfiguration;
- TSessionLog * FParent;
- TCriticalSection * FCriticalSection;
- bool FLogging;
- void * FFile;
- AnsiString FCurrentLogFileName;
- AnsiString FCurrentFileName;
- int FLoggedLines;
- int FTopIndex;
- TSessionUI * FUI;
- TSessionData * FSessionData;
- AnsiString FName;
- AnsiString __fastcall GetLine(int Index);
- TLogLineType __fastcall GetType(int Index);
- void DeleteUnnecessary();
- void OpenLogFile();
- int __fastcall GetBottomIndex();
- AnsiString __fastcall GetLogFileName();
- bool __fastcall GetLoggingToFile();
- void __fastcall SetParent(TSessionLog * value);
- AnsiString __fastcall GetSessionName();
- void __fastcall DoAdd(TLogLineType Type, AnsiString Line,
- void __fastcall (__closure *f)(TLogLineType Type, const AnsiString & Line));
- void __fastcall DoAddToParent(TLogLineType aType, const AnsiString & aLine);
- void __fastcall DoAddToSelf(TLogLineType aType, const AnsiString & aLine);
- void __fastcall DoAddStartupInfo(TSessionData * Data);
- };
- //---------------------------------------------------------------------------
- #endif
|