Script.h 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. //---------------------------------------------------------------------------
  2. #ifndef ScriptH
  3. #define ScriptH
  4. //---------------------------------------------------------------------------
  5. #include <time.h>
  6. #include "Option.h"
  7. #include "Terminal.h"
  8. #include "FileOperationProgress.h"
  9. //---------------------------------------------------------------------------
  10. class TTerminal;
  11. class TScript;
  12. class TScriptCommands;
  13. class TStoredSessionList;
  14. class TTerminalList;
  15. //---------------------------------------------------------------------------
  16. typedef void __fastcall (__closure *TScriptPrintEvent)(TScript * Script, const AnsiString Str);
  17. typedef void __fastcall (__closure *TScriptSynchronizeStartStop)(TScript * Script,
  18. const AnsiString LocalDirectory, const AnsiString RemoteDirectory,
  19. const TCopyParamType & CopyParam, int SynchronizeParams);
  20. //---------------------------------------------------------------------------
  21. class TScriptProcParams : public TOptions
  22. {
  23. public:
  24. __fastcall TScriptProcParams(AnsiString ParamsStr);
  25. __property AnsiString ParamsStr = { read = FParamsStr };
  26. private:
  27. AnsiString FParamsStr;
  28. };
  29. //---------------------------------------------------------------------------
  30. class TScript
  31. {
  32. public:
  33. enum TBatchMode { BatchOff, BatchOn, BatchAbort, BatchContinue };
  34. __fastcall TScript(bool LimitedOutput);
  35. virtual __fastcall ~TScript();
  36. void __fastcall Command(AnsiString Cmd);
  37. void __fastcall Synchronize(const AnsiString LocalDirectory,
  38. const AnsiString RemoteDirectory, const TCopyParamType & CopyParam,
  39. int SynchronizeParams, TSynchronizeChecklist ** Checklist);
  40. __property TScriptPrintEvent OnPrint = { read = FOnPrint, write = FOnPrint };
  41. __property TExtendedExceptionEvent OnShowExtendedException = { read = FOnShowExtendedException, write = FOnShowExtendedException };
  42. __property TSynchronizeDirectory OnTerminalSynchronizeDirectory = { read = FOnTerminalSynchronizeDirectory, write = FOnTerminalSynchronizeDirectory };
  43. __property TScriptSynchronizeStartStop OnSynchronizeStartStop = { read = FOnSynchronizeStartStop, write = FOnSynchronizeStartStop };
  44. __property TCopyParamType CopyParam = { read = FCopyParam, write = SetCopyParam };
  45. __property int SynchronizeParams = { read = FSynchronizeParams, write = SetSynchronizeParams };
  46. __property TBatchMode Batch = { read = FBatch };
  47. __property TTerminal * Terminal = { read = FTerminal };
  48. protected:
  49. TTerminal * FTerminal;
  50. TScriptCommands * FCommands;
  51. TScriptPrintEvent FOnPrint;
  52. TExtendedExceptionEvent FOnShowExtendedException;
  53. TSynchronizeDirectory FOnTerminalSynchronizeDirectory;
  54. TScriptSynchronizeStartStop FOnSynchronizeStartStop;
  55. TCopyParamType FCopyParam;
  56. TBatchMode FBatch;
  57. bool FConfirm;
  58. bool FEcho;
  59. int FSynchronizeParams;
  60. int FSynchronizeMode;
  61. bool FKeepingUpToDate;
  62. AnsiString FSynchronizeIntro;
  63. bool FLimitedOutput;
  64. int FSessionReopenTimeout;
  65. virtual void __fastcall ResetTransfer();
  66. virtual void __fastcall ConnectTerminal(TTerminal * Terminal);
  67. bool __fastcall EnsureCommandSessionFallback(TFSCapability Capability);
  68. void __fastcall Print(const AnsiString Str);
  69. void __fastcall PrintLine(const AnsiString Str);
  70. void __fastcall CheckSession();
  71. void __fastcall CheckParams(TScriptProcParams * Parameters);
  72. void __fastcall CopyParamParams(TCopyParamType & CopyParam, TScriptProcParams * Parameters);
  73. void __fastcall TransferParamParams(int & Params, TScriptProcParams * Parameters);
  74. enum TFileListType
  75. {
  76. fltDefault = 0x00,
  77. fltDirectories = 0x01,
  78. fltQueryServer = 0x02,
  79. fltMask = 0x04
  80. };
  81. TStrings * __fastcall CreateFileList(TScriptProcParams * Parameters, int Start,
  82. int End, TFileListType ListType = fltDefault);
  83. TStrings * __fastcall CreateLocalFileList(TScriptProcParams * Parameters,
  84. int Start, int End, TFileListType ListType);
  85. void __fastcall FreeFileList(TStrings * FileList);
  86. void __fastcall HelpProc(TScriptProcParams * Parameters);
  87. void __fastcall CallProc(TScriptProcParams * Parameters);
  88. void __fastcall PwdProc(TScriptProcParams * Parameters);
  89. void __fastcall CdProc(TScriptProcParams * Parameters);
  90. void __fastcall LsProc(TScriptProcParams * Parameters);
  91. void __fastcall RmProc(TScriptProcParams * Parameters);
  92. void __fastcall RmDirProc(TScriptProcParams * Parameters);
  93. void __fastcall MvProc(TScriptProcParams * Parameters);
  94. void __fastcall ChModProc(TScriptProcParams * Parameters);
  95. void __fastcall LnProc(TScriptProcParams * Parameters);
  96. void __fastcall MkDirProc(TScriptProcParams * Parameters);
  97. void __fastcall GetProc(TScriptProcParams * Parameters);
  98. void __fastcall PutProc(TScriptProcParams * Parameters);
  99. void __fastcall OptionProc(TScriptProcParams * Parameters);
  100. void __fastcall AsciiProc(TScriptProcParams * Parameters);
  101. void __fastcall BinaryProc(TScriptProcParams * Parameters);
  102. void __fastcall SynchronizeProc(TScriptProcParams * Parameters);
  103. void __fastcall KeepUpToDateProc(TScriptProcParams * Parameters);
  104. void __fastcall OptionImpl(AnsiString OptionName, AnsiString ValueName);
  105. void __fastcall SynchronizeDirectories(TScriptProcParams * Parameters,
  106. AnsiString & LocalDirectory, AnsiString & RemoteDirectory, int FirstParam);
  107. virtual bool __fastcall HandleExtendedException(Exception * E,
  108. TTerminal * Terminal = NULL);
  109. void __fastcall TerminalCaptureLog(const AnsiString & AddedLine, bool StdError);
  110. private:
  111. void __fastcall Init();
  112. void __fastcall SetCopyParam(const TCopyParamType & value);
  113. void __fastcall SetSynchronizeParams(int value);
  114. };
  115. //---------------------------------------------------------------------------
  116. typedef void __fastcall (__closure *TScriptInputEvent)(TScript * Script, const AnsiString Prompt, AnsiString & Str);
  117. typedef void __fastcall (__closure *TScriptQueryCancelEvent)(TScript * Script, bool & Cancel);
  118. typedef void __fastcall (__closure *TScriptPrintProgressEvent)(TScript * Script, bool First, const AnsiString Str);
  119. //---------------------------------------------------------------------------
  120. class TManagementScript : public TScript
  121. {
  122. public:
  123. __fastcall TManagementScript(TStoredSessionList * StoredSessions, bool LimitedOutput);
  124. virtual __fastcall ~TManagementScript();
  125. void __fastcall Connect(const AnsiString Session, TOptions * Options, bool CheckParams);
  126. __property TScriptInputEvent OnInput = { read = FOnInput, write = FOnInput };
  127. __property TScriptQueryCancelEvent OnQueryCancel = { read = FOnQueryCancel, write = FOnQueryCancel };
  128. __property TPromptUserEvent OnTerminalPromptUser = { read = FOnTerminalPromptUser, write = FOnTerminalPromptUser };
  129. __property TQueryUserEvent OnTerminalQueryUser = { read = FOnTerminalQueryUser, write = FOnTerminalQueryUser };
  130. __property TScriptPrintProgressEvent OnPrintProgress = { read = FOnPrintProgress, write = FOnPrintProgress };
  131. __property bool Continue = { read = FContinue };
  132. protected:
  133. TScriptInputEvent FOnInput;
  134. TScriptQueryCancelEvent FOnQueryCancel;
  135. TPromptUserEvent FOnTerminalPromptUser;
  136. TQueryUserEvent FOnTerminalQueryUser;
  137. TScriptPrintProgressEvent FOnPrintProgress;
  138. TStoredSessionList * FStoredSessions;
  139. TTerminalList * FTerminalList;
  140. AnsiString FLastProgressFile;
  141. AnsiString FLastProgressMessage;
  142. time_t FLastProgressTime;
  143. bool FContinue;
  144. virtual void __fastcall ResetTransfer();
  145. void __fastcall Input(const AnsiString Prompt, AnsiString & Str, bool AllowEmpty);
  146. void __fastcall TerminalInformation(TTerminal * Terminal, const AnsiString & Str,
  147. bool Status, bool Active);
  148. void __fastcall TerminalOperationProgress(TFileOperationProgressType & ProgressData,
  149. TCancelStatus & Cancel);
  150. void __fastcall TerminalOperationFinished(TFileOperation Operation, TOperationSide Side,
  151. bool Temp, const AnsiString & FileName, Boolean Success,
  152. TOnceDoneOperation & OnceDoneOperation);
  153. void __fastcall PrintActiveSession();
  154. TTerminal * __fastcall FindSession(const AnsiString Index);
  155. void __fastcall FreeTerminal(TTerminal * Terminal);
  156. void __fastcall PrintProgress(bool First, const AnsiString Str);
  157. bool __fastcall QueryCancel();
  158. void __fastcall TerminalSynchronizeDirectory(const AnsiString LocalDirectory,
  159. const AnsiString RemoteDirectory, bool & Continue, bool Collect);
  160. void __fastcall DoConnect(const AnsiString & Session, TOptions * Options,
  161. bool CheckParams);
  162. void __fastcall DoChangeLocalDirectory(AnsiString Directory);
  163. void __fastcall DoClose(TTerminal * Terminal);
  164. virtual bool __fastcall HandleExtendedException(Exception * E,
  165. TTerminal * Terminal = NULL);
  166. void __fastcall TerminalPromptUser(TTerminal * Terminal, TPromptKind Kind,
  167. AnsiString Name, AnsiString Instructions, TStrings * Prompts,
  168. TStrings * Results, bool & Result, void * Arg);
  169. inline bool __fastcall Synchronizing();
  170. inline void __fastcall ShowPendingProgress();
  171. void __fastcall ExitProc(TScriptProcParams * Parameters);
  172. void __fastcall OpenProc(TScriptProcParams * Parameters);
  173. void __fastcall CloseProc(TScriptProcParams * Parameters);
  174. void __fastcall SessionProc(TScriptProcParams * Parameters);
  175. void __fastcall LPwdProc(TScriptProcParams * Parameters);
  176. void __fastcall LCdProc(TScriptProcParams * Parameters);
  177. void __fastcall LLsProc(TScriptProcParams * Parameters);
  178. };
  179. //---------------------------------------------------------------------------
  180. #endif