diff --git a/wrenchboard/Dockerfile b/wrenchboard/Dockerfile index 3e7df29c..f21cbd05 100644 --- a/wrenchboard/Dockerfile +++ b/wrenchboard/Dockerfile @@ -14,7 +14,7 @@ RUN apt -y install rapidjson-dev libboost-all-dev # libpcrecpp0v5 unixodbc-dev postgresql-server-dev-12 libgsoap-dev libgsoap-2.8.91 # DEBUG -RUN apt -y install gdb strace vim +RUN apt -y install gdb strace vim postgresql-client-11 ADD scripts/* /usr/local/bin/ ADD configs/* /cfgs/ @@ -32,4 +32,7 @@ RUN cd /opt/mainsite/wrenchboard/src && make RUN ln -s /opt/mainsite/wrenchboard/src/modules/wrenchboard_api_root.so /usr/local/lib/php/extensions/no-debug-non-zts-20170718/wrenchboard_api_root.so +RUN touch /opt/mainsite/wrenchboard/logs/wrenchboard_api_root.log +RUN chmod a+w /opt/mainsite/wrenchboard/logs/wrenchboard_api_root.log + RUN echo "extension=wrenchboard_api_root.so" > /usr/local/etc/php/conf.d/docker-php-ext-wrenchboard.ini diff --git a/wrenchboard/build/wrenchboard_api.cc b/wrenchboard/build/wrenchboard_api.cc index 58b30ce9..d4df83c8 100644 --- a/wrenchboard/build/wrenchboard_api.cc +++ b/wrenchboard/build/wrenchboard_api.cc @@ -116,20 +116,28 @@ PHP_METHOD(WrenchBoard, wrenchboard_api) // Convert output convert_to_array_ex( param_out ); CVars::iterator i; - int j = 0; const int out_size = output.size(); // 200 const int out_value_size = 200; char out_key[out_value_size], out_value[out_value_size]; - for ( i=output.begin(); i != output.end() && jfirst.c_str(), i->second.c_str() ); - strsafecpy( out_key, i->first.c_str(), out_value_size ); - strsafecpy( out_value, i->second.c_str(), out_value_size ); - add_assoc_string( param_out, out_key, out_value); - } + if (!output.empty()) { + array_init(param_out); + // for ( i=output.begin(); i != output.end() && jfirst.c_str(), i->second.c_str() ); + strsafecpy( out_key, i->first.c_str(), out_value_size ); + strsafecpy( out_value, i->second.c_str(), out_value_size ); + //add_assoc_string( param_out, out_key, out_value); + add_assoc_string_ex( param_out, out_key, strlen(out_key), out_value); + //SAFE_STRING + //efree(out_value); + output.erase(output.begin()); + } + } + logfmt( logDEBUG, "About to return %ld", retval ); RETURN_LONG(retval); } diff --git a/wrenchboard/src/core/pgsql.cc b/wrenchboard/src/core/pgsql.cc index b59be287..4fabbadb 100644 --- a/wrenchboard/src/core/pgsql.cc +++ b/wrenchboard/src/core/pgsql.cc @@ -32,10 +32,14 @@ int pgsql_db_connect(const char*host,const char*name,const char*user,const char* connection_str+=pgsql_uitoa(port,pdb_port,10); } + //FILE_LOG(logSQL) << "PQconnectdb()"; conn = PQconnectdb(connection_str.c_str()); + //FILE_LOG(logSQL) << "PQstatus()"; if (PQstatus(conn) != CONNECTION_OK) { + //FILE_LOG(logSQL) << "ERROR"; return 0; } + //FILE_LOG(logSQL) << "CONNECTION_OK"; return 1; } @@ -43,7 +47,11 @@ void pgsql_close() { FILE_LOG(logSQL) << "pgsql_close()"; if (PQstatus(conn)==CONNECTION_OK) { + //FILE_LOG(logSQL) << "PQstatus(conn) == CONNECTION_OK"; PQfinish(conn); + //FILE_LOG(logSQL) << "PQfinish() done!"; + } else { + //FILE_LOG(logSQL) << "PQstatus(conn) != CONNECTION_OK"; } } diff --git a/wrenchboard/src/core/wrenchboard.cc b/wrenchboard/src/core/wrenchboard.cc index 633bd0f3..a9c6b06e 100644 --- a/wrenchboard/src/core/wrenchboard.cc +++ b/wrenchboard/src/core/wrenchboard.cc @@ -8,15 +8,17 @@ #include "wrenchboard_api_main.h" +#include #include #include WrenchBoard::WrenchBoard() { - // Open config + // Open log this->pFile = fopen(WRENCHBOARD_LOG, "a"); Output2FILE::Stream() = pFile; FILE_LOG(logINFO) << "WRENCHBOARD is starting..."; + // Read config CfgReadConfig(); logfmt(logINFO, "Version from config: %s", CfgReadChar("version")); @@ -31,10 +33,17 @@ WrenchBoard::WrenchBoard() { CfgReadChar("database.user"), CfgReadChar("database.pass"), CfgReadLong("database.port") ); + FILE_LOG(logDEBUG) << "pgsql_db_connect() done!"; + } catch (const std::exception &e) { + FILE_LOG(logDEBUG) << "Exception: " << e.what(); + } catch (const std::string &e) { + FILE_LOG(logDEBUG) << "Exception: " << e; + } catch (const char *e) { + FILE_LOG(logDEBUG) << "Exception: " << e; } catch (...) { - logfmt(logDEBUG, "Exception!"); + FILE_LOG(logDEBUG) << "Unknown Exception!"; } - logfmt(logDEBUG, "Database connection %s", this->db>0?"successful":"failed"); + FILE_LOG(logDEBUG) << "Database connection " << (this->db>0?"successful":"failed"); } long WrenchBoard::wrenchboard_api(CVars in, CVars &out) { @@ -70,6 +79,6 @@ WrenchBoard::~WrenchBoard() { // Do we need it? if (this->pFile) { fclose(this->pFile); - } + } // */ } diff --git a/wrenchboard/src/core/wrenchboard_api.cc b/wrenchboard/src/core/wrenchboard_api.cc index cca47847..5cd353c9 100644 --- a/wrenchboard/src/core/wrenchboard_api.cc +++ b/wrenchboard/src/core/wrenchboard_api.cc @@ -116,19 +116,27 @@ PHP_METHOD(WrenchBoard, wrenchboard_api) // Convert output convert_to_array_ex( param_out ); CVars::iterator i; - int j = 0; const int out_size = output.size(); // 200 const int out_value_size = 200; char out_key[out_value_size], out_value[out_value_size]; - for ( i=output.begin(); i != output.end() && jfirst.c_str(), i->second.c_str() ); - strsafecpy( out_key, i->first.c_str(), out_value_size ); - strsafecpy( out_value, i->second.c_str(), out_value_size ); - add_assoc_string( param_out, out_key, out_value); + if (!output.empty()) { + array_init(param_out); + // for ( i=output.begin(); i != output.end() && jfirst.c_str(), i->second.c_str() ); + strsafecpy( out_key, i->first.c_str(), out_value_size ); + strsafecpy( out_value, i->second.c_str(), out_value_size ); + //add_assoc_string( param_out, out_key, out_value); + add_assoc_string_ex( param_out, out_key, strlen(out_key), out_value); + //SAFE_STRING + //efree(out_value); + output.erase(output.begin()); + } } + logfmt( logDEBUG, "About to return %ld", retval ); RETURN_LONG(retval); } @@ -253,10 +261,10 @@ static void wrenchboard_object_free(zend_object *object) } // ------------------------------------------------------------------ // ------------------------------------------------------------------ -PHP_MINIT_FUNCTION(wrenchboard_api_oameye) +PHP_MINIT_FUNCTION(wrenchboard_api_root) { zend_class_entry ce; - INIT_NS_CLASS_ENTRY(ce, WRENCHBOARD_API_OAMEYE_NS, "WrenchBoard", wrenchboard_methods); + INIT_NS_CLASS_ENTRY(ce, WRENCHBOARD_API_ROOT_NS, "WrenchBoard", wrenchboard_methods); wrenchboard_ce = zend_register_internal_class(&ce TSRMLS_CC); wrenchboard_ce->create_object = wrenchboard_object_new; @@ -277,7 +285,7 @@ PHP_MINIT_FUNCTION(wrenchboard_api_oameye) } // ------------------------------------------------------------------ // ------------------------------------------------------------------ -PHP_MINFO_FUNCTION(wrenchboard_api_oameye) +PHP_MINFO_FUNCTION(wrenchboard_api_root) { php_info_print_table_start(); php_info_print_table_row(2, "WRENCHBOARD API support", "enabled"); @@ -285,31 +293,31 @@ PHP_MINFO_FUNCTION(wrenchboard_api_oameye) php_info_print_table_row(2, "Config File", WRENCHBOARD_CONFIG"wrenchboard_api.conf"); php_info_print_table_row(2, "Build Date", __DATE__); php_info_print_table_row(2, "Build Time", __TIME__); - php_info_print_table_row(2, "Namespace", WRENCHBOARD_API_OAMEYE_NS); - php_info_print_table_row(2, "Version", PHP_WRENCHBOARD_API_OAMEYE_EXTVER); + php_info_print_table_row(2, "Namespace", WRENCHBOARD_API_ROOT_NS); + php_info_print_table_row(2, "Version", PHP_WRENCHBOARD_API_ROOT_EXTVER); php_info_print_table_end(); } // ------------------------------------------------------------------ // ------------------------------------------------------------------ -zend_module_entry wrenchboard_api_oameye_module_entry = { +zend_module_entry wrenchboard_api_root_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 STANDARD_MODULE_HEADER, #endif - PHP_WRENCHBOARD_API_OAMEYE_EXTNAME, + PHP_WRENCHBOARD_API_ROOT_EXTNAME, NULL, /* Functions */ - PHP_MINIT(wrenchboard_api_oameye), + PHP_MINIT(wrenchboard_api_root), NULL, /* MSHUTDOWN */ NULL, /* RINIT */ NULL, /* RSHUTDOWN */ - PHP_MINFO(wrenchboard_api_oameye), /* MINFO */ + PHP_MINFO(wrenchboard_api_root), /* MINFO */ #if ZEND_MODULE_API_NO >= 20010901 - PHP_WRENCHBOARD_API_OAMEYE_EXTVER, + PHP_WRENCHBOARD_API_ROOT_EXTVER, #endif STANDARD_MODULE_PROPERTIES }; -//#ifdef COMPILE_DL_WRENCHBOARD_API_OAMEYE +//#ifdef COMPILE_DL_WRENCHBOARD_API_ROOT extern "C" { - ZEND_GET_MODULE(wrenchboard_api_oameye) + ZEND_GET_MODULE(wrenchboard_api_root) } //#endif