예제 #1
0
        private void ValidateStopToken(IExecutionContext context, string stopToken)
        {
#if OS_WINDOWS
            var envContext = context.ExpressionValues["env"] as DictionaryContextData;
#else
            var envContext = context.ExpressionValues["env"] as CaseSensitiveDictionaryContextData;
#endif
            var allowUnsecureStopCommandTokens = false;
            allowUnsecureStopCommandTokens = StringUtil.ConvertToBoolean(Environment.GetEnvironmentVariable(Constants.Variables.Actions.AllowUnsupportedStopCommandTokens));
            if (!allowUnsecureStopCommandTokens && envContext.ContainsKey(Constants.Variables.Actions.AllowUnsupportedStopCommandTokens))
            {
                allowUnsecureStopCommandTokens = StringUtil.ConvertToBoolean(envContext[Constants.Variables.Actions.AllowUnsupportedStopCommandTokens].ToString());
            }

            bool isTokenInvalid = _registeredCommands.Contains(stopToken) ||
                                  string.IsNullOrEmpty(stopToken) ||
                                  string.Equals(stopToken, "pause-logging", StringComparison.OrdinalIgnoreCase);

            if (isTokenInvalid)
            {
                var telemetry = new JobTelemetry
                {
                    Message = $"Invoked ::stopCommand:: with token: [{stopToken}]",
                    Type    = JobTelemetryType.ActionCommand
                };
                context.JobTelemetry.Add(telemetry);
            }

            if (isTokenInvalid && !allowUnsecureStopCommandTokens)
            {
                throw new Exception(Constants.Runner.UnsupportedStopCommandTokenDisabled);
            }
        }
예제 #2
0
 private void LoadFromTelemetryFile(List <JobTelemetry> jobTelemetry)
 {
     try
     {
         var telemetryFilePath = HostContext.GetConfigFile(WellKnownConfigFile.Telemetry);
         if (File.Exists(telemetryFilePath))
         {
             var telemetryData = File.ReadAllText(telemetryFilePath, Encoding.UTF8);
             var telemetry     = new JobTelemetry
             {
                 Message = $"Runner File Telemetry:\n{telemetryData}",
                 Type    = JobTelemetryType.General
             };
             jobTelemetry.Add(telemetry);
             IOUtil.DeleteFile(telemetryFilePath);
         }
     }
     catch (Exception e)
     {
         Trace.Error("Error when trying to load telemetry from telemetry file");
         Trace.Error(e);
     }
 }