1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef NET_BASE_HOST_MAPPING_RULES_H_ 6 #define NET_BASE_HOST_MAPPING_RULES_H_ 7 #pragma once 8 9 #include <string> 10 #include <vector> 11 #include "base/basictypes.h" 12 13 namespace net { 14 15 class HostPortPair; 16 17 class HostMappingRules { 18 public: 19 HostMappingRules(); 20 ~HostMappingRules(); 21 22 // Modifies |*host_port| based on the current rules. Returns true if the 23 // RequestInfo was modified, false otherwise. 24 bool RewriteHost(HostPortPair* host_port) const; 25 26 // Adds a rule to this mapper. The format of the rule can be one of: 27 // 28 // "MAP" <hostname_pattern> <replacement_host> [":" <replacement_port>] 29 // "EXCLUDE" <hostname_pattern> 30 // 31 // The <replacement_host> can be either a hostname, or an IP address literal. 32 // 33 // Returns true if the rule was successfully parsed and added. 34 bool AddRuleFromString(const std::string& rule_string); 35 36 // Sets the rules from a comma separated list of rules. 37 void SetRulesFromString(const std::string& rules_string); 38 39 private: 40 struct MapRule; 41 struct ExclusionRule; 42 43 typedef std::vector<MapRule> MapRuleList; 44 typedef std::vector<ExclusionRule> ExclusionRuleList; 45 46 MapRuleList map_rules_; 47 ExclusionRuleList exclusion_rules_; 48 49 DISALLOW_COPY_AND_ASSIGN(HostMappingRules); 50 }; 51 52 } // namespace net 53 54 #endif // NET_BASE_HOST_MAPPING_RULES_H_ 55