globalscape/python/aml_analysis/CGMFT_Connectivity.aml

788 lines
61 KiB
Plaintext
Raw Permalink Normal View History

2022-04-27 14:05:07 -05:00
<AMTASK>
<AMTASKHEAD>
<TASKINFO TASKVERSION="10.7.100.1" />
</AMTASKHEAD>
<AMTASKVARIABLES>
<AMTASKVARIABLE NAME="TaskPublisher" DESCRIPTION="The publisher associated with subscriber targeted by this task." />
<AMTASKVARIABLE NAME="TaskPublisherRoot" DESCRIPTION="The root part of the publisher." />
<AMTASKVARIABLE NAME="TaskPublisherPrefix" DESCRIPTION="The prefix of publisher." />
<AMTASKVARIABLE NAME="TaskMonitorRootFolder" DESCRIPTION="The root folder of the monitor file structure." />
<AMTASKVARIABLE NAME="TaskConfigFileRootFolder" DESCRIPTION="The root path where the new configuration XML files will be located." />
<AMTASKVARIABLE NAME="TaskLogFilePath" DESCRIPTION="The location of the logfile for this process." />
<AMTASKVARIABLE NAME="TaskDataFilePath" DESCRIPTION="The location of the logfile for this process." />
<AMTASKVARIABLE NAME="TaskPartner" DESCRIPTION="The partner of the XML being processed." />
<AMTASKVARIABLE NAME="TaskConnectionMethod" DESCRIPTION="The AML used to connect to endpoint or host." />
<AMTASKVARIABLE NAME="TaskEndpointType" DESCRIPTION="The type of endpoint or host." />
<AMTASKVARIABLE NAME="TaskAddress" DESCRIPTION="The address of the endpoint or host." />
<AMTASKVARIABLE NAME="TaskAccessKey" DESCRIPTION="The account/username to access endpoint or host." />
<AMTASKVARIABLE NAME="TaskSecretKey" DESCRIPTION="The secret key/password to access endpoint or host." />
<AMTASKVARIABLE NAME="TaskUrl" DESCRIPTION="The url of endpoint." />
<AMTASKVARIABLE NAME="TaskCertificate" DESCRIPTION="The location of the certificate to used to access endpoint or host." />
<AMTASKVARIABLE NAME="TaskCommandConnect" DESCRIPTION="The static connection details needed for command line calls." />
<AMTASKVARIABLE NAME="TaskResultConnection" DESCRIPTION="The result of the connection attempt." />
<AMTASKVARIABLE NAME="TaskDoListing" DESCRIPTION="Whether or not to do a listing of each destination listed in the XML(s)." />
<AMTASKVARIABLE NAME="TaskTargetDestinations" DESCRIPTION="The target destination at endpoint or host." TYPE="array" XSIZE="1" YSIZE="1" />
<AMTASKVARIABLE NAME="TaskPort" DESCRIPTION="The port used to make the connection." />
<AMTASKVARIABLE NAME="TaskConfigSshKeyFolder" DESCRIPTION="The folder that contains the SSH keys." />
<AMTASKVARIABLE NAME="TaskFtpSession" DESCRIPTION="The FTP session for the current XML." />
<AMTASKVARIABLE NAME="TaskSecretPassphrase" DESCRIPTION="The secret passphrase for the current XML." />
<AMTASKVARIABLE NAME="TaskProxy" DESCRIPTION="The proxy type for the current XML." />
<AMTASKVARIABLE NAME="TaskSshKey" DESCRIPTION="The SSH key for the current XML." />
<AMTASKVARIABLE NAME="TaskSpUsername" DESCRIPTION="The SharePoint username from environmental variables." />
<AMTASKVARIABLE NAME="TaskSpPassword" DESCRIPTION="The SharePoint password from environmental variables." />
<AMTASKVARIABLE NAME="TaskXmlConfigFilePath" DESCRIPTION="The folder that contains the XML config files." />
<AMTASKVARIABLE NAME="TaskXmlSession" DESCRIPTION="The session for reading the XML config file." />
<AMTASKVARIABLE NAME="TaskEnvProxyPort" DESCRIPTION="The proxy port from environmental variables." />
<AMTASKVARIABLE NAME="TaskEnvProxyHost" DESCRIPTION="The proxy host from environmental variables." />
<AMTASKVARIABLE NAME="TaskEnvProxyType" DESCRIPTION="The proxy type from environmental variables." />
<AMTASKVARIABLE NAME="HandlerSmtpPort" DESCRIPTION="The email server port from environmental variables." />
<AMTASKVARIABLE NAME="HandlerSmtpHost" DESCRIPTION="The email server host from environmental variables." />
<AMTASKVARIABLE NAME="HandlerSmtpUsername" DESCRIPTION="The email server username from environmental variables." />
<AMTASKVARIABLE NAME="HandlerSmtpPassword" DESCRIPTION="The email server password from environmental variables." />
<AMTASKVARIABLE NAME="TaskWorkingLogPath" DESCRIPTION="The path to the temporary working folder." />
<AMTASKVARIABLE NAME="TaskTempLogPath" DESCRIPTION="The path to the temporary working log folder." />
<AMTASKVARIABLE NAME="TaskEmailTable" DESCRIPTION="The HTML body for the table portion of the email." />
<AMTASKVARIABLE NAME="TaskEmailListing" DESCRIPTION="The HTML body for the file listing portion of the email." />
<AMTASKVARIABLE NAME="TaskEmailFiles" DESCRIPTION="The HTML body for the file portion of the email." />
<AMTASKVARIABLE NAME="TaskAdminPath" DESCRIPTION="The path to the administrative folder that contains the monitor and timer folders." />
<AMTASKVARIABLE NAME="TaskFromEmail" DESCRIPTION="The email address the result email will originate from, pulled from environmental variables." />
</AMTASKVARIABLES>
<AMFUNCTION NAME="Main" ACCESS="private" RETURNTYPE="variable">
<!-- AMREGION="Overview" LENGTH="1" COLLAPSE="no" -->
<!-- ----------------------------------------------------------------------------------
Current Version: 1.0.2
Last Updated : April 22nd, 2020
Author : Wendy Hartley
Change Log
1.0.0 [01/30/2020] Initial version
1.0.1 [01/31/2020] Added slash for S3 listing to show files
1.0.2 [04/22/2020] Added capability to test SFTP connectivity (JNHC)
---------------------------------------------------------------------------------- -->
<!-- Identify XMLs to check -->
<!-- SUB XMLs -->
<!-- SFTP -->
<!--
<AMVARIABLE NAME="xmlConfigScope" VALUE="iLASR4_sub.xml" TYPE="text" ISPARAMETER="YES" />
--><!-- S3 -->
<!--
<AMVARIABLE NAME="xmlConfigScope" VALUE="eESIS3_sub.xml" TYPE="text" ISPARAMETER="YES" />
--><!-- File System -->
<!--
<AMVARIABLE NAME="xmlConfigScope" VALUE="iTESTWTC50_sub.xml" TYPE="text" ISPARAMETER="YES" />
--><!-- SharePoint -->
<!--
<AMVARIABLE NAME="xmlConfigScope" VALUE="iQMRTSUB3_sub.xml" TYPE="text" ISPARAMETER="YES" />
--><!-- Blob -->
<!--
<AMVARIABLE NAME="xmlConfigScope" VALUE="iSEISMIC2_sub.xml" TYPE="text" ISPARAMETER="YES" />
--><!-- PUB XMLs -->
<!--
<AMVARIABLE NAME="xmlConfigScope" VALUE="iQMRT6_PUB.xml" TYPE="text" ISPARAMETER="YES" />
--><AMVARIABLE NAME="doListing" VALUE="YES" TYPE="text" ISPARAMETER="YES" />
<AMVARIABLE NAME="toEmailAddress" VALUE="" TYPE="text" ISPARAMETER="YES" />
<AMVARIABLE NAME="xmlConfigScope" VALUE="*.xml" TYPE="text" ISPARAMETER="YES" />
<AMVARIABLE NAME="csvFileName">CGMFT_Connectivity_Results-%EVENT_DATESTAMP%-%EVENT_TIMESTAMP%-%CreateGUID()%.csv</AMVARIABLE>
<AMVARIABLE NAME="logFileName">CGMFT_Connectivity-%EVENT_DATESTAMP%-%EVENT_TIMESTAMP%-%CreateGUID()%.log</AMVARIABLE>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskDoListing">%doListing%</AMVARIABLE>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailTable" VALUE="&lt;br/&gt;&lt;table border=&quot;1&quot;&gt;&lt;tr&gt;&lt;td colspan=&quot;5&quot; align=&quot;center&quot;&gt;&lt;b&gt;&lt;h3&gt;Connection Test Results&lt;/h3&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailTable">%TaskEmailTable%&lt;tr&gt;&lt;td align="left"&gt;&lt;b&gt;XML Path&lt;/b&gt;&lt;/td&gt;&lt;td align="left"&gt;&lt;b&gt;Partner&lt;/b&gt;&lt;/td&gt;&lt;td align="left"&gt;&lt;b&gt;Endpoint Type&lt;/b&gt;&lt;/td&gt;&lt;td align="left"&gt;&lt;b&gt;Address&lt;/b&gt;&lt;/td&gt;&lt;td align="left"&gt;&lt;b&gt;Connection&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;</AMVARIABLE>
<AMVARIABLE NAME="eventName" TYPE="text">%EVENT_NAME%</AMVARIABLE>
<AMVARIABLE NAME="objectToList" VALUE="" TYPE="text" />
<AMVARIABLE NAME="xmlConfigFilePath" VALUE="N/A" />
<AMVARIABLE NAME="xmlType" VALUE="" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_ADMIN_PATH" RESULTVARIABLE="TaskAdminPath" TYPE="user" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_WORKING_PATH" RESULTVARIABLE="TaskWorkingLogPath" TYPE="user" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_LOG_FOLDER" RESULTVARIABLE="TaskTempLogPath" TYPE="user" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskDataFilePath">%TaskWorkingLogPath%\Logs\%csvFileName%</AMVARIABLE>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskDataFilePath%" DATA="XML Path,Partner,Endpoint Type,AML for Connection,Address,Url (optional),Certificate (optional),Connection" APPEND="no" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskLogFilePath">%TaskWorkingLogPath%\Logs\%logFileName%</AMVARIABLE>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%" DATA="Starting..." APPEND="no" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_SSH_KEY_PATH" RESULTVARIABLE="TaskConfigSshKeyFolder" TYPE="user" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_CONFIG_PATH" RESULTVARIABLE="TaskConfigFileRootFolder" TYPE="user" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_SP_USERNAME" RESULTVARIABLE="TaskSpUsername" TYPE="user" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_SP_PASSWORD" RESULTVARIABLE="TaskSpPassword" TYPE="user" />
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%GetProxyFromEnv(UCase(SITE_NAME))%" />
<AMVARIABLE AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="RUN_FROM_TEMP_FOLDER" NAME="filePath">%FS_PATH%</AMVARIABLE>
<AMIF EXPRESSION="%filePath% &lt;&gt; &quot;Physical Path&quot;">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%" DATA="XMLs provided via file dropoff" />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Path: %filePath%</AMFILESYSTEM>
<AMFILESYSTEM ACTIVITY="move" SOURCE="%filePath%" DEST="%TaskWorkingLogPath%\CGMFT_Connectivity_TEMP_%FS_FILE_NAME%" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="filePath">%TaskWorkingLogPath%\CGMFT_Connectivity_TEMP_%FS_FILE_NAME%</AMVARIABLE>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Moved file to working directory: %filePath%</AMFILESYSTEM>
<AMIF ACTIVITY="contains_text" TEXT="%eventName%" SUBSTRING="Folder Monitor">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailFiles">%TaskEmailFiles%&lt;br/&gt;%filePath%</AMVARIABLE>
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%TestXml(filePath)%" />
</AMIF>
<AMIF ACTIVITY="contains_text" TEXT="%eventName%" SUBSTRING="Verified Upload">
<AMVARIABLE NAME="listData" VALUE="" />
<AMVARIABLE NAME="fileLocation" VALUE="" />
<AMLOOP ACTIVITY="filecontents" FILE="%filePath%" RESULTVARIABLE="listData">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="fileLocation">%TaskConfigFileRootFolder%\%listData%</AMVARIABLE>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailFiles">%TaskEmailFiles%&lt;br/&gt;%listData%</AMVARIABLE>
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%TestXml(fileLocation)%" />
</AMLOOP>
</AMIF>
<AMFILESYSTEM ACTIVITY="delete" AM_ONERROR="CONTINUE" SOURCE="%filePath%" />
<AMLABEL ACTIVITY="goto" LABELNAME="EXIT_CGMFT_CONNECTIVITY" />
</AMIF>
<AMLABEL LABELNAME="RUN_FROM_TEMP_FOLDER" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskConfigFileRootFolder">%TaskAdminPath%\Connectivity_Test_TM</AMVARIABLE>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">XMLs provided via folder %TaskConfigFileRootFolder%</AMFILESYSTEM>
<!-- Loop through Config directory for PUB/SUB XMLs requested and populate array -->
<AMLOOP ACTIVITY="folder" FOLDER="%TaskConfigFileRootFolder%/%xmlConfigScope%" RESULTVARIABLE="xmlConfigFilePath">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailFiles">%TaskEmailFiles%&lt;br/&gt;%xmlConfigFilePath%</AMVARIABLE>
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%TestXml(xmlConfigFilePath)%" />
</AMLOOP>
<AMLABEL LABELNAME="EXIT_CGMFT_CONNECTIVITY" />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%" DATA="Completed." />
<AMIF EXPRESSION="%toEmailAddress% &lt;&gt; &quot;&quot;">
<AMTASK ACTIVITY="call_function" AM_ONERROR="CONTINUE" FUNCTIONNAME="%SendEmail(toEmailAddress)%" />
</AMIF>
<AMFILESYSTEM ACTIVITY="move" SOURCE="%TaskLogFilePath%" DEST="%TaskTempLogPath%\%logFileName%" />
<AMFILESYSTEM ACTIVITY="move" SOURCE="%TaskDataFilePath%" DEST="%TaskTempLogPath%\%csvFileName%" />
</AMFUNCTION>
<AMFUNCTION NAME="OnStepStart" ACCESS="private">
<AMPARAMETER NAME="FunctionName" DESCRIPTION="The function that is starting the step" SUBTYPE="text" />
<AMPARAMETER NAME="StepNumber" DESCRIPTION="The step number that is about to execute" SUBTYPE="number" />
</AMFUNCTION>
<AMFUNCTION NAME="OnStepEnd" ACCESS="private">
<AMPARAMETER NAME="FunctionName" DESCRIPTION="The function that is ending the step" SUBTYPE="text" />
<AMPARAMETER NAME="StepNumber" DESCRIPTION="The step number that is about to end" SUBTYPE="number" />
</AMFUNCTION>
<AMFUNCTION NAME="OnStepError" ACCESS="private">
<AMPARAMETER NAME="FunctionName" DESCRIPTION="The function with the error" SUBTYPE="text" />
<AMPARAMETER NAME="StepNumber" DESCRIPTION="The step number of the error" SUBTYPE="number" />
<AMPARAMETER NAME="ErrorText" DESCRIPTION="The text of the error" SUBTYPE="text" />
<AMPARAMETER NAME="ErrorCode" DESCRIPTION="The code of the error" SUBTYPE="number" />
</AMFUNCTION>
<AMFUNCTION NAME="OnTaskFailure" ACCESS="private">
<AMPARAMETER NAME="FunctionName" DESCRIPTION="The function causing the task failure" SUBTYPE="text" />
<AMPARAMETER NAME="StepNumber" DESCRIPTION="The step number causing the task failure" SUBTYPE="number" />
<AMPARAMETER NAME="ErrorText" DESCRIPTION="The text of the error" SUBTYPE="text" />
<AMPARAMETER NAME="ErrorCode" DESCRIPTION="The code of the error" SUBTYPE="number" />
</AMFUNCTION>
<AMFUNCTION NAME="OnTaskStart" ACCESS="private">
<AMPARAMETER NAME="Reason" DESCRIPTION="The reason the task is starting" SUBTYPE="text" />
</AMFUNCTION>
<AMFUNCTION NAME="OnTaskEnd" ACCESS="private">
<AMPARAMETER NAME="Reason" DESCRIPTION="The reason the task is ending" SUBTYPE="text" />
</AMFUNCTION>
<AMFUNCTION NAME="S3Command">
<AMPARAMETER NAME="commandType" DESCRIPTION="The type of command to be performed" />
<AMPARAMETER NAME="objectToList" REQUIRED="NO" />
<AMVARIABLE NAME="s3CommandLine" VALUE="" />
<AMVARIABLE NAME="s3ReturnCode" VALUE="0" TYPE="number" />
<AMVARIABLE NAME="s3Output" VALUE="" />
<AMVARIABLE NAME="s3DestinationFilePath" VALUE="" />
<AMVARIABLE NAME="errorId" VALUE="0" TYPE="number" />
<AMVARIABLE NAME="errorMessage" VALUE="" TYPE="text" />
<AMSELECTCASE EXPRESSION="%commandType%" AM_ONERROR="CONTINUE">
<AMCASE CONSTANT="Initialize">
<!-- Set Amazon CLI environment variables with access key & secret key. -->
<AMENVVARS ACTIVITY="set" AM_ONERROR="CONTINUE" NAME="AWS_ACCESS_KEY_ID" TYPE="process" VALUE="%TaskAccessKey%" />
<AMENVVARS ACTIVITY="set" AM_ONERROR="CONTINUE" NAME="AWS_SECRET_ACCESS_KEY" TYPE="process" VALUE="%TaskSecretKey%" />
<!-- Set connection details for delivery call -->
<!-- Add endpoint if required -->
<AMIF EXPRESSION="%TaskUrl% &lt;&gt; &quot;&quot;">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskCommandConnect"> --endpoint-url=%TaskUrl%</AMVARIABLE>
</AMIF>
<!-- Add certificate if required -->
<AMIF EXPRESSION="%TaskCertificate% &lt;&gt; &quot;&quot;">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskCommandConnect">%TaskCommandConnect% --ca-bundle %TaskCertificate%</AMVARIABLE>
</AMIF>
</AMCASE>
<AMCASE CONSTANT="Listing">
<!-- Build aws S3 command line for file. -->
<AMVARIABLE ACTIVITY="set" VARIABLENAME="s3CommandLine">aws s3 ls "s3://%objectToList%/"%TaskCommandConnect%</AMVARIABLE>
<!-- Run aws S3 command line for file. -->
<AMRUN AM_SETVAR="errorId;%AMError.ErrorNumber%;errorMessage;%AMError.ErrorDesc%" AM_ONERROR="CONTINUE" FILE="%s3CommandLine%" DEFAULTFOLDER="C:\Program Files\Amazon\AWSCLI" WAITFOREND="YES" RESULTVARIABLE="s3ReturnCode" DOS="YES" OUTPUTVARIABLE="s3Output" />
<!-- Check s3ReturnCode -->
<AMIF EXPRESSION="%s3ReturnCode% &lt;&gt; 0 OR %errorId% &lt;&gt; 0">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="errorMessage">Error connecting to %objectToList%. Command: %s3CommandLine%. Error: %errorId% - %errorMessage%. S3 Return code: %s3ReturnCode%. S3 Output: %s3Output%</AMVARIABLE>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskResultConnection">Failure</AMVARIABLE>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Command: %s3CommandLine &amp; VbCrLf%S3 Output: %VbCrLf &amp; s3Output%</AMFILESYSTEM>
<AMLABEL ACTIVITY="goto" LABELNAME="EXIT_S3_COMMAND" />
<AMELSE />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Command: %s3CommandLine &amp; VbCrLf%S3 Output: %VbCrLf &amp; s3Output%</AMFILESYSTEM>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskResultConnection">Successful</AMVARIABLE>
</AMIF>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailListing">%TaskEmailListing%&lt;br/&gt;%VbCrLf &amp; s3Output%</AMVARIABLE>
</AMCASE>
</AMSELECTCASE>
<!-- EXIT -->
<AMLABEL LABELNAME="EXIT_S3_COMMAND" />
<AMIF EXPRESSION="%errorId% &lt;&gt; 0">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">%objectToList%: %errorId% - %errorMessage%</AMFILESYSTEM>
</AMIF>
</AMFUNCTION>
<AMFUNCTION NAME="BlobCommand">
<AMPARAMETER NAME="commandType" DESCRIPTION="The type of command to be performed" />
<AMPARAMETER NAME="objectToList" REQUIRED="NO" />
<AMVARIABLE NAME="blobOutput" VALUE="" />
<AMVARIABLE NAME="errorId" VALUE="0" TYPE="number" />
<AMVARIABLE NAME="errorMessage" VALUE="" TYPE="text" />
<AMSELECTCASE EXPRESSION="%commandType%" AM_ONERROR="CONTINUE">
<AMCASE CONSTANT="Listing">
<!-- Do listing -->
<AMAZURESTORAGE ACTIVITY="list_blobs" ACCOUNTNAME="%TaskAccessKey%" ACCESSKEY="%TaskSecretKey%" RESULTDATASET="myBlob" CONTAINER="%objectToList%" LISTING="All" AM_ONERROR="CONTINUE" AM_SETVAR="errorId;%AMError.ErrorNumber%;errorMessage;%AMError.ErrorDesc%" />
<!-- Check if any errors -->
<AMIF EXPRESSION="%errorId% = 0">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="blobOutput">Endpoint: %objectToList &amp; VbCrLf%Listing:</AMVARIABLE>
<!-- Check if a result set was returned -->
<AMIF EXPRESSION="%myBlob.TotalRows% &gt; 0">
<AMLOOP ACTIVITY="dataset" DATASET="myBlob">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="blobOutput">%blobOutput &amp; VbCrLf &amp; myBlob.LastModifiedUTC% %myBlob.Length% %myBlob.Name%</AMVARIABLE>
</AMLOOP>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskResultConnection">Successful</AMVARIABLE>
</AMIF>
<AMELSE />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskResultConnection">Failure</AMVARIABLE>
<AMLABEL ACTIVITY="goto" LABELNAME="EXIT_BLOB_COMMAND" />
</AMIF>
</AMCASE>
</AMSELECTCASE>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">%blobOutput%</AMFILESYSTEM>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailListing">%TaskEmailListing%&lt;br/&gt;%blobOutput%</AMVARIABLE>
<!-- EXIT -->
<AMLABEL LABELNAME="EXIT_BLOB_COMMAND" />
<AMIF EXPRESSION="%errorId% &lt;&gt; 0">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">%objectToList%: %errorId% - %errorMessage%</AMFILESYSTEM>
</AMIF>
</AMFUNCTION>
<AMFUNCTION NAME="SFTPCommand">
<AMPARAMETER NAME="commandType" />
<AMPARAMETER NAME="objectToList" REQUIRED="NO" />
<AMVARIABLE NAME="secretKey" VALUE="" />
<AMVARIABLE NAME="secretPassphrase" VALUE="" />
<AMVARIABLE NAME="sftpError" VALUE="None" />
<AMSELECTCASE EXPRESSION="%commandType%" AM_ONERROR="CONTINUE">
<AMCASE CONSTANT="Logon">
<AMVARIABLE ACTIVITY="set" AM_ONERROR="CONTINUE" VARIABLENAME="secretKey">%Decrypt64(TaskSecretKey, TaskPartner)%</AMVARIABLE>
<AMVARIABLE ACTIVITY="set" AM_ONERROR="CONTINUE" VARIABLENAME="secretPassphrase">%Decrypt64(TaskSecretPassphrase, TaskPartner)%</AMVARIABLE>
<AMVARIABLE ACTIVITY="set" AM_ONERROR="CONTINUE" VARIABLENAME="TaskFtpSession">FtpSession_%TaskXmlConfigFilePath%</AMVARIABLE>
<AMIF EXPRESSION="%TaskProxy% &lt;&gt; &quot;site&quot;">
<AMIF EXPRESSION="%TaskSshKey% &lt;&gt; &quot;&quot;">
<!-- Initiate internal key authentication connection (logonIndex 8) -->
<AMFTP ACTIVITY="logon" AM_SETVAR="sftpError;&quot;SFTP Logon Failure&quot;" AM_ONERROR="CONTINUE" SERVER="%TaskAddress%" USERNAME="%TaskAccessKey%" PASSWORD="AM4UWlE2nWJ3rG7/zpSDeTSUCvFDmYyET9gaME" TYPE="sftp_public_key" PORT="%TaskPort%" PRIVATEKEYFILE="%TaskConfigSshKeyFolder%\%TaskSshKey%" PASSPHRASE="AM4aaugTz9HRgb+neXq1JFpz6QcMbaODqrJ8lHvcNEjMfg=aME" SESSION="%TaskFtpSession%" />
<AMELSE />
<!-- Initiate internal password authentication connection (logonIndex 4) -->
<AMFTP ACTIVITY="logon" AM_SETVAR="sftpError;&quot;SFTP Logon Failure&quot;" AM_ONERROR="CONTINUE" SERVER="%TaskAddress%" USERNAME="%TaskAccessKey%" PASSWORD="AM4oaeWPtHSqlHHaakGMRa8mV9UtSRmkgkRaME" TYPE="sftp" PORT="%TaskPort%" TIMEOUT="15" SFTPAUTHTYPE="Password" PROXYTYPE="socks5" PROXYSERVER="%TaskEnvProxyHost%" PROXYPORT="%TaskEnvProxyPort%" SESSION="%TaskFtpSession%" />
</AMIF>
<AMELSE />
<AMIF EXPRESSION="%TaskSshKey% &lt;&gt; &quot;&quot;">
<!-- Initiate external key authentication connection (logonIndex 56) -->
<AMFTP ACTIVITY="logon" AM_SETVAR="sftpError;&quot;SFTP Logon Failure&quot;" AM_ONERROR="CONTINUE" SERVER="%TaskAddress%" USERNAME="%TaskAccessKey%" PASSWORD="AM4zve9pjfyfZwNSerwarzJnsEcK6cG7XpXaME" TYPE="sftp_public_key" PORT="%TaskPort%" TIMEOUT="15" PRIVATEKEYFILE="%TaskConfigSshKeyFolder%\%TaskSshKey%" PASSPHRASE="AM49rHmFI9mRPhSJ+alZPCKxgO9JAA2NbC51kvU/dH/3dg=aME" PROXYTYPE="socks5" PROXYSERVER="%TaskEnvProxyHost%" PROXYPORT="%TaskEnvProxyPort%" SESSION="%TaskFtpSession%" />
<AMELSE />
<!-- Initiate external password authentication connection -->
<AMFTP ACTIVITY="logon" AM_SETVAR="sftpError;&quot;SFTP Logon Failure&quot;" AM_ONERROR="CONTINUE" SERVER="%TaskAddress%" USERNAME="%TaskAccessKey%" PASSWORD="AM4c2U0fCWsg0UpOJFU6iMQ8mCObcqoUDRsaME" TYPE="sftp" PORT="%TaskPort%" TIMEOUT="15" SFTPAUTHTYPE="Password" PROXYTYPE="socks5" PROXYSERVER="%TaskEnvProxyHost%" PROXYPORT="%TaskEnvProxyPort%" SESSION="%TaskFtpSession%" />
</AMIF>
</AMIF>
<AMIF EXPRESSION="%sftpError% = &quot;None&quot;">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskResultConnection" VALUE="Successful" />
<AMELSE />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskResultConnection">%sftpError%</AMVARIABLE>
</AMIF>
</AMCASE>
<AMCASE CONSTANT="Listing">
<AMVARIABLE NAME="longList" VALUE="" />
<AMFTP ACTIVITY="change_folder" AM_SETVAR="sftpError;&quot;SFTP Change Folder Failure&quot;" AM_ONERROR="CONTINUE" FOLDER="%objectToList%" SESSION="%TaskFtpSession%" />
<AMFTP ACTIVITY="advanced" AM_SETVAR="sftpError;&quot;SFTP List Folder Failure&quot;" AM_ONERROR="CONTINUE" FTPCOMMAND="long_list" RESULTVARIABLE="longList" FTPLONGLISTDATASET="longListDS" SESSION="%TaskFtpSession%" />
<AMIF EXPRESSION="%sftpError% &lt;&gt; &quot;None&quot;">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Error for directory %objectToList% : %sftpError%</AMFILESYSTEM>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailListing">%TaskEmailListing%&lt;br/&gt;Error for directory %objectToList% : %sftpError%</AMVARIABLE>
<AMELSE />
<AMVARIABLE ACTIVITY="set" AM_ONERROR="CONTINUE" VARIABLENAME="TaskEmailListing">%TaskEmailListing%&lt;br/&gt;Listing files for %TaskAddress% %objectToList%</AMVARIABLE>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Listing files for %TaskAddress% %objectToList%</AMFILESYSTEM>
<AMLOOP ACTIVITY="dataset" DATASET="longListDS">
<AMFILESYSTEM ACTIVITY="write_file" AM_ONERROR="CONTINUE" FILE="%TaskLogFilePath%">%longListDS.FTPFileName% %longListDS.FTPFileSize% %longListDS.FTPFileDate%</AMFILESYSTEM>
<AMVARIABLE ACTIVITY="set" AM_ONERROR="CONTINUE" VARIABLENAME="TaskEmailListing">%TaskEmailListing%&lt;br/&gt;%longListDS.FTPFileName% %longListDS.FTPFileSize% %longListDS.FTPFileDate%</AMVARIABLE>
</AMLOOP>
</AMIF>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="sftpError" VALUE="None" />
</AMCASE>
<AMCASE CONSTANT="Logoff">
<AMFTP ACTIVITY="logoff" AM_ONERROR="CONTINUE" SESSION="%TaskFtpSession%" />
</AMCASE>
</AMSELECTCASE>
</AMFUNCTION>
<AMFUNCTION NAME="ExtractPubXml">
<AMPARAMETER NAME="xmlConfigFilePath" />
<AMVARIABLE NAME="addOnKey" VALUE="" />
<AMVARIABLE NAME="addOnType" VALUE="" />
<AMVARIABLE NAME="rootFolder" VALUE="" />
<AMVARIABLE NAME="hostsNode" VALUE="" />
<AMVARIABLE NAME="sshKeyRootPath" VALUE="" />
<AMVARIABLE NAME="targetDestination" VALUE="" />
<AMVARIABLE NAME="errorId" VALUE="0" TYPE="number" />
<AMVARIABLE NAME="errorMessage" VALUE="" TYPE="text" />
<!-- Open XML File -->
<AMVARIABLE ACTIVITY="set" AM_ONERROR="CONTINUE" VARIABLENAME="TaskXmlSession">XmlSession_%xmlConfigFilePath%</AMVARIABLE>
<AMXML AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" FILE="%xmlConfigFilePath%" SESSION="%TaskXmlSession%" />
<AMXML ACTIVITY="node_to_dataset" AM_SETVAR="errorId;%AMError.ErrorNumber%" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Publisher/AddOns/AddOn" DATASETTYPE="xpath" RESULTDATASET="addOnDS" />
<AMIF EXPRESSION="errorId &lt;&gt; 0">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="errorMessage" VALUE="No delivery AddOn." />
<AMLABEL ACTIVITY="goto" LABELNAME="EXIT_EXTRACT_SUB_DATA" />
</AMIF>
<AMIF EXPRESSION="%addOnDS.TotalRows% &gt; 0">
<AMLOOP ACTIVITY="dataset" DATASET="addOnDS">
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnDS.Value%" ATTRNAME="type" RESULTVARIABLE="addOnType" />
<AMIF EXPRESSION="%addOnType% = &quot;pull&quot;">
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnDS.Value%" ATTRNAME="AML" RESULTVARIABLE="TaskConnectionMethod" />
<AMIF EXPRESSION="%LCase(TaskConnectionMethod)% = &quot;cgmft_delivery_file&quot;" USECOMPLEXUI="YES">
<AMXML ACTIVITY="node_to_dataset" AM_SETVAR="errorId;%AMError.ErrorNumber%" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Publisher/AddOns/AddOn/Parameter" DATASETTYPE="xpath" RESULTDATASET="addOnTuplesDS" />
<AMVARIABLE NAME="keyValue" VALUE="" />
<AMLOOP ACTIVITY="dataset" DATASET="addOnTuplesDS">
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnTuplesDS.Value%" ATTRNAME="Key" RESULTVARIABLE="keyValue" />
<AMIF EXPRESSION="%keyValue% = &quot;root_folder&quot;">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEndpointType" VALUE="FileSystem" />
<!-- Pull subscriber name here since FileSystem only reads this section -->
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher" ATTRNAME="Name" RESULTVARIABLE="TaskPartner" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnTuplesDS.Value%" ATTRNAME="Value" RESULTVARIABLE="rootFolder" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskAddress">%rootFolder%</AMVARIABLE>
</AMIF>
</AMLOOP>
</AMIF>
</AMIF>
</AMLOOP>
</AMIF>
<AMIF EXPRESSION="%LCase(TaskConnectionMethod)% = &quot;cgmft_pull_sftp&quot; OR %LCase(TaskConnectionMethod)% = &quot;cgmft_pull_ftp&quot;" USECOMPLEXUI="YES">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEndpointType" VALUE="SFTP" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher" ATTRNAME="Name" RESULTVARIABLE="TaskPartner" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher/Hosts/Host/UserName" RESULTVARIABLE="TaskAccessKey" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Publisher/Hosts/Host/Password" RESULTVARIABLE="TaskSecretKey" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Publisher/Hosts/Host/SshPrivateKeyFile" RESULTVARIABLE="TaskSshKey" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Publisher/Hosts/Host/SshKeyPassphrase" RESULTVARIABLE="TaskSecretPassphrase" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Publisher/Hosts/Host/Proxy" ATTRNAME="type" RESULTVARIABLE="TaskProxy" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher/Hosts/Host/Address" RESULTVARIABLE="TaskAddress" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher/Hosts/Host/Port" RESULTVARIABLE="TaskPort" />
</AMIF>
<AMIF EXPRESSION="%LCase(TaskConnectionMethod)% = &quot;cgmft_pull_sharepoint&quot;" USECOMPLEXUI="YES">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEndpointType" VALUE="SharePoint" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher" ATTRNAME="Name" RESULTVARIABLE="TaskPartner" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher/Hosts/SharePoint/Site" RESULTVARIABLE="TaskUrl" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Publisher/Hosts/SharePoint/DocLibrary" RESULTVARIABLE="TaskAddress" />
</AMIF>
<AMIF EXPRESSION="%LCase(TaskConnectionMethod)% = &quot;cgmft_pull_object_storage&quot; OR %LCase(TaskConnectionMethod)% = &quot;cgmft_pull_s3_cli&quot;" USECOMPLEXUI="YES">
<!-- Extract Partner name -->
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher" ATTRNAME="Name" RESULTVARIABLE="TaskPartner" />
<!-- Extract endpoint details to make connection -->
<AMXML ACTIVITY="read_node" AM_SETVAR="errorId;%AMError.ErrorNumber%;errorMessage;%AMError.ErrorDesc%" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher/Endpoints/Endpoint" ATTRNAME="Type" RESULTVARIABLE="TaskEndpointType" />
<AMXML ACTIVITY="read_node" AM_SETVAR="errorId;%AMError.ErrorNumber%;errorMessage;%AMError.ErrorDesc%" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher/Endpoints/Endpoint/Address" RESULTVARIABLE="TaskAddress" />
<AMXML ACTIVITY="read_node" AM_SETVAR="errorId;%AMError.ErrorNumber%;errorMessage;%AMError.ErrorDesc%" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher/Endpoints/Endpoint/AccessKey" RESULTVARIABLE="TaskAccessKey" />
<AMXML ACTIVITY="read_node" AM_SETVAR="errorId;%AMError.ErrorNumber%;errorMessage;%AMError.ErrorDesc%" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Publisher/Endpoints/Endpoint/SecretKey" RESULTVARIABLE="TaskSecretKey" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Publisher/Endpoints/Endpoint/Url" RESULTVARIABLE="TaskUrl" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Publisher/Endpoints/Endpoint/Certificate" RESULTVARIABLE="TaskCertificate" />
<AMIF EXPRESSION="%TaskCertificate% &lt;&gt; &quot;&quot;">
<AMIF ACTIVITY="contains_text" TEXT="%TaskCertificate%" SUBSTRING="\" ACTION="not_contain">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskCertificate">%TaskConfigSshKeyFolder%\%TaskCertificate%</AMVARIABLE>
</AMIF>
</AMIF>
<!-- Decrypt the encrypted secret key/password -->
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskSecretKey">%Decrypt64(TaskSecretKey, TaskPartner)%</AMVARIABLE>
</AMIF>
<AMIF EXPRESSION="%TaskDoListing% = &quot;YES&quot;">
<AMXML ACTIVITY="node_to_dataset" AM_SETVAR="errorId;%AMError.ErrorNumber%" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Publisher/AddOns/AddOn/Parameter" DATASETTYPE="xpath" RESULTDATASET="addOnDS" />
<AMIF EXPRESSION="errorID &lt;&gt; 0">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="errorMessage" VALUE="No delivery AddOn." />
<AMLABEL ACTIVITY="goto" LABELNAME="EXIT_EXTRACT_DATA" />
</AMIF>
<AMIF EXPRESSION="%addOnDS.TotalRows% &gt; 0">
<AMARRAY ACTIVITY="redim" NAME="TaskTargetDestinations" SIZE="%addOnDS.TotalRows%" />
<AMVARIABLE NAME="index" VALUE="1" />
<AMLOOP ACTIVITY="dataset" DATASET="addOnDS">
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnDS.Value%" ATTRNAME="Key" RESULTVARIABLE="addOnKey" />
<AMIF EXPRESSION="%addOnKey% = &quot;outbound_folder&quot;">
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnDS.Value%" ATTRNAME="Value" RESULTVARIABLE="targetDestination" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskTargetDestinations(1, index)">%targetDestination%</AMVARIABLE>
<AMVARIABLE ACTIVITY="increment" RESULTVARIABLE="index" />
</AMIF>
</AMLOOP>
<AMVARIABLE ACTIVITY="decrement" RESULTVARIABLE="index" />
<AMARRAY ACTIVITY="redim" NAME="TaskTargetDestinations" SIZE="%index%" />
</AMIF>
</AMIF>
<!-- EXIT -->
<AMLABEL LABELNAME="EXIT_EXTRACT_SUB_DATA" />
<!-- If an XML session was established, close it. -->
<AMIF EXPRESSION="%TaskXmlSession% &lt;&gt; &quot;&quot;">
<AMXML ACTIVITY="end_session" SESSION="%TaskXmlSession%" AM_ONERROR="CONTINUE" />
</AMIF>
<AMIF EXPRESSION="%errorId% &lt;&gt; 0">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">%xmlConfigFilePath%: %errorId% - %errorMessage%</AMFILESYSTEM>
</AMIF>
</AMFUNCTION>
<AMFUNCTION NAME="FileSystemCommand">
<AMPARAMETER NAME="commandType" />
<AMPARAMETER NAME="objectToList" />
<AMVARIABLE NAME="fileSystemError" VALUE="None" />
<AMSELECTCASE EXPRESSION="%commandType%" AM_ONERROR="CONTINUE">
<AMCASE CONSTANT="Listing">
<AMFILESYSTEM ACTIVITY="get" AM_SETVAR="fileSystemError;&quot;Error retrieving file information.&quot;" AM_ONERROR="CONTINUE" MODE="both" SOURCE="%objectToList%" RESULTDATASET="testDS" FILEPROPERTY="parent" />
<AMIF EXPRESSION="%fileSystemError% &lt;&gt; &quot;None&quot;">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Error for directory %objectToList% : %fileSystemError%</AMFILESYSTEM>
<AMELSE />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Listing files for %objectToList%</AMFILESYSTEM>
<AMIF EXPRESSION="%testDS.TotalRows% &gt; 0">
<AMLOOP ACTIVITY="dataset" DATASET="testDS">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">%testDS.LastWriteTime% %testDS.Size% %testDS.FileName%</AMFILESYSTEM>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailListing">%TaskEmailListing%&lt;br/&gt;%testDS.LastWriteTime% %testDS.Size% %testDS.FileName%</AMVARIABLE>
</AMLOOP>
</AMIF>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskResultConnection" VALUE="Successful" />
</AMIF>
</AMCASE>
</AMSELECTCASE>
<!-- EXIT -->
<AMLABEL LABELNAME="EXIT_FILE_SYSTEM_COMMAND" />
</AMFUNCTION>
<AMFUNCTION NAME="SharePointCommand">
<AMPARAMETER NAME="commandType" />
<AMPARAMETER NAME="objectToList" />
<AMVARIABLE NAME="spError" VALUE="" />
<AMVARIABLE NAME="spPassword" VALUE="" />
<AMVARIABLE ACTIVITY="set" AM_ONERROR="CONTINUE" VARIABLENAME="spPassword">%Decrypt64(TaskSpPassword, TaskSpUsername)%</AMVARIABLE>
<AMSELECTCASE EXPRESSION="%commandType%" AM_ONERROR="CONTINUE">
<AMCASE CONSTANT="Logon">
<AMSHAREPOINT ACTIVITY="create_session" AM_SETVAR="TaskResultConnection;&quot;Failed SharePoint connection&quot;" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="SHAREPOINT_EXIT_LABEL" SITE="%TaskUrl%" AUTHTYPE="basic" USERNAME="%TaskSpUsername%" PASSWORD="AM4mkLm17gWh0ix3shqqmdX9qfJCFmUxO5waME" DOMAIN="CGUSER" TIMEOUT="15" SESSION="SharePointSession_%TaskPartner%" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskResultConnection" VALUE="Successful" />
<AMSHAREPOINT ACTIVITY="get_sites" AM_SETVAR="TaskResultConnection;%AMError.ErrorDesc%" AM_ONERROR="CONTINUE" SESSION="SharePointSession_%TaskPartner%" RESULTDATASET="SharePointFolderSet" />
</AMCASE>
<AMCASE CONSTANT="Listing">
<AMSHAREPOINT ACTIVITY="get_folders" AM_SETVAR="TaskResultConnection;&quot;Failed Connection&quot;" AM_ERRORS="30004,30008,30013" AM_ERROREXCLUDE="YES" AM_ONERROR="CONTINUE" SESSION="SharePointSession_%TaskPartner%" LIBRARY="%objectToList%" RESULTDATASET="SharePointFolderSet" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailListing">%TaskEmailListing%&lt;br/</AMVARIABLE>
<AMLABEL LABELNAME="SHAREPOINT_EXIT_LABEL" />
</AMCASE>
</AMSELECTCASE>
</AMFUNCTION>
<AMFUNCTION NAME="ExtractSubXml">
<AMPARAMETER NAME="xmlConfigFilePath" />
<AMVARIABLE NAME="addOnType" VALUE="" />
<AMVARIABLE NAME="rootFolder" VALUE="" />
<AMVARIABLE NAME="hostsNode" VALUE="" />
<AMVARIABLE NAME="sshKeyRootPath" VALUE="" />
<AMVARIABLE NAME="targetDestination" VALUE="" />
<AMVARIABLE NAME="errorId" VALUE="0" TYPE="number" />
<AMVARIABLE NAME="errorMessage" VALUE="" TYPE="text" />
<!-- Open XML File -->
<AMVARIABLE ACTIVITY="set" AM_ONERROR="CONTINUE" VARIABLENAME="TaskXmlSession">XmlSession_%xmlConfigFilePath%</AMVARIABLE>
<AMXML AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" FILE="%xmlConfigFilePath%" SESSION="%TaskXmlSession%" />
<AMXML ACTIVITY="node_to_dataset" AM_SETVAR="errorId;%AMError.ErrorNumber%" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Subscriber/AddOns/AddOn" DATASETTYPE="xpath" RESULTDATASET="addOnDS" />
<AMIF EXPRESSION="errorId &lt;&gt; 0">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="errorMessage" VALUE="No delivery AddOn." />
<AMLABEL ACTIVITY="goto" LABELNAME="EXIT_SUB_EXTRACT_DATA" />
</AMIF>
<AMIF EXPRESSION="%addOnDS.TotalRows% &gt; 0">
<AMLOOP ACTIVITY="dataset" DATASET="addOnDS">
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnDS.Value%" ATTRNAME="Type" RESULTVARIABLE="addOnType" />
<AMIF EXPRESSION="%addOnType% = &quot;delivery&quot;">
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnDS.Value%" ATTRNAME="AML" RESULTVARIABLE="TaskConnectionMethod" />
<AMIF EXPRESSION="%LCase(TaskConnectionMethod)% = &quot;cgmft_delivery_file&quot;" USECOMPLEXUI="YES">
<AMXML ACTIVITY="node_to_dataset" AM_SETVAR="errorId;%AMError.ErrorNumber%" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Subscriber/AddOns/AddOn/Parameter" DATASETTYPE="xpath" RESULTDATASET="addOnTuplesDS" />
<AMVARIABLE NAME="keyValue" VALUE="" />
<AMLOOP ACTIVITY="dataset" DATASET="addOnTuplesDS">
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnTuplesDS.Value%" ATTRNAME="Key" RESULTVARIABLE="keyValue" />
<AMIF EXPRESSION="%keyValue% = &quot;root_folder&quot;">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEndpointType" VALUE="FileSystem" />
<!-- Pull subscriber name here since FileSystem only reads this section -->
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Subscriber" ATTRNAME="Name" RESULTVARIABLE="TaskPartner" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnTuplesDS.Value%" ATTRNAME="Value" RESULTVARIABLE="rootFolder" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskAddress">%rootFolder%</AMVARIABLE>
</AMIF>
</AMLOOP>
</AMIF>
<!--
<AMIF EXPRESSION="%LCase(TaskConnectionMethod)% = &quot;cgmft_delivery_s3_cli&quot;" USECOMPLEXUI="YES">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEndpointType" VALUE="S3" />
<AMXML ACTIVITY="node_to_dataset" AM_SETVAR="errorId;%AMError.ErrorNumber%" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Subscriber/AddOns/AddOn/Parameter" DATASETTYPE="xpath" RESULTDATASET="addOnTuplesDS" />
<AMVARIABLE NAME="keyValue" VALUE="" />
<AMLOOP ACTIVITY="dataset" DATASET="addOnTuplesDS">
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%addOnTuplesDS.Value%" ATTRNAME="Key" RESULTVARIABLE="keyValue" />
</AMLOOP>
</AMIF>
--> </AMIF>
</AMLOOP>
</AMIF>
<AMIF EXPRESSION="%LCase(TaskConnectionMethod)% = &quot;cgmft_delivery_sftp&quot; OR %LCase(TaskConnectionMethod)% = &quot;cgmft_delivery_ftp&quot;" USECOMPLEXUI="YES">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEndpointType" VALUE="SFTP" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Subscriber" ATTRNAME="Name" RESULTVARIABLE="TaskPartner" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Hosts/Host/UserName" RESULTVARIABLE="TaskAccessKey" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Hosts/Host/Password" RESULTVARIABLE="TaskSecretKey" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Hosts/Host/SshPrivateKeyFile" RESULTVARIABLE="TaskSshKey" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Hosts/Host/SshKeyPassphrase" RESULTVARIABLE="TaskSecretPassphrase" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Hosts/Host/Proxy" ATTRNAME="type" RESULTVARIABLE="TaskProxy" />
<AMVARIABLE NAME="proxySite" VALUE="" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Hosts/Host/Proxy" ATTRNAME="site" RESULTVARIABLE="proxySite" />
<AMIF EXPRESSION="proxySite &lt;&gt; &quot;&quot;">
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%GetProxyFromEnv(proxySite)%" />
</AMIF>
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Hosts/Host/Address" RESULTVARIABLE="TaskAddress" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Hosts/Host/Port" RESULTVARIABLE="TaskPort" />
</AMIF>
<AMIF EXPRESSION="%LCase(TaskConnectionMethod)% = &quot;cgmft_delivery_sharepoint&quot;" USECOMPLEXUI="YES">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEndpointType" VALUE="SharePoint" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Subscriber" ATTRNAME="Name" RESULTVARIABLE="TaskPartner" />
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Hosts/SharePoint/Site" RESULTVARIABLE="TaskUrl" />
<AMXML ACTIVITY="read_node" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Hosts/SharePoint/DocLibrary" RESULTVARIABLE="TaskAddress" />
</AMIF>
<AMIF EXPRESSION="%LCase(TaskConnectionMethod)% = &quot;cgmft_delivery_object_storage&quot;" USECOMPLEXUI="YES">
<!-- Extract Partner name -->
<AMXML ACTIVITY="read_node" SESSION="%TaskXmlSession%" XPATH="/Subscriber" ATTRNAME="Name" RESULTVARIABLE="TaskPartner" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" />
<!-- Extract endpoint details to make connection -->
<AMXML ACTIVITY="read_node" AM_SETVAR="errorId;%AMError.ErrorNumber%;errorMessage;%AMError.ErrorDesc%" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Endpoints/Endpoint" ATTRNAME="Type" RESULTVARIABLE="TaskEndpointType" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" />
<AMXML ACTIVITY="read_node" AM_SETVAR="errorId;%AMError.ErrorNumber%;errorMessage;%AMError.ErrorDesc%" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Endpoints/Endpoint/Address" RESULTVARIABLE="TaskAddress" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" />
<AMXML ACTIVITY="read_node" AM_SETVAR="errorId;%AMError.ErrorNumber%;errorMessage;%AMError.ErrorDesc%" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Endpoints/Endpoint/AccessKey" RESULTVARIABLE="TaskAccessKey" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" />
<AMXML ACTIVITY="read_node" AM_SETVAR="errorId;%AMError.ErrorNumber%;errorMessage;%AMError.ErrorDesc%" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Endpoints/Endpoint/SecretKey" RESULTVARIABLE="TaskSecretKey" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" />
<AMXML ACTIVITY="read_node" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Endpoints/Endpoint/Url" RESULTVARIABLE="TaskUrl" AM_ONERROR="CONTINUE" />
<AMXML ACTIVITY="read_node" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Endpoints/Endpoint/Certificate" RESULTVARIABLE="TaskCertificate" AM_ONERROR="CONTINUE" />
<AMIF EXPRESSION="%TaskCertificate% &lt;&gt; &quot;&quot;">
<AMIF ACTIVITY="contains_text" TEXT="%TaskCertificate%" SUBSTRING="\" ACTION="not_contain">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskCertificate">%TaskConfigSshKeyFolder%\%TaskCertificate%</AMVARIABLE>
</AMIF>
</AMIF>
<!-- Decrypt the encrypted secret key/password -->
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskSecretKey">%Decrypt64(TaskSecretKey, TaskPartner)%</AMVARIABLE>
</AMIF>
<AMIF EXPRESSION="%TaskDoListing% = &quot;YES&quot;">
<AMXML ACTIVITY="node_to_dataset" AM_SETVAR="errorId;%AMError.ErrorNumber%" AM_ONERROR="CONTINUE" SESSION="%TaskXmlSession%" XPATH="/Subscriber/Destinations/Destination" DATASETTYPE="xpath" RESULTDATASET="destinationDS" />
<AMIF EXPRESSION="errorID &lt;&gt; 0">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="errorMessage" VALUE="No delivery destinations." />
<AMLABEL ACTIVITY="goto" LABELNAME="EXIT_EXTRACT_DATA" />
</AMIF>
<AMIF EXPRESSION="%destinationDS.TotalRows% &gt; 0">
<AMARRAY ACTIVITY="redim" NAME="TaskTargetDestinations" SIZE="%destinationDS.TotalRows%" />
<AMVARIABLE NAME="index" VALUE="1" />
<AMLOOP ACTIVITY="dataset" DATASET="destinationDS">
<AMXML ACTIVITY="read_node" AM_ONERROR="GOTOLABEL" AM_GOTOLABEL="EXIT_EXTRACT_SUB_DATA" SESSION="%TaskXmlSession%" XPATH="%destinationDS.Value%" ATTRNAME="Target" RESULTVARIABLE="targetDestination" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskTargetDestinations(1, index)">%targetDestination%</AMVARIABLE>
<AMVARIABLE ACTIVITY="increment" RESULTVARIABLE="index" />
</AMLOOP>
</AMIF>
</AMIF>
<!--
</AMCASE>
--><!-- EXIT -->
<AMLABEL LABELNAME="EXIT_EXTRACT_SUB_DATA" />
<!-- If an XML session was established, close it. -->
<AMIF EXPRESSION="%TaskXmlSession% &lt;&gt; &quot;&quot;">
<AMXML ACTIVITY="end_session" SESSION="%TaskXmlSession%" AM_ONERROR="CONTINUE" />
</AMIF>
<AMIF EXPRESSION="%errorId% &lt;&gt; 0">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">%xmlConfigFilePath%: %errorId% - %errorMessage%</AMFILESYSTEM>
</AMIF>
</AMFUNCTION>
<AMFUNCTION NAME="ResetVariables">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskAddress" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskAccessKey" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskCertificate" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskConnectionMethod" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEndpointType" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskPartner" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskPort" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskProxy" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskPublisher" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskResultConnection" VALUE="Unsupported" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskSecretKey" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskSecretPassphrase" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskSshKey" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskUrl" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskXmlConfigFilePath" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskXmlSession" />
<AMARRAY ACTIVITY="redim" NAME="TaskTargetDestinations" SIZE="1" />
</AMFUNCTION>
<AMFUNCTION NAME="GetProxyFromEnv">
<AMPARAMETER NAME="targetSite" />
<AMVARIABLE NAME="targetNode" VALUE="" />
<AMIF EXPRESSION="targetSite = &quot;&quot;">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="targetSite" VALUE="TRUSTED" />
</AMIF>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Getting proxy for site %targetSite%</AMFILESYSTEM>
<AMVARIABLE NAME="xmlSourceForProxies" VALUE="" />
<AMVARIABLE NAME="xPathQuery" VALUE="" />
<AMTEXT ACTIVITY="replace" TEXT="%targetSite%" FIND=" " REPLACE="_" RESULTVARIABLE="targetSite" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="targetNode" AM_ONERROR="CONTINUE">%UCase(GetComputerName())%</AMVARIABLE>
<AMENVVARS NAME="CGMFT_PROXY" RESULTVARIABLE="xmlSourceForProxies" TYPE="user" AM_ONERROR="CONTINUE" />
<AMIF EXPRESSION="%xmlSourceForProxies% = &quot;&quot;">
<AMLABEL ACTIVITY="goto" LABELNAME="EXIT_GETPROXYFROMENV" />
</AMIF>
<AMXML XMLDOCUMENTFROM="text" XMLTEXT="%xmlSourceForProxies%" SESSION="SourceForProxiesSession" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEnvProxyHost" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEnvProxyPort" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEnvProxyType" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="xPathQuery">//Proxy/%targetNode%/%targetSite%</AMVARIABLE>
<AMXML ACTIVITY="read_node" AM_SETVAR="TaskErrorNumber;%AMError.ErrorNumber%;TaskErrorDesc;%AMError.ErrorDesc%;TaskErrorId;55290" SESSION="SourceForProxiesSession" XPATH="%xPathQuery%" ATTRNAME="port" RESULTVARIABLE="TaskEnvProxyPort" AM_ERRORS="28020" AM_ERROREXCLUDE="YES" AM_ONERROR="CONTINUE" />
<AMXML ACTIVITY="read_node" AM_SETVAR="TaskErrorNumber;%AMError.ErrorNumber%;TaskErrorDesc;%AMError.ErrorDesc%;TaskErrorId;55291" SESSION="SourceForProxiesSession" XPATH="%xPathQuery%" ATTRNAME="type" RESULTVARIABLE="TaskEnvProxyType" AM_ERRORS="28020" AM_ERROREXCLUDE="YES" AM_ONERROR="CONTINUE" />
<AMXML ACTIVITY="read_node" AM_SETVAR="TaskErrorNumber;%AMError.ErrorNumber%;TaskErrorDesc;%AMError.ErrorDesc%;TaskErrorId;55292" SESSION="SourceForProxiesSession" XPATH="%xPathQuery%" ATTRNAME="proxy" RESULTVARIABLE="TaskEnvProxyHost" AM_ERRORS="28020" AM_ERROREXCLUDE="YES" AM_ONERROR="CONTINUE" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="xPathQuery">//Proxy/%targetNode%</AMVARIABLE>
<AMIF EXPRESSION="%TaskEnvProxyPort% = &quot;&quot;">
<AMXML ACTIVITY="read_node" AM_SETVAR="TaskErrorNumber;%AMError.ErrorNumber%;TaskErrorDesc;%AMError.ErrorDesc%;TaskErrorId;55293" SESSION="SourceForProxiesSession" XPATH="%xPathQuery%" ATTRNAME="port" RESULTVARIABLE="TaskEnvProxyPort" AM_ERRORS="28020" AM_ERROREXCLUDE="YES" AM_ONERROR="CONTINUE" />
</AMIF>
<AMIF EXPRESSION="%TaskEnvProxyType% = &quot;&quot;">
<AMXML ACTIVITY="read_node" AM_SETVAR="TaskErrorNumber;%AMError.ErrorNumber%;TaskErrorDesc;%AMError.ErrorDesc%;TaskErrorId;55294" SESSION="SourceForProxiesSession" XPATH="%xPathQuery%" ATTRNAME="type" RESULTVARIABLE="TaskEnvProxyType" AM_ERRORS="28020" AM_ERROREXCLUDE="YES" AM_ONERROR="CONTINUE" />
</AMIF>
<AMIF EXPRESSION="%TaskEnvProxyHost% = &quot;&quot;">
<AMXML ACTIVITY="read_node" AM_SETVAR="TaskErrorNumber;%AMError.ErrorNumber%;TaskErrorDesc;%AMError.ErrorDesc%;TaskErrorId;55295" SESSION="SourceForProxiesSession" XPATH="%xPathQuery%" ATTRNAME="proxy" RESULTVARIABLE="TaskEnvProxyHost" AM_ERRORS="28020" AM_ERROREXCLUDE="YES" AM_ONERROR="CONTINUE" />
</AMIF>
<AMXML ACTIVITY="end_session" SESSION="SourceForProxiesSession" />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Proxy Host [%TaskEnvProxyHost%] Port [%TaskEnvProxyPort%] Type [%TaskEnvProxyType%]</AMFILESYSTEM>
<AMLABEL LABELNAME="EXIT_GETPROXYFROMENV" />
</AMFUNCTION>
<AMFUNCTION NAME="TestXml">
<AMPARAMETER NAME="xmlConfigFilePath" />
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%ResetVariables()%" />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">%xmlConfigFilePath%</AMFILESYSTEM>
<AMVARIABLE NAME="objectToList" VALUE="" TYPE="text" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskXmlConfigFilePath">%xmlConfigFilePath%</AMVARIABLE>
<AMIF ACTIVITY="contains_text" TEXT="%xmlConfigFilePath%" SUBSTRING=".*sub.xml$" USERE="YES">
<!-- Extract Subscriber Details -->
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%ExtractSubXml(xmlConfigFilePath)%" />
<AMELSE />
<AMIF ACTIVITY="contains_text" TEXT="%xmlConfigFilePath%" SUBSTRING=".*pub.xml$" USERE="YES">
<!-- Extract Publisher Details -->
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%ExtractPubXml(xmlConfigFilePath)%" />
<!--
<AMBREAK />
--> <AMELSE />
<!-- Invalid XML File -->
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">%xmlConfigFilePath% - not a valid XML file.</AMFILESYSTEM>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskResultConnection" VALUE="Invalid XML" />
<!--
<AMBREAK />
--> </AMIF>
</AMIF>
<!-- Attempt connection depending upon delivery method -->
<AMSELECTCASE EXPRESSION="%TaskEndpointType%">
<AMCASE CONSTANT="SFTP">
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%SFTPCommand(&quot;Logon&quot;, TaskAddress)%" />
</AMCASE>
<AMCASE CONSTANT="SharePoint">
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%SharePointCommand(&quot;Logon&quot;, TaskAddress)%" />
</AMCASE>
<AMCASE CONSTANT="FileSystem">
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%FileSystemCommand(&quot;Listing&quot;, TaskAddress)%" />
</AMCASE>
<AMCASE CONSTANT="S3">
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%S3Command(&quot;Initialize&quot;)%" />
<!-- Specify to list TaskAddress -->
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%S3Command(&quot;Listing&quot;,TaskAddress)%" />
</AMCASE>
<AMCASE CONSTANT="Blob">
<!-- Specify to list TaskAddress -->
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%BlobCommand(&quot;Listing&quot;,TaskAddress)%" />
</AMCASE>
<AMCASE>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">%xmlConfigFilePath% - Invalid endpoint type or endpoint type not working yet for this process.</AMFILESYSTEM>
</AMCASE>
</AMSELECTCASE>
<!-- Loop through destination folders for file listings -->
<AMIF EXPRESSION="%TaskResultConnection% = &quot;Successful&quot; AND %TaskDoListing% = &quot;YES&quot;">
<!--
<AMVARIABLE NAME="objectToList" VALUE="" TYPE="text" />
--> <AMLOOP ACTIVITY="array" ARRAY="TaskTargetDestinations" RESULTVARIABLE="objectToList">
<AMIF EXPRESSION="TaskEndpointType &lt;&gt; &quot;SFTP&quot;">
<AMIF EXPRESSION="TaskEndpointType &lt;&gt; &quot;SharePoint&quot;">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="objectToList">%TaskAddress &amp; objectToList%</AMVARIABLE>
</AMIF>
</AMIF>
<AMSELECTCASE EXPRESSION="%TaskEndpointType%">
<AMCASE CONSTANT="SFTP">
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%SFTPCommand(&quot;Listing&quot;,objectToList)%" />
</AMCASE>
<AMCASE CONSTANT="SharePoint">
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%SharePointCommand(&quot;Listing&quot;, objectToList)%" />
</AMCASE>
<AMCASE CONSTANT="FileSystem">
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%FileSystemCommand(&quot;Listing&quot;, objectToList)%" />
</AMCASE>
<AMCASE CONSTANT="S3">
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%S3Command(&quot;Listing&quot;,objectToList)%" />
</AMCASE>
<AMCASE CONSTANT="Blob">
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%BlobCommand(&quot;Listing&quot;,objectToList)%" />
</AMCASE>
</AMSELECTCASE>
</AMLOOP>
</AMIF>
<AMIF EXPRESSION="%TaskEndpointType% = &quot;SFTP&quot;">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskDataFilePath%">%xmlConfigFilePath%,%TaskPartner%,%TaskEndpointType%,%TaskConnectionMethod%,%TaskAddress%,%TaskUrl%,%TaskCertificate%,%TaskResultConnection%</AMFILESYSTEM>
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailTable">%TaskEmailTable%&lt;tr&gt;&lt;td align="left"&gt;%xmlConfigFilePath%&lt;/td&gt;&lt;td align="left"&gt;%TaskPartner%&lt;/td&gt;&lt;td align="left"&gt;%TaskEndpointType%&lt;/td&gt;&lt;td align="left"&gt;%TaskAddress%&lt;/td&gt;&lt;td align="left"&gt;%TaskResultConnection%&lt;/td&gt;&lt;/tr&gt;</AMVARIABLE>
<AMTASK ACTIVITY="call_function" AM_ONERROR="CONTINUE" FUNCTIONNAME="%SFTPCommand(&quot;Logoff&quot;)%" />
<AMTASK ACTIVITY="call_function" FUNCTIONNAME="%GetProxyFromEnv(UCase(SITE_NAME))%" />
<AMELSE />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailTable">%TaskEmailTable%&lt;tr&gt;&lt;td align="left"&gt;%xmlConfigFilePath%&lt;/td&gt;&lt;td align="left"&gt;%TaskPartner%&lt;/td&gt;&lt;td align="left"&gt;%TaskEndpointType%&lt;/td&gt;&lt;td align="left"&gt;%TaskAddress%&lt;/td&gt;&lt;td align="left"&gt;%TaskResultConnection%&lt;/td&gt;&lt;/tr&gt;</AMVARIABLE>
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskDataFilePath%">%xmlConfigFilePath%,%TaskPartner%,%TaskEndpointType%,%TaskConnectionMethod%,%TaskAddress%,%TaskUrl%,%TaskCertificate%,%TaskResultConnection%</AMFILESYSTEM>
</AMIF>
</AMFUNCTION>
<AMFUNCTION NAME="SendEmail">
<AMPARAMETER NAME="toEmailAddress" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_EMAIL_FROM_ADDRESS" RESULTVARIABLE="TaskFromEmail" TYPE="user" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_SMTP_HOST" RESULTVARIABLE="HandlerSmtpHost" TYPE="user" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_SMTP_PORT" RESULTVARIABLE="HandlerSmtpPort" TYPE="user" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_SMTP_USERNAME" RESULTVARIABLE="HandlerSmtpUserName" TYPE="user" />
<AMENVVARS AM_ONERROR="CONTINUE" NAME="CGMFT_SMTP_PASSWORD" RESULTVARIABLE="HandlerSmtpPassword" TYPE="user" />
<AMVARIABLE NAME="emailError" VALUE="" />
<AMVARIABLE ACTIVITY="set" VARIABLENAME="TaskEmailTable">%TaskEmailTable%&lt;/table&gt;&lt;br/&gt;</AMVARIABLE>
<!-- Decrypt SMTP host password -->
<AMIF EXPRESSION="%HandlerSmtpPassword% &lt;&gt; &quot;&quot;">
<AMVARIABLE ACTIVITY="set" VARIABLENAME="HandlerSmtpPassword">%Decrypt64(HandlerSmtpPassword, HandlerSmtpUserName)%</AMVARIABLE>
</AMIF>
<AMIF EXPRESSION="%HandlerSmtpUserName% = &quot;&quot;">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Sending email to %toEmailAddress% via system</AMFILESYSTEM>
<AMEMAIL ACTIVITY="send" AM_SETVAR="emailError;%AMError.ErrorDesc%" AM_ONERROR="CONTINUE" FROM="%TaskFromEmail%" TO="%toEmailAddress%" SUBJECT="Connectivity Test Result" HTML="YES">%TaskEmailTable%&lt;br/&gt;
File Listing:
%TaskEmailListing%&lt;br/&gt;&lt;br/&gt;
XMLs Requested:
%TaskEmailFiles%&lt;br/&gt;</AMEMAIL>
<AMELSE />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Sending email to %toEmailAddress% via env smtp</AMFILESYSTEM>
<AMEMAIL ACTIVITY="send" AM_SETVAR="emailError;%AMError.ErrorDesc%" AM_ONERROR="CONTINUE" SERVER="%HandlerSmtpHost%" PORT="%HandlerSmtpPort%" USERNAME="%HandlerSmtpUserName%" PASSWORD="AM4ILuzxn6si3Q5nMbKntFUYTatSO9HX8tvCpDczyjCnno=aME" SECURITY="explicit" IGNOREINVALIDCERTIFICATE="YES" FROM="%TaskFromEmail%" TO="%toEmailAddress%" SUBJECT="Connectivity Test Result" HTML="YES">%TaskEmailTable%&lt;br/&gt;
File Listing:
%TaskEmailListing%&lt;br/&gt;&lt;br/&gt;
XMLs Requested:
%TaskEmailFiles%&lt;br/&gt;</AMEMAIL>
</AMIF>
<AMIF EXPRESSION="emailError &lt;&gt; &quot;&quot;">
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%">Error sending email: %emailError%</AMFILESYSTEM>
<AMELSE />
<AMFILESYSTEM ACTIVITY="write_file" FILE="%TaskLogFilePath%" DATA="Email successfully sent" />
</AMIF>
</AMFUNCTION>
</AMTASK>