internal bool GetCapturedData(ICapturedDataFilter filter, out CapturedAdalData capturedData) { if (filter is null) { throw new ArgumentNullException(nameof(filter)); } var operations = new List <CapturedAdalOperation>(_captures.Count); foreach (var capture in _captures) { var operation = new CapturedAdalOperation { AuthorityUrl = filter.ApplyFilter(capture.AuthorityUrl), Error = new CapturedAdalException { Message = filter.ApplyFilter(capture.Error.Message), }, Input = new CapturedAdalInput { ClientId = filter.ApplyFilter(capture.Input.ClientId), ExtraQueryParameters = filter.ApplyFilter(capture.Input.ExtraQueryParameters), RedirectUrl = filter.ApplyFilter(capture.Input.RedirectUrl), Resource = filter.ApplyFilter(capture.Input.Resource), }, Result = new CapturedAdalResult { AccessToken = capture.Result.AccessToken is null ? null : CapturedAdalAccessToken, Authority = filter.ApplyFilter(capture.Result.Authority), TenantId = capture.Result.TenantId, TokenType = capture.Result.TokenType, }, }; operations.Add(operation); } capturedData = new CapturedAdalData { Operations = operations, }; return(true); }
internal bool GetCapturedData(ICapturedDataFilter filter, out CapturedSettingsData capturedData) { if (filter is null) { throw new ArgumentNullException(nameof(filter)); } lock (_syncpoint) { _captured.EnvironmentVariables = new List <CapturedSettingsEnvironmentVariables>(3); // Ensure the special GCM_DEBUG environment variable is set. if (!_variables[EnvironmentVariableTarget.Process].ContainsKey("GCM_DEBUG")) { _variables[EnvironmentVariableTarget.Process].Add("GCM_DEBUG", null); } foreach (var target in _variables.Keys) { var variables = new CapturedSettingsEnvironmentVariables { Target = (int)target, Values = new List <CapturedSettingsEnvironmentVariable>(), }; foreach (var kvp in _variables[target]) { if (kvp.Key is null) { continue; } if (OrdinalIgnoreCase.Equals("PATH", kvp.Key)) { var items = kvp.Value?.Split(';'); var keeps = new List <string>(items.Length); for (int i = 0; i < items.Length; i += 1) { foreach (var legal in AllowedCapturedPathValues) { if (legal.IsMatch(items[i])) { keeps.Add(items[i]); break; } } } if (keeps.Count > 0) { var name = kvp.Key; var variable = string.Join(";", keeps); var entry = new CapturedSettingsEnvironmentVariable { Name = name, Variable = variable, }; variables.Values.Add(entry); } } else if (AllowedCapturedVariables.TryGetValue(kvp.Key, out string variable)) { var name = kvp.Key; var entry = new CapturedSettingsEnvironmentVariable { Name = name, Variable = variable, }; variables.Values.Add(entry); } else { var name = kvp.Key; variable = kvp.Value; foreach (var allowed in AllowedCapturedVariableNames) { if (allowed.IsMatch(name)) { variable = filter.ApplyFilter(variable); var entry = new CapturedSettingsEnvironmentVariable { Name = name, Variable = variable, }; variables.Values.Add(entry); break; } } } } _captured.EnvironmentVariables.Add(variables); } _captured.ExpandVariables = new List <CapturedSettingsExpandVariable>(); foreach (var kvp in _expandedVariables) { if (kvp.Key is null) { continue; } var expanded = kvp.Value; var original = kvp.Key; expanded = filter.ApplyFilter(expanded); original = filter.ApplyFilter(original); var query = new CapturedSettingsExpandVariable { Expanded = expanded, Original = original, }; _captured.ExpandVariables.Add(query); } _captured.SpecialFolders = new List <CapturedSettingsSpecialFolder>(); foreach (var kvp in _specialFolders) { if (kvp.Value is null) { continue; } var path = kvp.Value; path = filter.ApplyFilter(path); var folder = new CapturedSettingsSpecialFolder { SpecialFolder = (int)kvp.Key, Path = path, }; _captured.SpecialFolders.Add(folder); } _captured.CurrentDirectory = filter.ApplyFilter(_captured.CurrentDirectory); capturedData = _captured; return(true); } }