/// <summary> /// Load encoder element /// </summary> /// <param name="encoderConfig"></param> /// <returns></returns> internal static IEncoder LoadEncoder(EncoderElement encoderConfig) { Debug.Assert(encoderConfig != null); // Create encoder IEncoder encoder = null; if (!string.IsNullOrEmpty(encoderConfig.Type)) { encoder = ObjectBuilder.Build <IEncoder>(encoderConfig.Type); } else { // Create default encoder and load all local codec defs encoder = new Encoder(); LoadCodecs(encoder, typeof(Encoder).Assembly, MatchHelper.WildcardToRegex(@"Owasp.Esapi.Codecs.*")); } CodecCollection codecs = encoderConfig.Codecs; // Load codec assemblies foreach (AddinAssemblyElement codecAssembly in codecs.Assemblies) { try { Assembly assembly = Assembly.Load(codecAssembly.Name); Regex typeMatch = MatchHelper.WildcardToRegex(codecAssembly.Types); LoadCodecs(encoder, assembly, typeMatch); } catch (Exception exp) { Esapi.Logger.Warning(LogLevels.WARN, "Failed to load codec assembly", exp); } } // Specific codecs foreach (CodecElement codecElement in codecs) { string failMessage = string.Format("Failed to load codec \"{0}\"", codecElement.Name); try { ICodec codec = AddinBuilder <ICodec> .MakeInstance(codecElement); encoder.AddCodec(codecElement.Name, codec); } catch (Exception exp) { Esapi.Logger.Warning(LogLevels.WARN, failMessage, exp); } } return(encoder); }
/// <summary> /// Load validator instance /// </summary> /// <param name="validatorConfig"></param> /// <returns></returns> internal static IValidator LoadValidator(ValidatorElement validatorConfig) { Debug.Assert(validatorConfig != null); IValidator validator = null; // Create custom if (!string.IsNullOrEmpty(validatorConfig.Type)) { validator = ObjectBuilder.Build <IValidator>(validatorConfig.Type); } else { // Create default and load local rules validator = new Validator(); LoadValidationRules(validator, typeof(Validator).Assembly, MatchHelper.WildcardToRegex(@"Owasp.Esapi.ValidationRules.*")); } ValidationRuleCollection rules = validatorConfig.Rules; // Add rule assemblies foreach (AddinAssemblyElement ruleAssembly in rules.Assemblies) { try { Assembly assembly = Assembly.Load(ruleAssembly.Name); Regex typeMatch = MatchHelper.WildcardToRegex(ruleAssembly.Types); LoadValidationRules(validator, assembly, typeMatch); } catch (Exception exp) { Esapi.Logger.Warning(LogLevels.WARN, "Failed to load validation rule assembly", exp); } } // Rules foreach (ValidationRuleElement ruleElement in rules) { string failMessage = string.Format("Failed to load validation rule \"{0}\"", ruleElement.Name); try { IValidationRule rule = AddinBuilder <IValidationRule> .MakeInstance(ruleElement); validator.AddRule(ruleElement.Name, rule); } catch (Exception exp) { Esapi.Logger.Warning(LogLevels.WARN, failMessage, exp); } } return(validator); }