| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 | 
							- //---------------------------------------------------------------------------
 
- #ifndef ScriptH
 
- #define ScriptH
 
- //---------------------------------------------------------------------------
 
- #include <time.h>
 
- #include "Option.h"
 
- #include "Terminal.h"
 
- #include "FileOperationProgress.h"
 
- //---------------------------------------------------------------------------
 
- class TTerminal;
 
- class TScript;
 
- class TScriptCommands;
 
- class TStoredSessionList;
 
- class TTerminalList;
 
- //---------------------------------------------------------------------------
 
- class TScriptProgress
 
- {
 
- public:
 
-   TFileOperation Operation;
 
-   TOperationSide Side;
 
-   UnicodeString FileName;
 
-   UnicodeString Directory;
 
-   unsigned int OverallProgress;
 
-   unsigned int FileProgress;
 
-   unsigned int CPS;
 
-   bool Cancel;
 
- };
 
- //---------------------------------------------------------------------------
 
- typedef void __fastcall (__closure *TScriptPrintEvent)(TScript * Script, const UnicodeString Str, bool Error);
 
- typedef void __fastcall (__closure *TScriptSynchronizeStartStop)(TScript * Script,
 
-   const UnicodeString LocalDirectory, const UnicodeString RemoteDirectory,
 
-   const TCopyParamType & CopyParam, int SynchronizeParams);
 
- typedef void __fastcall (__closure *TScriptProgressEvent)(TScript * Script, TScriptProgress & Progress);
 
- //---------------------------------------------------------------------------
 
- class TScriptProcParams : public TOptions
 
- {
 
- public:
 
-   friend class TManagementScript;
 
-   __fastcall TScriptProcParams(UnicodeString ParamsStr);
 
-   __property UnicodeString ParamsStr = { read = FParamsStr };
 
- private:
 
-   UnicodeString FParamsStr;
 
- };
 
- //---------------------------------------------------------------------------
 
- class TScript
 
- {
 
- public:
 
-   enum TBatchMode { BatchOff, BatchOn, BatchAbort, BatchContinue };
 
-   __fastcall TScript(bool LimitedOutput);
 
-   virtual __fastcall ~TScript();
 
-   void __fastcall Command(UnicodeString Cmd);
 
-   void __fastcall Log(TLogLineType Type, UnicodeString Str);
 
-   void __fastcall PrintLine(const UnicodeString Str, bool Error = false);
 
-   void __fastcall StartInteractive();
 
-   void __fastcall Synchronize(const UnicodeString LocalDirectory,
 
-     const UnicodeString RemoteDirectory, const TCopyParamType & CopyParam,
 
-     int SynchronizeParams, TSynchronizeChecklist ** Checklist);
 
-   __property TScriptPrintEvent OnPrint = { read = FOnPrint, write = FOnPrint };
 
-   __property TExtendedExceptionEvent OnShowExtendedException = { read = FOnShowExtendedException, write = FOnShowExtendedException };
 
-   __property TSynchronizeDirectory OnTerminalSynchronizeDirectory = { read = FOnTerminalSynchronizeDirectory, write = FOnTerminalSynchronizeDirectory };
 
-   __property TScriptSynchronizeStartStop OnSynchronizeStartStop = { read = FOnSynchronizeStartStop, write = FOnSynchronizeStartStop };
 
-   __property TScriptProgressEvent OnProgress = { read = FOnProgress, write = FOnProgress };
 
-   __property TCopyParamType CopyParam = { read = FCopyParam, write = SetCopyParam };
 
-   __property int SynchronizeParams = { read = FSynchronizeParams, write = SetSynchronizeParams };
 
-   __property TBatchMode Batch = { read = FBatch };
 
-   __property TTerminal * Terminal = { read = FTerminal };
 
-   __property bool Groups = { read = FGroups, write = FGroups };
 
-   __property bool WantsProgress = { read = FWantsProgress, write = FWantsProgress };
 
- protected:
 
-   TTerminal * FTerminal;
 
-   TScriptCommands * FCommands;
 
-   TScriptPrintEvent FOnPrint;
 
-   TExtendedExceptionEvent FOnShowExtendedException;
 
-   TSynchronizeDirectory FOnTerminalSynchronizeDirectory;
 
-   TScriptSynchronizeStartStop FOnSynchronizeStartStop;
 
-   TScriptProgressEvent FOnProgress;
 
-   TCopyParamType FCopyParam;
 
-   bool FIncludeFileMaskOptionUsed;
 
-   TBatchMode FBatch;
 
-   TBatchMode FInteractiveBatch;
 
-   bool FConfirm;
 
-   bool FInteractiveConfirm;
 
-   bool FEcho;
 
-   bool FFailOnNoMatch;
 
-   int FSynchronizeParams;
 
-   int FSynchronizeMode;
 
-   bool FKeepingUpToDate;
 
-   UnicodeString FSynchronizeIntro;
 
-   bool FLimitedOutput;
 
-   int FSessionReopenTimeout;
 
-   int FInteractiveSessionReopenTimeout;
 
-   bool FGroups;
 
-   bool FWantsProgress;
 
-   TStrings * FPendingLogLines;
 
-   bool FWarnNonDefaultCopyParam;
 
-   bool FWarnNonDefaultSynchronizeParams;
 
-   virtual void __fastcall ResetTransfer();
 
-   virtual void __fastcall ConnectTerminal(TTerminal * ATerminal);
 
-   bool __fastcall EnsureCommandSessionFallback(
 
-     TFSCapability Capability, TSessionAction & Action);
 
-   void __fastcall Print(const UnicodeString Str, bool Error = false);
 
-   void __fastcall CheckSession();
 
-   void __fastcall CheckParams(TScriptProcParams * Parameters);
 
-   void __fastcall CopyParamParams(TCopyParamType & CopyParam, TScriptProcParams * Parameters);
 
-   void __fastcall TransferParamParams(int & Params, TScriptProcParams * Parameters);
 
-   enum TFileListType
 
-   {
 
-     fltDefault =     0x00,
 
-     fltDirectories = 0x01,
 
-     fltQueryServer = 0x02,
 
-     fltMask =        0x04,
 
-     fltLatest =      0x08
 
-   };
 
-   TStrings * __fastcall CreateFileList(TScriptProcParams * Parameters, int Start,
 
-     int End, TFileListType ListType = fltDefault);
 
-   TStrings * __fastcall CreateLocalFileList(TScriptProcParams * Parameters,
 
-     int Start, int End, TFileListType ListType);
 
-   void __fastcall FreeFiles(TStrings * FileList);
 
-   void __fastcall FreeFileList(TStrings * FileList);
 
-   void __fastcall LogPendingLines(TTerminal * ATerminal);
 
-   void __fastcall HelpProc(TScriptProcParams * Parameters);
 
-   void __fastcall CallProc(TScriptProcParams * Parameters);
 
-   void __fastcall PwdProc(TScriptProcParams * Parameters);
 
-   void __fastcall CdProc(TScriptProcParams * Parameters);
 
-   void __fastcall LsProc(TScriptProcParams * Parameters);
 
-   void __fastcall RmProc(TScriptProcParams * Parameters);
 
-   void __fastcall RmDirProc(TScriptProcParams * Parameters);
 
-   void __fastcall MvProc(TScriptProcParams * Parameters);
 
-   void __fastcall CpProc(TScriptProcParams * Parameters);
 
-   void __fastcall ChModProc(TScriptProcParams * Parameters);
 
-   void __fastcall LnProc(TScriptProcParams * Parameters);
 
-   void __fastcall MkDirProc(TScriptProcParams * Parameters);
 
-   void __fastcall GetProc(TScriptProcParams * Parameters);
 
-   void __fastcall PutProc(TScriptProcParams * Parameters);
 
-   void __fastcall OptionProc(TScriptProcParams * Parameters);
 
-   void __fastcall AsciiProc(TScriptProcParams * Parameters);
 
-   void __fastcall BinaryProc(TScriptProcParams * Parameters);
 
-   void __fastcall SynchronizeProc(TScriptProcParams * Parameters);
 
-   void __fastcall KeepUpToDateProc(TScriptProcParams * Parameters);
 
-   void __fastcall EchoProc(TScriptProcParams * Parameters);
 
-   void __fastcall StatProc(TScriptProcParams * Parameters);
 
-   void __fastcall ChecksumProc(TScriptProcParams * Parameters);
 
-   void __fastcall OptionImpl(UnicodeString OptionName, UnicodeString ValueName);
 
-   void __fastcall SynchronizeDirectories(TScriptProcParams * Parameters,
 
-     UnicodeString & LocalDirectory, UnicodeString & RemoteDirectory, int FirstParam);
 
-   virtual bool __fastcall HandleExtendedException(Exception * E,
 
-     TTerminal * Terminal = NULL);
 
-   void __fastcall TerminalCaptureLog(const UnicodeString & AddedLine, TCaptureOutputType OutputType);
 
-   virtual UnicodeString __fastcall GetLogCmd(const UnicodeString & FullCommand,
 
-     const UnicodeString & Command, const UnicodeString & Params);
 
-   void __fastcall SynchronizePreview(
 
-     UnicodeString LocalDirectory, UnicodeString RemoteDirectory,
 
-     TSynchronizeChecklist * Checklist);
 
-   UnicodeString __fastcall SynchronizeFileRecord(
 
-     const UnicodeString & RootDirectory, const TSynchronizeChecklist::TItem * Item,
 
-     bool Local);
 
-   UnicodeString __fastcall ListingSysErrorMessage();
 
-   void __fastcall NoMatch(const UnicodeString & Mask, const UnicodeString & Error);
 
- private:
 
-   void __fastcall Init();
 
-   void __fastcall SetCopyParam(const TCopyParamType & value);
 
-   void __fastcall SetSynchronizeParams(int value);
 
-   TTransferMode __fastcall ParseTransferModeName(UnicodeString Name);
 
-   inline bool __fastcall IsTerminalLogging(TTerminal * ATerminal);
 
-   void __fastcall CheckDefaultCopyParam();
 
-   bool __fastcall HasNonDefaultCopyParams();
 
-   void __fastcall CheckDefaultSynchronizeParams();
 
-   void __fastcall NotSupported();
 
-   void __fastcall CheckMultiFilesToOne(TStrings * FileList, const UnicodeString & Target, bool Unix);
 
-   void __fastcall LogOption(const UnicodeString & LogStr);
 
-   void __fastcall DoMvOrCp(TScriptProcParams * Parameters, TFSCapability Capability, bool Cp);
 
- };
 
- //---------------------------------------------------------------------------
 
- typedef void __fastcall (__closure *TScriptInputEvent)(TScript * Script, const UnicodeString Prompt, UnicodeString & Str);
 
- typedef void __fastcall (__closure *TScriptQueryCancelEvent)(TScript * Script, bool & Cancel);
 
- typedef void __fastcall (__closure *TScriptPrintProgressEvent)(TScript * Script, bool First, const UnicodeString Str);
 
- //---------------------------------------------------------------------------
 
- class TManagementScript : public TScript
 
- {
 
- public:
 
-   __fastcall TManagementScript(TStoredSessionList * StoredSessions, bool LimitedOutput);
 
-   virtual __fastcall ~TManagementScript();
 
-   void __fastcall Connect(const UnicodeString Session, TOptions * Options, bool CheckParams);
 
-   void __fastcall ReflectSettings();
 
-   void __fastcall MaskPasswordInCommandLine(UnicodeString & Command, bool Recurse);
 
-   __property TScriptInputEvent OnInput = { read = FOnInput, write = FOnInput };
 
-   __property TScriptQueryCancelEvent OnQueryCancel = { read = FOnQueryCancel, write = FOnQueryCancel };
 
-   __property TPromptUserEvent OnTerminalPromptUser = { read = FOnTerminalPromptUser, write = FOnTerminalPromptUser };
 
-   __property TQueryUserEvent OnTerminalQueryUser = { read = FOnTerminalQueryUser, write = FOnTerminalQueryUser };
 
-   __property TScriptPrintProgressEvent OnPrintProgress = { read = FOnPrintProgress, write = FOnPrintProgress };
 
-   __property bool Continue = { read = FContinue };
 
- protected:
 
-   TScriptInputEvent FOnInput;
 
-   TScriptQueryCancelEvent FOnQueryCancel;
 
-   TPromptUserEvent FOnTerminalPromptUser;
 
-   TQueryUserEvent FOnTerminalQueryUser;
 
-   TScriptPrintProgressEvent FOnPrintProgress;
 
-   TStoredSessionList * FStoredSessions;
 
-   TTerminalList * FTerminalList;
 
-   UnicodeString FLastProgressFile;
 
-   UnicodeString FLastProgressMessage;
 
-   time_t FLastProgressTime;
 
-   time_t FLastProgressEventTime;
 
-   bool FContinue;
 
-   virtual void __fastcall ResetTransfer();
 
-   void __fastcall Input(const UnicodeString Prompt, UnicodeString & Str, bool AllowEmpty);
 
-   void __fastcall TerminalInformation(TTerminal * Terminal, const UnicodeString & Str,
 
-     bool Status, int Phase);
 
-   void __fastcall TerminalOperationProgress(TFileOperationProgressType & ProgressData);
 
-   void __fastcall TerminalOperationFinished(TFileOperation Operation, TOperationSide Side,
 
-     bool Temp, const UnicodeString & FileName, Boolean Success,
 
-     TOnceDoneOperation & OnceDoneOperation);
 
-   void __fastcall PrintActiveSession();
 
-   TTerminal * __fastcall FindSession(const UnicodeString Index);
 
-   void __fastcall FreeTerminal(TTerminal * Terminal);
 
-   void __fastcall PrintProgress(bool First, const UnicodeString Str);
 
-   bool __fastcall QueryCancel();
 
-   void __fastcall TerminalSynchronizeDirectory(const UnicodeString LocalDirectory,
 
-     const UnicodeString RemoteDirectory, bool & Continue, bool Collect);
 
-   void __fastcall DoChangeLocalDirectory(UnicodeString Directory);
 
-   void __fastcall DoClose(TTerminal * Terminal);
 
-   virtual bool __fastcall HandleExtendedException(Exception * E,
 
-     TTerminal * Terminal = NULL);
 
-   void __fastcall TerminalPromptUser(TTerminal * Terminal, TPromptKind Kind,
 
-     UnicodeString Name, UnicodeString Instructions, TStrings * Prompts,
 
-     TStrings * Results, bool & Result, void * Arg);
 
-   void __fastcall TerminalInitializeLog(TObject * Sender);
 
-   inline bool __fastcall Synchronizing();
 
-   inline void __fastcall ShowPendingProgress();
 
-   virtual UnicodeString __fastcall GetLogCmd(const UnicodeString & FullCommand,
 
-     const UnicodeString & Command, const UnicodeString & Params);
 
-   UnicodeString __fastcall MaskPasswordInCommand(const UnicodeString & FullCommand,
 
-     const UnicodeString & Command);
 
-   void __fastcall ExitProc(TScriptProcParams * Parameters);
 
-   void __fastcall OpenProc(TScriptProcParams * Parameters);
 
-   void __fastcall CloseProc(TScriptProcParams * Parameters);
 
-   void __fastcall SessionProc(TScriptProcParams * Parameters);
 
-   void __fastcall LPwdProc(TScriptProcParams * Parameters);
 
-   void __fastcall LCdProc(TScriptProcParams * Parameters);
 
-   void __fastcall LLsProc(TScriptProcParams * Parameters);
 
- };
 
- //---------------------------------------------------------------------------
 
- #endif
 
 
  |