OSDN Git Service

Merge branch 'packet_edit' into autotools-fix(releng)
authorKohei TANUMA <tanuma@users.sourceforge.jp>
Mon, 10 Aug 2009 16:31:01 +0000 (01:31 +0900)
committerKohei TANUMA <tanuma@users.sourceforge.jp>
Mon, 10 Aug 2009 16:31:01 +0000 (01:31 +0900)
1  2 
CHANGES
README
conf/Makefile.am
src/Makefile.am
src/sslproxymain.cpp

diff --combined CHANGES
+++ b/CHANGES
@@@ -1,3 -1,3 +1,8 @@@
++[Aug. 24, 2009] 1.0.2-0 Kohei TANUMA
++  - New feature: Allows to modify HTTP header messages.
++                 See example of http_request_header, http_response_header
++                 settings in conf/sslproxy.target.cf.
++
  [Mar. 25, 2009] 1.0.1-1 Shinya TAKEBAYASHI
    - Fixed initialization routine
  
diff --combined README
--- 1/README
--- 2/README
+++ b/README
@@@ -9,7 -9,7 +9,7 @@@ System requirement
  ===================
  
             OS : Linux 2.6.9(or later)on x86 and x86_64 architecture
--                We recommend to use Redhat Enterprise Linux.
++                We recommend to use Red Hat Enterprise Linux.
  
            CPU : Intel x86 and x86_64 or compatible architecture processors
  
diff --combined conf/Makefile.am
@@@ -1,9 -1,7 +1,8 @@@
 -AUTOMAKE_OPTIONS = foreign
 +SUBDIRS = logrotate.d
  
 -install:
 -      $(INSTALL) -b -m 644 -D ./sslproxy.logger_init.cf /etc/l7vs/sslproxy/sslproxy.logger_init.cf
 -      $(INSTALL) -b -m 644 -D ./sslproxy.target.cf /etc/l7vs/sslproxy/sslproxy.target.cf
 -      $(INSTALL) -b -m 644 -D ./sslproxyadm.cf /etc/l7vs/sslproxy/sslproxyadm.cf
 -      $(INSTALL) -b -m 644 -D ./sslproxyadm.logrotate /etc/logrotate.d/sslproxyadm
 +sysconf_sslproxydir = $(sysconfdir)/l7vs/sslproxy
 +
 +dist_sysconf_sslproxy_DATA = \
 +      sslproxy.logger_init.cf \
-       sslproxy.target_1.cf \
-       sslproxy.target_2.cf \
++      sslproxy.target.cf \
 +      sslproxyadm.cf
diff --combined src/Makefile.am
@@@ -1,27 -1,44 +1,36 @@@
  sbin_PROGRAMS = sslproxy
 -AUTOMAKE_OPTIONS = foreign
 -SSLPROXY_SBINDIR = @sbindir@
 +dist_sbin_SCRIPTS = sslproxyadm
  
 -sslproxy_CPPFLAGS     = -O2 -g -I../include \
 -                -I../logger -I../parameter \
 +sslproxy_CPPFLAGS     = -O2 -g -I$(top_srcdir)/include \
 +                -I$(top_srcdir)/logger -I$(top_srcdir)/parameter \
                  -I/usr/local/include/boost \
                  -pthread \
                  -DVERSION=\"$(VERSION)\"
  
  sslproxy_SOURCES      =       \
 -                      ../logger/logger_wrapper.h \
 -                      ../parameter/parameter_wrapper.h \
 -                      ../include/sslproxy.h \
 -                      ../include/sslproxyserver.h \
 -                      ../include/sslproxysession.h \
 -                      ../include/packet_editor.h \
 -                      ../include/http_message.h \
 -                      ../include/http_request.h \
 -                      ../include/http_response.h \
 +                      $(top_srcdir)/logger/logger_wrapper.h \
 +                      $(top_srcdir)/parameter/parameter_wrapper.h \
 +                      $(top_srcdir)/include/sslproxy.h \
 +                      $(top_srcdir)/include/sslproxyserver.h \
 +                      $(top_srcdir)/include/sslproxysession.h \
++                      $(top_srcdir)/include/packet_editor.h \
++                      $(top_srcdir)/include/http_message.h \
++                      $(top_srcdir)/include/http_request.h \
++                      $(top_srcdir)/include/http_response.h \
                        sslproxy.cpp \
                        sslproxymain.cpp \
                        sslproxyserver.cpp \
-                       sslproxysession.cpp
+                       sslproxysession.cpp \
+                       packet_editor.cpp \
+                       http_message.cpp \
+                       http_request.cpp \
+                       http_response.cpp
  
 -sslproxy_LDADD        =       ../logger/libsslproxy_logger.a \
 -                      ../parameter/libsslproxy_parameter.a \
 +sslproxy_LDADD        =       $(top_builddir)/logger/libsslproxy_logger.a \
 +                      $(top_builddir)/parameter/libsslproxy_parameter.a \
                        -llog4cxx \
                        -lrt \
                        -lssl \
+                       -lboost_regex-gcc41-mt \
                        -lboost_system-gcc41-mt \
                        -lboost_thread-gcc41-mt
 -
 -install:
 -      $(INSTALL) -m 755 -D \
 -              ./sslproxy \
 -              ./sslproxyadm \
 -              $(SSLPROXY_SBINDIR)
 -      mkdir -p /var/log/l7vs/sslproxy
diff --combined src/sslproxymain.cpp
@@@ -74,6 -74,10 +74,10 @@@ long session_cache_mode
  long session_cache_size;
  long session_cache_timeout;
  std::string conn_log_flag;
+ bool client_packet_edit = DEFAULT_CLIENT_EDIT;
+ bool server_packet_edit = DEFAULT_SERVER_EDIT;
+ std::list<std::pair<std::string, std::string > > http_request_header;
+ std::list<std::pair<std::string, std::string > > http_response_header;
  
  /*!
   * Convert verify option string to intger(#define).
@@@ -1190,6 -1194,84 +1194,84 @@@ static int getParameters(std::string co
                                            "Use default value.");
                        conn_log_flag = DEFAULT_CONN_LOG_FLAG;
                }
+               // Get parameter "http_request_header".
+               if (Parameter::getInstance().isStringExist(PARAM_COMP_SSLPROXY, "http_request_header")) {
+                       std::multimap<std::string, std::string> request_map;
+                       Parameter::getInstance().getStringMapValue(PARAM_COMP_SSLPROXY, 
+                           "http_request_header", request_map);
+                       /*-------- DEBUG LOG --------*/
+                       if (LOG_LV_DEBUG == logger_get_log_level(LOG_CAT_SSLPROXY_COMMON)) {
+                               LOGGER_PUT_LOG_DEBUG(LOG_CAT_SSLPROXY_COMMON, 101,
+                                   "function : static int getParameters("
+                                   "std::string config_filename) : "
+                                   "get http_request_header OK.");
+                       }
+                       /*------ DEBUG LOG END ------*/
+                       std::multimap<std::string, std::string>::iterator it  = request_map.begin();
+                       std::multimap<std::string, std::string>::iterator end = request_map.end();
+                       while (it != end) {
+                               int delimiter_pos = it->second.find(':');
+                               if (delimiter_pos == std::string::npos) {
+                                       LOGGER_PUT_LOG_ERROR(LOG_CAT_SSLPROXY_COMMON, 50,
+                                           "Invalid http_request_header parameter value.(no delimiter)");
+                                       throw -1;
+                               }
+                               std::pair<std::string, std::string> header_pair(
+                                   it->second.substr(0, delimiter_pos),
+                                   it->second.substr(delimiter_pos + 1, it->second.size() - delimiter_pos) );
+                               if ( header_pair.first != "set"
+                                 && header_pair.first != "unset"
+                                 && header_pair.first != "add"
+                                 && header_pair.first != "replace" ) {
+                                       LOGGER_PUT_LOG_ERROR(LOG_CAT_SSLPROXY_COMMON, 51,
+                                           "Invalid http_request_header parameter value.(invalid type)");
+                                       throw -1;
+                               }
+                               ::http_request_header.push_back(header_pair);
+                               ::client_packet_edit = true;
+                               it++;
+                       }
+               }
+               // Get parameter "http_response_header".
+               if (Parameter::getInstance().isStringExist(PARAM_COMP_SSLPROXY, "http_response_header")) {
+                       std::multimap<std::string, std::string> response_map;
+                       Parameter::getInstance().getStringMapValue(PARAM_COMP_SSLPROXY, 
+                           "http_response_header", response_map);
+                       /*-------- DEBUG LOG --------*/
+                       if (LOG_LV_DEBUG == logger_get_log_level(LOG_CAT_SSLPROXY_COMMON)) {
+                               LOGGER_PUT_LOG_DEBUG(LOG_CAT_SSLPROXY_COMMON, 102,
+                                   "function : static int getParameters("
+                                   "std::string config_filename) : "
+                                   "get http_response_header OK.");
+                       }
+                       /*------ DEBUG LOG END ------*/
+                       std::multimap<std::string, std::string>::iterator it  = response_map.begin();
+                       std::multimap<std::string, std::string>::iterator end = response_map.end();
+                       while (it != end) {
+                               int delimiter_pos = it->second.find(':');
+                               if (delimiter_pos == std::string::npos) {
+                                       LOGGER_PUT_LOG_ERROR(LOG_CAT_SSLPROXY_COMMON, 52,
+                                           "Invalid http_response_header parameter value.(no delimiter)");
+                                       throw -1;
+                               }
+                               std::pair<std::string, std::string> header_pair(
+                                   it->second.substr(0, delimiter_pos),
+                                   it->second.substr(delimiter_pos + 1, it->second.size() - delimiter_pos) );
+                               if ( header_pair.first != "set"
+                                 && header_pair.first != "unset"
+                                 && header_pair.first != "add"
+                                 && header_pair.first != "replace" ) {
+                                       LOGGER_PUT_LOG_ERROR(LOG_CAT_SSLPROXY_COMMON, 53,
+                                           "Invalid http_response_header parameter value.(invalid type)");
+                                       throw -1;
+                               }
+                               ::http_response_header.push_back(header_pair);
+                               ::server_packet_edit = true;
+                               it++;
+                       }
+               }
        } catch (int e) {
                /*-------- DEBUG LOG --------*/
                if (LOG_LV_DEBUG == logger_get_log_level(LOG_CAT_SSLPROXY_COMMON)) {
@@@ -1504,7 -1586,7 +1586,7 @@@ static void usage(void
        /*------ DEBUG LOG END ------*/
  
        std::cerr << "Usage   : " << "sslproxy <target_id> <config_filename>" << std::endl;
--      std::cerr << "Example : " << "sslproxy target_1 /etc/l7vs/sslproxy/sslproxy.target_1.cf" << std::endl;
++      std::cerr << "Example : " << "sslproxy target_1 /etc/l7vs/sslproxy/sslproxy.target.cf" << std::endl;
  
        /*-------- DEBUG LOG --------*/
        if (LOG_LV_DEBUG == logger_get_log_level(LOG_CAT_SSLPROXY_COMMON)) {