-
- //configure the filter
- mp::filter::HttpRewrite::spair_vec vec_req;
- vec_req.push_back(std::make_pair(
- "(?<proto>http\\:\\/\\/s?)(?<pxhost>[^\\/?#]+)\\/(?<pxpath>[^\\/]+)"
- "\\/(?<host>[^\\/]+)(?<path>.*)",
- "${proto}${host}${path}"
- ));
- vec_req.push_back(std::make_pair(
- "(?:Host\\: )(.*)",
- "Host: ${host}"
- ));
-
- mp::filter::HttpRewrite::spair_vec vec_res;
- vec_res.push_back(std::make_pair(
- "(?<proto>http\\:\\/\\/s?)(?<host>[^\\/?# \"'>]+)\\/(?<path>[^ \"'>]+)",
- "${proto}${pxhost}/${pxpath}/${host}/${path}"
- ));
-
- fhr.configure(vec_req, vec_res);
-
+
+ std::string xmlconf =
+ "<?xml version='1.0'?>\n"
+ "<filter xmlns='http://indexdata.com/metaproxy'\n"
+ " id='rewrite1' type='http_rewrite'>\n"
+ " <request verbose=\"1\">\n"
+ " <rule name=\"null\"/>\n"
+ " <rule name=\"url\">\n"
+ " <rewrite from='"
+ "(?<proto>https?://)(?<pxhost>[^ /?#]+)/(?<pxpath>[^ /]+)"
+ "/(?<host>[^ /]+)(?<path>[^ ]*)'\n"
+ " to='${proto}${host}${path}' />\n"
+ " <rewrite from='(?:Host: )(.*)'\n"
+ " to='Host: ${host}' />\n"
+ " </rule>\n"
+ " <content type=\"headers\">\n"
+ " <within header=\"link\" rule=\"null\"/>\n"
+ " <within reqline=\"1\" rule=\"url\"/>\n"
+ " </content>\n"
+ " </request>\n"
+ " <response verbose=\"1\">\n"
+ " <rule name=\"null\"/>\n"
+ " <rule name=\"url\">\n"
+ " <rewrite from='foo' to='bar'/>\n"
+ " <rewrite from='^cx' to='cy'/>\n"
+ " <rewrite from='"
+ "(?<proto>https?://)(?<host>[^/?# "'>]+)/(?<path>[^ "'>]+)'\n"
+ " to='${proto}${pxhost}/${pxpath}/${host}/${path}' />\n"
+ " </rule>\n"
+ " <content type=\"headers\">\n"
+ " <within header=\"link\" rule=\"url\"/>\n"
+ " </content>\n"
+ " <content type=\"html\" mime=\"text/xml|text/html\">\n"
+ " <within tag=\"body\" attr=\"background\" rule=\"null\"/>\n"
+ " <within tag=\"script\" attr=\"#text\" rule=\"url\"/>\n"
+ " <within tag=\"style\" attr=\"#text\" rule=\"url\"/>\n"
+ " <within attr=\"href,src\" rule=\"url\"/>\n"
+ " </content>\n"
+ " <content type=\"quoted-literal\" mime=\".*javascript\">\n"
+ " <within rule=\"url\"/>\n"
+ " </content>\n"
+ " </response>\n"
+ "</filter>\n"
+ ;
+
+ std::cout << xmlconf;
+
+ // reading and parsing XML conf
+ xmlDocPtr doc = xmlParseMemory(xmlconf.c_str(), xmlconf.size());
+ BOOST_CHECK(doc);
+ xmlNode *root_element = xmlDocGetRootElement(doc);
+ fhr.configure(root_element, true, "");
+ xmlFreeDoc(doc);
+