};
class HttpRewrite::Within {
public:
- std::string header;
- std::string attr;
+ boost::regex header;
+ boost::regex attr;
boost::regex tag;
std::string type;
bool reqline;
std::list<Within>::const_iterator it = cit->within_list.begin();
for (; it != cit->within_list.end(); it++)
{
- if (it->header.length() > 0 &&
- yaz_strcasecmp(it->header.c_str(), header->name) == 0)
+ if (!it->header.empty() &&
+ regex_match(header->name, it->header))
{
std::string sheader(header->name);
sheader += ": ";
{
if (!it->tag.empty() && regex_match(t, it->tag))
{
- std::vector<std::string> attr;
- boost::split(attr, it->attr, boost::is_any_of(","));
- size_t i;
- for (i = 0; i < attr.size(); i++)
+ if (!it->attr.empty() && regex_match("#text", it->attr))
{
- if (attr[i].compare("#text") == 0)
- {
- s_within.push(it);
- return;
- }
+ s_within.push(it);
+ return;
}
}
}
if (it->tag.empty() || regex_match(t, it->tag))
{
std::string a(attr, attr_len);
- std::vector<std::string> attr;
- boost::split(attr, it->attr, boost::is_any_of(","));
- size_t i;
- for (i = 0; i < attr.size(); i++)
- {
- if (attr[i].compare("#text") &&
- yaz_strcasecmp(attr[i].c_str(), a.c_str()) == 0)
- subst = true;
- }
+ if (!it->attr.empty() && regex_match(a, it->attr))
+ subst = true;
}
if (subst)
break;
std::string values[6];
mp::xml::parse_attr(ptr, names, values);
Within w;
- w.header = values[0];
- w.attr = values[1];
+ if (values[0].length() > 0)
+ w.header.assign(values[0], boost::regex_constants::icase);
+ if (values[1].length() > 0)
+ w.attr.assign(values[1], boost::regex_constants::icase);
if (values[2].length() > 0)
- w.tag = values[2];
+ w.tag.assign(values[2], boost::regex_constants::icase);
std::map<std::string,RulePtr>::const_iterator it =
rules.find(values[3]);
if (it == rules.end())
" <within tag=\"body\" attr=\"background\" rule=\"null\"/>\n"
" <within tag=\"script\" attr=\"#text\" type=\"quoted-literal\" rule=\"url\"/>\n"
" <within tag=\"style\" attr=\"#text\" rule=\"url\"/>\n"
- " <within attr=\"href,src\" rule=\"url\"/>\n"
+ " <within attr=\"href|src\" rule=\"url\"/>\n"
" <within attr=\"onclick\" type=\"quoted-literal\" rule=\"url\"/>\n"
" </content>\n"
" <content type=\"quoted-literal\" mime=\".*javascript\">\n"
"<a target=_blank href=\"http://targetsite/page3.html\">"
" Another abs link</a>"
"<a href=\"/docs/page4.html\" />"
- "<a href=\"cxcx\" />"
- "<a href=\"cx \" onclick=\"foo("foo");\"/>"
+ "<A href=\"cxcx\" />"
+ "<a HREF=\"cx \" onclick=\"foo("foo");\"/>"
"</body></html>";
const char *resp_expected =
"<a target=_blank href=\"http://proxyhost/proxypath/targetsite/page3.html\">"
" Another abs link</a>"
"<a href=\"/docs/page4.html\"/>"
- "<a href=\"cycx\"/>"
- "<a href=\"cy \" onclick=\"foo("bar");\"/>"
+ "<A href=\"cycx\"/>"
+ "<a HREF=\"cy \" onclick=\"foo("bar");\"/>"
"</body></html>";
Z_GDU *gdu_res;
" <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"