X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Ffilter_http_rewrite.hpp;h=7504f89901d0257d8af4e8d0d0e2f1a5475e91ac;hb=586d78659d671683f33ec55f4a7d32b28e345ccd;hp=bcfba00e09eb3bc1f00128cc9435051709c40f9a;hpb=3a51c4a584225b0e77d17600acb527337f5ac8ce;p=metaproxy-moved-to-github.git diff --git a/src/filter_http_rewrite.hpp b/src/filter_http_rewrite.hpp index bcfba00..7504f89 100644 --- a/src/filter_http_rewrite.hpp +++ b/src/filter_http_rewrite.hpp @@ -1,5 +1,5 @@ /* This file is part of Metaproxy. - Copyright (C) 2005-2013 Index Data + Copyright (C) Index Data Metaproxy is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free @@ -20,53 +20,30 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define FILTER_HTTP_REWRITE_HPP #include -#include -#include -#include +#include +#include namespace mp = metaproxy_1; namespace metaproxy_1 { namespace filter { class HttpRewrite : public Base { + class Phase; + class Content; + class Replace; + class Within; + class Event; + boost::scoped_ptr req_phase; + boost::scoped_ptr res_phase; + void configure_phase(const xmlNode *ptr, Phase &phase); public: - typedef std::pair string_pair; - typedef std::vector spair_vec; - typedef spair_vec::iterator spv_iter; + class Rule; + typedef boost::shared_ptr RulePtr; HttpRewrite(); ~HttpRewrite(); void process(metaproxy_1::Package & package) const; - void configure(const xmlNode * ptr, bool test_only, - const char *path); - void configure(const spair_vec req_uri_pats, - const spair_vec res_uri_pats); - private: - spair_vec req_uri_pats; - spair_vec res_uri_pats; - std::vector > req_groups_bynum; - std::vector > res_groups_bynum; - void rewrite_reqline (mp::odr & o, Z_HTTP_Request *hreq, - std::map & vars) const; - void rewrite_headers (mp::odr & o, Z_HTTP_Header *headers, - std::map & vars) const; - void rewrite_body (mp::odr & o, char **content_buf, int *content_len, - std::map & vars) const; - const std::string test_patterns( - std::map & vars, - const std::string & txt, - const spair_vec & uri_pats, - const std::vector > & groups_bynum_vec) const; - const std::string search_replace( - std::map & vars, - const std::string & txt, - const std::string & uri_re, - const std::string & uri_pat, - const std::map & groups_bynum) const; - static void parse_groups( - const spair_vec & uri_pats, - std::vector > & groups_bynum_vec); - static std::string sub_vars (const std::string & in, - const std::map & vars); + void configure(const xmlNode * ptr, + bool test_only, const char *path); }; } }