long session_cache_size;
long session_cache_timeout;
std::string conn_log_flag;
-bool edit_client_msg;
-bool edit_server_msg;
-int x_forwarded_for_mode;
-std::string custom_field;
-
+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).
conn_log_flag = DEFAULT_CONN_LOG_FLAG;
}
- // Get parameter "edit_client_msg".
- if (Parameter::getInstance().isStringExist(PARAM_COMP_SSLPROXY, "edit_client_msg")) {
- std::string edit_client = Parameter::getInstance().getStringValue(PARAM_COMP_SSLPROXY,
- "edit_client_msg");
- /*-------- DEBUG LOG --------*/
- if (LOG_LV_DEBUG == logger_get_log_level(LOG_CAT_SSLPROXY_COMMON)) {
- LOGGER_PUT_LOG_DEBUG(LOG_CAT_SSLPROXY_COMMON, 40, // XXX fix log
- "function : static int getParameters("
- "std::string config_filename) : "
- "get edit_client_msg OK.");
- }
- /*------ DEBUG LOG END ------*/
- if (edit_client == "") {
- LOGGER_PUT_LOG_WARN(LOG_CAT_SSLPROXY_COMMON, 23, // XXX fix log
- "edit_client_msg parameter is nothing. "
- "Use default value.");
- edit_client_msg = DEFAULT_EDIT_CLIENT_MSG;
- } else if (edit_client != "on" && edit_client != "off") {
- LOGGER_PUT_LOG_ERROR(LOG_CAT_SSLPROXY_COMMON, 20, // XXX fix log
- "Invalid edit_client_msg parameter value.");
- throw -1;
- }
- if (edit_client == "on")
- edit_client_msg = true;
- else
- edit_client_msg = false;
- } else {
- LOGGER_PUT_LOG_WARN(LOG_CAT_SSLPROXY_COMMON, 999, // XXX fix log
- "edit_client_msg parameter not found. "
- "Use default value.");
- edit_client_msg = DEFAULT_EDIT_CLIENT_MSG;
- }
-
- // Get parameter "edit_server_msg".
- if (Parameter::getInstance().isStringExist(PARAM_COMP_SSLPROXY, "edit_server_msg")) {
- std::string edit_server = Parameter::getInstance().getStringValue(PARAM_COMP_SSLPROXY,
- "edit_server_msg");
+ // 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, 40, // XXX fix log
- "function : static int getParameters("
- "std::string config_filename) : "
- "get edit_server_msg OK.");
+ LOGGER_PUT_LOG_DEBUG(LOG_CAT_SSLPROXY_COMMON, 61, // XXX fix log
+ "function : static int getParameters("
+ "std::string config_filename) : "
+ "get http_request_header OK.");
}
/*------ DEBUG LOG END ------*/
- if (edit_server == "") {
- LOGGER_PUT_LOG_WARN(LOG_CAT_SSLPROXY_COMMON, 23, // XXX fix log
- "edit_server_msg parameter is nothing. "
- "Use default value.");
- edit_server_msg = DEFAULT_EDIT_SERVER_MSG;
- } else if (edit_server != "on" && edit_server != "off") {
- LOGGER_PUT_LOG_ERROR(LOG_CAT_SSLPROXY_COMMON, 20, // XXX fix log
- "Invalid edit_server_msg parameter value.");
- throw -1;
+ 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, 20, // XXX fix log
+ "Invalid http_request_header parameter value.");
+ 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, 20, // XXX fix log
+ "Invalid http_request_header parameter value.");
+ throw -1;
+ }
+LOGGER_PUT_LOG_ERROR(LOG_CAT_SSLPROXY_COMMON, 20, "read: mode(%s) value(%s)", header_pair.first.c_str(), header_pair.second.c_str());
+ ::http_request_header.push_back(header_pair);
+ ::client_packet_edit = true;
+ it++;
}
- if (edit_server == "on")
- edit_server_msg = true;
- else
- edit_server_msg = false;
- } else {
- LOGGER_PUT_LOG_WARN(LOG_CAT_SSLPROXY_COMMON, 999, // XXX fix log
- "edit_server_msg parameter not found. "
- "Use default value.");
- edit_server_msg = DEFAULT_EDIT_SERVER_MSG;
}
- // Get parameter "x_forwarded_for_mode".
- if (Parameter::getInstance().isStringExist(PARAM_COMP_SSLPROXY, "x_forwarded_for_mode")) {
- std::string x_forwarded = Parameter::getInstance().getStringValue(PARAM_COMP_SSLPROXY,
- "x_forwarded_for_mode");
+ // 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, 61, // XXX fix log
- "function : static int getParameters("
- "std::string config_filename) : "
- "get x_forwarded_for_mode OK.");
+ "function : static int getParameters("
+ "std::string config_filename) : "
+ "get http_response_header OK.");
}
/*------ DEBUG LOG END ------*/
- if (x_forwarded == "") {
- LOGGER_PUT_LOG_WARN(LOG_CAT_SSLPROXY_COMMON, 23, // XXX fix log
- "x_forwarded_for_mode parameter is nothing. "
- "Use default value.");
- x_forwarded_for_mode = DEFAULT_X_FORWARDED_FOR_MODE;
- } else if (x_forwarded != "add") {
- x_forwarded_for_mode = ADD_X_FORWARDED_FOR;
- } else if (x_forwarded != "set") {
- x_forwarded_for_mode = SET_X_FORWARDED_FOR;
- } else if (x_forwarded != "delete") {
- x_forwarded_for_mode = DELETE_X_FORWARDED_FOR;
- } else if (x_forwarded != "none") {
- x_forwarded_for_mode = NONE_X_FORWARDED_FOR;
- } else {
- LOGGER_PUT_LOG_ERROR(LOG_CAT_SSLPROXY_COMMON, 20, // XXX fix log
- "Invalid x_forwarded_for_mode parameter value.");
- throw -1;
+ 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, 20, // XXX fix log
+ "Invalid http_response_header parameter value.");
+ 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, 20, // XXX fix log
+ "Invalid http_response_header parameter value.");
+ throw -1;
+ }
+LOGGER_PUT_LOG_ERROR(LOG_CAT_SSLPROXY_COMMON, 20, "read: mode(%s) value(%s)", header_pair.first.c_str(), header_pair.second.c_str());
+ ::http_response_header.push_back(header_pair);
+ ::server_packet_edit = true;
+ it++;
}
- } else {
- x_forwarded_for_mode = DEFAULT_X_FORWARDED_FOR_MODE;
}
} catch (int e) {
/*-------- DEBUG LOG --------*/