Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        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);
        }