diff --git a/CMakeLists.txt b/CMakeLists.txt index 4983d5f5ebb82c93a404bc37b3bf65f8f93ebd4b..2d17df32a46a45aea07e5fdd52a393a0c79c6240 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ set(CMAKE_C_STANDARD 11) SET( CPACK_PACKAGE_NAME "${PROJECT_NAME}") SET( CPACK_PACKAGE_VERSION_MAJOR 3) SET( CPACK_PACKAGE_VERSION_MINOR 5) -SET( CPACK_PACKAGE_VERSION_PATCH 7) +SET( CPACK_PACKAGE_VERSION_PATCH 8) # init CellFrame SDK add_definitions("-DDAP_VERSION=\"${CPACK_PACKAGE_VERSION_MAJOR}\"") @@ -16,9 +16,9 @@ set(SUBMODULES_NO_BUILD ON) set(SUPPORT_PYTHON_PLUGINS ON) if (NOT WIN32) - set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-xchange srv-stake srv-vpn") + set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-xchange srv-stake modules-dynamic srv-vpn") else() - set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-xchange srv-stake") + set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-xchange srv-stake modules-dynamic") endif() include (cellframe-sdk/cmake/OS_Detection.cmake) @@ -143,7 +143,7 @@ if(UNIX AND NOT WIN32) target_link_libraries(${NODE_TARGET} ${ALL_LIBRARIES}) else() - target_link_libraries(${NODE_TARGET} ${NODE_LIBRARIES} ${CMAKE_DL_LIBS} pthread ) + target_link_libraries(${NODE_TARGET} ${NODE_LIBRARIES} pthread ) target_link_libraries(${NODE_CLI_TARGET} ${NODE_CLI_LIBRARIES} pthread ) target_link_libraries(${NODE_TOOL_TARGET} ${NODE_TOOL_LIBRARIES} pthread ) endif() diff --git a/cellframe-sdk b/cellframe-sdk index 3fffb23237376a17c146e17d343f7c204cceac01..8ec1a1ba820611ee2aa18d97a722b0391e7167fc 160000 --- a/cellframe-sdk +++ b/cellframe-sdk @@ -1 +1 @@ -Subproject commit 3fffb23237376a17c146e17d343f7c204cceac01 +Subproject commit 8ec1a1ba820611ee2aa18d97a722b0391e7167fc diff --git a/sources/main.c b/sources/main.c index 6945d5d2e776dd6f2bbae1beec37fb7b585731e1..2fe6e2113436b4ab28ffa609a64b2d80dc4b1a4a 100755 --- a/sources/main.c +++ b/sources/main.c @@ -59,6 +59,7 @@ #include "dap_http.h" #include "dap_http_folder.h" #include "dap_dns_server.h" +#include "dap_modules_dynamic_cdb.h" #include "dap_events.h" @@ -79,12 +80,9 @@ #include "dap_chain_net_srv_app.h" #include "dap_chain_net_srv_app_db.h" #include "dap_chain_net_srv_datum.h" -#include "dap_chain_net_bugreport.h" -#include "dap_chain_net_news.h" #include "dap_chain_net_srv_geoip.h" #ifdef DAP_OS_LINUX -#include <dlfcn.h> #include "dap_chain_net_srv_vpn.h" #include "dap_chain_net_srv_vpn_cdb.h" #include "dap_chain_net_srv_vpn_cdb_server_list.h" @@ -135,10 +133,8 @@ void parse_args( int argc, const char **argv ); void exit_if_server_already_running( void ); -bool s_node_load_cdb_lib(dap_http_t * a_server); static const char *s_pid_file_path = NULL; -static const char *s_default_path_modules = NULL; bool dap_chain_net_srv_pay_verificator(dap_chain_tx_out_cond_t *a_cond, dap_chain_datum_tx_t *a_tx) { return true; } @@ -167,7 +163,6 @@ int main( int argc, const char **argv ) #elif DAP_OS_UNIX g_sys_dir_path = dap_strdup_printf("/opt/%s", dap_get_appname()); #endif - s_default_path_modules = dap_strdup_printf("%s/var/modules/", g_sys_dir_path); { char l_log_path[MAX_PATH] = {'\0'}; @@ -415,18 +410,14 @@ int main( int argc, const char **argv ) // Init HTTP-specific values dap_http_new( l_server, dap_get_appname() ); - #ifdef DAP_OS_LINUX - #ifndef __ANDROID__ if( dap_config_get_item_bool_default(g_config,"cdb","enabled",false) ) { - if(s_node_load_cdb_lib(DAP_HTTP( l_server )) == false){ + if(dap_modules_dynamic_load_cdb(DAP_HTTP( l_server ))){ log_it(L_CRITICAL,"Can't init CDB module"); return -3; }else{ log_it(L_NOTICE, "Central DataBase (CDB) is initialized"); } } - #endif - #endif // Handshake URL enc_http_add_proc( DAP_HTTP(l_server), ENC_HTTP_URL ); @@ -435,18 +426,6 @@ int main( int argc, const char **argv ) dap_stream_add_proc_http( DAP_HTTP(l_server), STREAM_URL ); dap_stream_ctl_add_proc( DAP_HTTP(l_server), STREAM_CTL_URL ); - // BugReport URLs - bool l_bugreport_url_enabled = dap_config_get_item_bool_default(g_config, "server", "bugreport_url_enabled", false); - if(l_bugreport_url_enabled) { - dap_chain_net_bugreport_add_proc(DAP_HTTP(l_server)); - } - - // News URLs - bool l_news_url_enabled = dap_config_get_item_bool_default(g_config, "server", "news_url_enabled", false); - if(l_news_url_enabled) { - dap_chain_net_news_add_proc(DAP_HTTP(l_server)); - } - const char *str_start_mempool = dap_config_get_item_str( g_config, "mempool", "accept" ); if ( str_start_mempool && !strcmp(str_start_mempool, "true")) { dap_chain_mempool_add_proc(DAP_HTTP(l_server), MEMPOOL_URL); @@ -604,36 +583,3 @@ void exit_if_server_already_running( void ) { } } -#ifdef DAP_OS_LINUX -#ifndef __ANDROID__ -bool s_node_load_cdb_lib(dap_http_t * a_server){ - char l_lib_path[MAX_PATH] = {'\0'}; - const char * l_cdb_so_name = "libcellframe-node-cdb.so"; - dap_sprintf(l_lib_path, "%s/%s", s_default_path_modules, l_cdb_so_name); - - void* l_cdb_handle = NULL; - l_cdb_handle = dlopen(l_lib_path, RTLD_NOW); - if(!l_cdb_handle){ - log_it(L_ERROR,"Can't load %s module: %s", l_cdb_so_name, dlerror()); - return false; - } - - int (*dap_chain_net_srv_vpn_cdb_init)(dap_http_t*); - const char * l_init_func_name = "dap_chain_net_srv_vpn_cdb_init"; - *(void **) (&dap_chain_net_srv_vpn_cdb_init) = dlsym(l_cdb_handle, l_init_func_name); - char* error; - if (( error = dlerror()) != NULL) { - log_it(L_ERROR,"%s module: %s error loading %s (%s)", l_cdb_so_name, l_init_func_name, error); - return false; - } - - int l_init_res = (*dap_chain_net_srv_vpn_cdb_init)(a_server); - if(l_init_res){ - log_it(L_ERROR,"%s: %s returns %d", l_cdb_so_name, l_init_func_name, error); - return false; - } - - return true; -} -#endif -#endif