public void populateHttp1Rules(Map<Http1DeterministicRuleEngineConfig.Rule, RuleType> rules) { for (Http1DeterministicRuleEngineConfig.Rule rule : http1Rules.get().getBlacklistRules()) { rules.put(rule, RuleType.blacklist); } for (Http1DeterministicRuleEngineConfig.Rule rule : http1Rules.get().getWhitelistRules()) { rules.put(rule, RuleType.whitelist); } }
public void update(byte[] data) { config.clear(); unmarshaller.unmarshall(config, data); setter.accept(new Http1FilterConfig(config.getBlacklistRules())); } }
public byte[] marshall(Http1DeterministicRuleEngineConfig config) { Http1Ruleset message = new Http1Ruleset(); message.setBlacklistRules(new HashSet<Http1Rule>()); for (Http1DeterministicRuleEngineConfig.Rule rule : config.getBlacklistRules()) { message.addToBlacklistRules(build(rule)); } message.setWhitelistRules(new HashSet<Http1Rule>()); for (Http1DeterministicRuleEngineConfig.Rule rule : config.getWhitelistRules()) { message.addToWhitelistRules(build(rule)); } return serialize(message); }
@Test public void testUpdater() throws UnknownHostException { ThriftMarshaller marshaller = new ThriftMarshaller(); Http1DeterministicRuleEngineConfig rules = new Http1DeterministicRuleEngineConfig(); HashMultimap<String, String> headers = HashMultimap.create(); headers.put("User-Agent", "Bad-actor: 1.0"); Http1DeterministicRuleEngineConfig.Rule bad = new Http1DeterministicRuleEngineConfig.Rule( HttpMethod.GET, "/path/to/failure", HttpVersion.HTTP_1_0, headers); rules.blacklistRule(bad); Http1FilterConfig.Updater updater = new Http1FilterConfig.Updater("path", this::setHttp1FilterConfig); updater.update(marshaller.marshall(rules)); Http1FilterConfig expected = new Http1FilterConfig(rules.getBlacklistRules()); assertEquals(expected, config); }