internal PSWorkflowValidator GetWorkflowValidator() { PSWorkflowValidator pSWorkflowValidator; if (this._wfValidator == null) { lock (this._syncObject) { if (this._wfValidator == null) { this._wfValidator = new PSWorkflowValidator(PSWorkflowRuntime.Instance.Configuration); return(this._wfValidator); } else { pSWorkflowValidator = this._wfValidator; } } return(pSWorkflowValidator); } else { return(this._wfValidator); } }
internal PSWorkflowValidator GetWorkflowValidator() { if (_wfValidator != null) { return(_wfValidator); } lock (_syncObject) { if (_wfValidator != null) { return(_wfValidator); } _wfValidator = new PSWorkflowValidator(PSWorkflowRuntime.Instance.Configuration); } return(_wfValidator); }
private bool ValidateActivity(Activity activity, string runtimeAssembly, PSWorkflowValidationResults validationResult) { bool flag; if (validationResult != null && !validationResult.IsWorkflowSuspendable) { validationResult.IsWorkflowSuspendable = this.CheckIfSuspendable(activity); } Type type = activity.GetType(); if (Validation.CustomHandler == null || !Validation.CustomHandler(activity)) { if (!string.Equals(type.Assembly.FullName, "System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35", StringComparison.OrdinalIgnoreCase)) { if (!string.Equals(runtimeAssembly, type.Assembly.GetName().Name, StringComparison.OrdinalIgnoreCase)) { if (!this.Configuration.PSDefaultActivitiesAreAllowed || !PSWorkflowValidator.PowerShellActivitiesAssemblies.Contains(type.Assembly.GetName().Name.ToLowerInvariant())) { IEnumerable <string> allowedActivity = this.Configuration.AllowedActivity; IEnumerable <string> strs = allowedActivity; if (allowedActivity == null) { strs = (IEnumerable <string>)(new string[0]); } foreach (string str in strs) { if (string.Equals(str, "PSDefaultActivities", StringComparison.OrdinalIgnoreCase) || activity == null || !PSWorkflowValidator.IsMatched(str, type.Name) && !PSWorkflowValidator.IsMatched(str, type.FullName) && !PSWorkflowValidator.IsMatched(str, string.Concat(type.Assembly.GetName().Name, "\\", type.Name)) && !PSWorkflowValidator.IsMatched(str, string.Concat(type.Assembly.GetName().Name, "\\", type.FullName)) && !PSWorkflowValidator.IsMatched(str, string.Concat(type.Assembly.GetName().FullName, "\\", type.Name)) && !PSWorkflowValidator.IsMatched(str, string.Concat(type.Assembly.GetName().FullName, "\\", type.FullName))) { continue; } flag = true; break; } } else { flag = true; } } else { flag = true; } } else { flag = PSWorkflowValidator.AllowedSystemActivities.Contains(type.Name); } } else { flag = true; } string displayName = activity.DisplayName; if (string.IsNullOrEmpty(displayName)) { displayName = this.GetType().Name; } if (!flag) { PSWorkflowValidator._structuredTracer.WorkflowActivityValidationFailed(Guid.Empty, displayName, type.FullName); } else { PSWorkflowValidator._structuredTracer.WorkflowActivityValidated(Guid.Empty, displayName, type.FullName); } return(flag); }