From dcaa17e8e698da6c3722251ac907727f5e005a00 Mon Sep 17 00:00:00 2001 From: "oljas.jarasbaev" <oljas.jarasbaev@demlabs.net> Date: Wed, 7 Aug 2024 05:57:30 +0000 Subject: [PATCH] Feature 12444 --- cellframe-sdk | 2 +- dap-sdk | 2 +- dist/etc/network/Backbone/main.cfg | 2 +- dist/etc/network/KelVPN/main.cfg | 2 +- dist/etc/network/mileena/main.cfg | 2 +- dist/etc/network/riemann/main.cfg | 2 +- dist/etc/network/subzero/main.cfg | 2 +- dist/share/configs/cellframe-node.cfg | 23 +++++++---- dist/share/default.setup | 4 +- sources/main.c | 30 ++++++++------ sources/main_node_cli.c | 36 ++++++++++------- sources/main_node_tool.c | 56 ++++++++++++++------------- 12 files changed, 95 insertions(+), 68 deletions(-) diff --git a/cellframe-sdk b/cellframe-sdk index e7b90c2d2..a2ddc1b21 160000 --- a/cellframe-sdk +++ b/cellframe-sdk @@ -1 +1 @@ -Subproject commit e7b90c2d22ff38afbe6ce651880c33253a907d1d +Subproject commit a2ddc1b21683fcc069b2ca251dae90b319bfddfe diff --git a/dap-sdk b/dap-sdk index ee6070798..8ee681461 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit ee6070798fe4e3d22517babf78fdc48c987fb416 +Subproject commit 8ee6814617484e6d12004e64041ce737023c853d diff --git a/dist/etc/network/Backbone/main.cfg b/dist/etc/network/Backbone/main.cfg index 34146ab02..8c1f65afc 100755 --- a/dist/etc/network/Backbone/main.cfg +++ b/dist/etc/network/Backbone/main.cfg @@ -19,7 +19,7 @@ static_genesis_block=0xD3E07282FC1C4FC733AEE7898BA1017DF7659CA7B64047886FA12EDD8 [esbocs] -consensus_debug=true +consensus_debug=false #poa_mode=true min_validators_count=1 auth_certs_prefix=scorpion.master diff --git a/dist/etc/network/KelVPN/main.cfg b/dist/etc/network/KelVPN/main.cfg index 71bf2c3ea..c66ed2e76 100644 --- a/dist/etc/network/KelVPN/main.cfg +++ b/dist/etc/network/KelVPN/main.cfg @@ -18,7 +18,7 @@ is_static_genesis_block=true static_genesis_block=0xAB7EE08EF7FFD1D20A4660B7963601E831488AEA4B16149C02F6CCBD0847E858 [esbocs] -consensus_debug=true +consensus_debug=false min_validators_count=1 auth_certs_prefix=kelvpn.master auth_certs_count=3 diff --git a/dist/etc/network/mileena/main.cfg b/dist/etc/network/mileena/main.cfg index 00df2b460..af6982fcd 100755 --- a/dist/etc/network/mileena/main.cfg +++ b/dist/etc/network/mileena/main.cfg @@ -18,7 +18,7 @@ is_static_genesis_block=true static_genesis_block=0x1DB1E136B583A1553E4829D6A0453338B7413DDB1B12189F8456B064E822667F [esbocs] -consensus_debug=true +consensus_debug=false min_validators_count=2 auth_certs_prefix=mileena.master validators_addrs=[CCCC::1234::0000::0000,CCCC::1234::0000::0001] diff --git a/dist/etc/network/riemann/main.cfg b/dist/etc/network/riemann/main.cfg index 29f09c91f..a3917a8e9 100644 --- a/dist/etc/network/riemann/main.cfg +++ b/dist/etc/network/riemann/main.cfg @@ -18,7 +18,7 @@ is_static_genesis_block=true static_genesis_block=0x5FDA4B2952C89AB639AD77E00A8EAE9CBC5B472444F1003844DEAF3F4D618D0F [esbocs] -consensus_debug=true +consensus_debug=false min_validators_count=1 auth_certs_prefix=riemann.master validators_addrs=[6074::5C74::C320::A0F5,DBBA::AED3::2C72::87A7,FE4E::4EEC::007D::07E9] diff --git a/dist/etc/network/subzero/main.cfg b/dist/etc/network/subzero/main.cfg index 52e6b88aa..1f2d10a57 100644 --- a/dist/etc/network/subzero/main.cfg +++ b/dist/etc/network/subzero/main.cfg @@ -18,7 +18,7 @@ is_static_genesis_block=true static_genesis_block=0x4E4FC8F1B04683861370C023D23C4DD67CEF4B82698E405537BA64BDDF81CE26 [esbocs] -consensus_debug=true +consensus_debug=false min_validators_count=2 auth_certs_prefix=subzero.master validators_addrs=[6E38::C103::53BE::C7BD, 8CA6::AB31::5798::4469, 8EA1::0678::E93F::55B4] diff --git a/dist/share/configs/cellframe-node.cfg b/dist/share/configs/cellframe-node.cfg index 4e269e43b..1760cd1bf 100644 --- a/dist/share/configs/cellframe-node.cfg +++ b/dist/share/configs/cellframe-node.cfg @@ -88,6 +88,15 @@ auto_proc=false [chain_net] # debug_more=true +[blocks] +# debug_more=true + +[sign] +# debug_more=true + +[stake] +# debug_more=true + [stream_ch_chain] # Uncomment to have more debug information in stream channel Chain # False by default @@ -119,7 +128,7 @@ network_mask=255.255.255.0 [cli-server] enabled=true #listen_port_tcp=12345 -#listen_unix_socket_path={{CONFIGS_PATH}}/var/run/node_cli +#listen_unix_socket_path=../var/run/node_cli # Default permissions 770 # IMPORTANT! Its accessible for all the users in system! listen_unix_socket_permissions=777 @@ -129,17 +138,17 @@ listen_unix_socket_permissions=777 # 0 means auto detect threads_cnt=0 # By default notify opens at {CONFIGS_PATH}/var/run/node_notify -notify_path=${CONFIGS_PATH}/var/run/node_notify +notify_path=../var/run/node_notify #notify_permissions=770 #notify_user=myuser #notify_group=mygroup -pid_path=${CONFIGS_PATH}/var/run/cellframe-node.pid -log_file=${CONFIGS_PATH}/var/log/cellframe-node.log -wallets_path=${CONFIGS_PATH}/var/lib/wallet -ca_folders=[${CONFIGS_PATH}/var/lib/ca,${CONFIGS_PATH}/share/ca] +pid_path=../var/run/cellframe-node.pid +log_file=../var/log/cellframe-node.log +wallets_path=../var/lib/wallet +ca_folders=[../var/lib/ca,../share/ca] [global_db] -path=${CONFIGS_PATH}/var/lib/global_db +path=../var/lib/global_db driver= #debug_more=true diff --git a/dist/share/default.setup b/dist/share/default.setup index b5951deab..56dd7602d 100644 --- a/dist/share/default.setup +++ b/dist/share/default.setup @@ -78,7 +78,7 @@ config cellframe-node plugins enabled default false # all os except win uses unix socket for cli if ${HOST_OS} != Windows - config cellframe-node cli-server listen-path ensure [${CONFIGS_PATH}/var/run/node_cli] + config cellframe-node cli-server listen-path ensure [../var/run/node_cli] endif # windows use tcp/ip for conserver @@ -91,7 +91,7 @@ if Linux != ${HOST_OS} config cellframe-node plugins enabled ensure false endif -config cellframe-node plugins py_path ensure ${CONFIGS_PATH}/var/lib/plugins +config cellframe-node plugins py_path ensure ../var/lib/plugins config Backbone general node-role default full config KelVPN general node-role default full diff --git a/sources/main.c b/sources/main.c index ca2ac5815..ba2491ef2 100755 --- a/sources/main.c +++ b/sources/main.c @@ -109,7 +109,6 @@ #include "dap_chain_net_srv_stake_pos_delegate.h" #include "dap_chain_net_srv_stake_lock.h" -#include "dap_common.h" #include "dap_events_socket.h" #include "dap_client.h" #include "dap_http_simple.h" @@ -151,15 +150,24 @@ int main( int argc, const char **argv ) #if defined(_WIN32) && defined(NDEBUG) S_SetExceptionFilter( ); #endif -#ifdef _WIN32 - g_sys_dir_path = dap_strdup_printf("%s/%s", regGetUsrPath(), dap_get_appname()); -#elif DAP_OS_MAC - g_sys_dir_path = dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources"); -#elif DAP_OS_ANDROID - g_sys_dir_path = dap_strdup_printf("/storage/emulated/0/opt/%s",dap_get_appname()); -#elif DAP_OS_UNIX - g_sys_dir_path = dap_strdup_printf("/opt/%s", dap_get_appname()); -#endif + + // get relative path to config + if (argv[1] && argv[2] &&!dap_strcmp("-B" , argv[1])) + g_sys_dir_path = (char*)argv[2]; + + if (!g_sys_dir_path) { + #ifdef DAP_OS_WINDOWS + g_sys_dir_path = dap_strdup_printf("%s/%s", regGetUsrPath(), dap_get_appname()); + #elif DAP_OS_MAC + g_sys_dir_path = dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources"); + #elif DAP_OS_ANDROID + g_sys_dir_path = dap_strdup_printf("/storage/emulated/0/opt/%s",dap_get_appname()); + #elif DAP_OS_UNIX + g_sys_dir_path = dap_strdup_printf("/opt/%s", dap_get_appname()); + #endif + } + + log_it(L_DEBUG, "Use main path: %s", g_sys_dir_path); { char *l_log_dir = dap_strdup_printf("%s/var/log", g_sys_dir_path); @@ -186,7 +194,7 @@ int main( int argc, const char **argv ) #ifndef DAP_OS_WINDOWS char l_default_dir[MAX_PATH] = {'\0'}; sprintf(l_default_dir, "%s/tmp", g_sys_dir_path); - s_pid_file_path = dap_config_get_item_str_default(g_config, "resources", "pid_path", l_default_dir) ; + s_pid_file_path = dap_config_get_item_str_path_default(g_config, "resources", "pid_path", l_default_dir) ; save_process_pid_in_file(s_pid_file_path); #endif diff --git a/sources/main_node_cli.c b/sources/main_node_cli.c index 028d505ad..091ece818 100644 --- a/sources/main_node_cli.c +++ b/sources/main_node_cli.c @@ -60,21 +60,27 @@ int main(int argc, const char *argv[]) SetConsoleOutputCP(1252); WSADATA wsaData; WSAStartup(MAKEWORD(2,2), &wsaData); - g_sys_dir_path = dap_strdup_printf("%s/%s", regGetUsrPath(), NODE_NAME); -#elif DAP_OS_MAC - char * l_username = NULL; - exec_with_ret(&l_username,"whoami|tr -d '\n'"); - if (!l_username){ - printf("Fatal Error: Can't obtain username"); - return 2; - } - g_sys_dir_path = dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources", l_username); - DAP_DELETE(l_username); -#elif DAP_OS_ANDROID - g_sys_dir_path = dap_strdup_printf("/storage/emulated/0/opt/%s", NODE_NAME); -#elif DAP_OS_UNIX - g_sys_dir_path = dap_strdup_printf("/opt/%s", NODE_NAME); #endif + + // get relative path to config + int l_rel_path = 0; + if (argv[1] && argv[2] && !dap_strcmp("-B" , argv[1])) { + g_sys_dir_path = (char*)argv[2]; + l_rel_path = 1; + } + if (!g_sys_dir_path) { + #ifdef DAP_OS_WINDOWS + g_sys_dir_path = dap_strdup_printf("%s/%s", regGetUsrPath(), NODE_NAME); + #elif DAP_OS_MAC + g_sys_dir_path = dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources"); + #elif DAP_OS_ANDROID + g_sys_dir_path = dap_strdup_printf("/storage/emulated/0/opt/%s", NODE_NAME); + #elif DAP_OS_UNIX + g_sys_dir_path = dap_strdup_printf("/opt/%s", NODE_NAME); + #endif + } + + /*if (dap_common_init(dap_get_appname(), NULL, NULL) != 0) { printf("Fatal Error: Can't init common functions module"); return -2; @@ -86,7 +92,7 @@ int main(int argc, const char *argv[]) dap_config_init(l_config_dir); } dap_log_level_set(L_CRITICAL); - int res = dap_app_cli_main(NODE_NAME, argc, argv); + int res = dap_app_cli_main(NODE_NAME, l_rel_path ? argc - 2 : argc, l_rel_path ? argv + 2 : argv); switch (res) { case DAP_CLI_ERROR_FORMAT: printf("Response format error!\n"); diff --git a/sources/main_node_tool.c b/sources/main_node_tool.c index ababf8d5f..1f3030582 100644 --- a/sources/main_node_tool.c +++ b/sources/main_node_tool.c @@ -45,7 +45,7 @@ #define log_it(_log_level, string, ...) printf(string, ##__VA_ARGS__) #endif -static int s_init( int argc, const char * argv[] ); +static int s_init(); static void s_help( ); static int s_is_file_available (char *l_path, const char *name, const char *ext); static void s_fill_hash_key_for_data(dap_enc_key_t *key, void *data); @@ -112,7 +112,28 @@ struct options { int main(int argc, const char **argv) #endif { - int ret = s_init( argc, argv ); + dap_set_appname("cellframe-node"); + + // get relative path to config + int l_rel_path = 0; + if (argv[1] && argv[2] && !dap_strcmp("-B" , argv[1])) { + g_sys_dir_path = (char*)argv[2]; + l_rel_path = 1; + } + + if (!g_sys_dir_path) { + #ifdef DAP_OS_WINDOWS + g_sys_dir_path = dap_strdup_printf("%s/%s", regGetUsrPath(), dap_get_appname()); + #elif DAP_OS_MAC + g_sys_dir_path = dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources"); + #elif DAP_OS_ANDROID + g_sys_dir_path = dap_strdup_printf("/storage/emulated/0/opt/%s",dap_get_appname()); + #elif DAP_OS_UNIX + g_sys_dir_path = dap_strdup_printf("/opt/%s", dap_get_appname()); + #endif + } + + int ret = s_init(); if ( ret ) { log_it( L_ERROR, "Can't init modules" ); @@ -129,7 +150,7 @@ int main(int argc, const char **argv) bool l_find_cmd = false; bool l_find_subcmd = true; for (size_t i = 0; i < l_size; i++) { - int argv_index = 1; + int argv_index = 1 + l_rel_path*2; if (argc >= argv_index && !strncmp(s_opts[i].cmd, argv[argv_index], strlen (argv[argv_index]) + 1)) { l_find_cmd = true; l_find_subcmd = false; @@ -145,7 +166,7 @@ int main(int argc, const char **argv) } } if (match) { - int l_ret = s_opts[i].handler(argc, argv); + int l_ret = s_opts[i].handler(l_rel_path ? argc-2 : argc, l_rel_path ? argv+2 : argv); return l_ret; } } @@ -610,27 +631,8 @@ static int s_cert_get_addr(int argc, const char **argv) { * @param argv * @return */ -static int s_init( int argc, const char **argv ) +static int s_init() { - UNUSED(argc); - UNUSED(argv); - dap_set_appname("cellframe-node"); -#ifdef _WIN32 - g_sys_dir_path = dap_strdup_printf("%s/%s", regGetUsrPath(), dap_get_appname()); -#elif DAP_OS_MAC - char * l_username = NULL; - exec_with_ret(&l_username,"whoami|tr -d '\n'"); - if (!l_username){ - printf("Fatal Error: Can't obtain username"); - return 2; - } - g_sys_dir_path = dap_strdup_printf("/Applications/CellframeNode.app/Contents/Resources", l_username); - DAP_DELETE(l_username); -#elif DAP_OS_ANDROID - g_sys_dir_path = dap_strdup_printf("/storage/emulated/0/opt/%s",dap_get_appname()); -#elif DAP_OS_UNIX - g_sys_dir_path = dap_strdup_printf("/opt/%s", dap_get_appname()); -#endif if (dap_common_init(dap_get_appname(), NULL, NULL) != 0) { printf("Fatal Error: Can't init common functions module"); return -2; @@ -642,13 +644,15 @@ static int s_init( int argc, const char **argv ) g_config = dap_config_open(dap_get_appname()); if (g_config) { uint16_t l_ca_folders_size = 0; - char **l_ca_folders = dap_config_get_array_str(g_config, "resources", "ca_folders", &l_ca_folders_size); + char **l_ca_folders = dap_config_get_item_str_path_array(g_config, "resources", "ca_folders", &l_ca_folders_size); dap_stpcpy(s_system_ca_dir, l_ca_folders[0]); + dap_config_get_item_str_path_array_free(l_ca_folders, &l_ca_folders_size); int t = dap_strlen(s_system_ca_dir); if (s_system_ca_dir[t - 1] == '/') s_system_ca_dir[t-1] = '\0'; - const char *l_wallet_folder = dap_config_get_item_str(g_config, "resources", "wallets_path"); + char *l_wallet_folder = dap_config_get_item_str_path_default(g_config, "resources", "wallets_path", NULL); dap_stpcpy(s_system_wallet_dir, l_wallet_folder); + DAP_DEL_Z(l_wallet_folder); } else { dap_stpcpy(s_system_ca_dir, "./"); dap_stpcpy(s_system_wallet_dir, "./"); -- GitLab