From 9253dd4805311bc6941f7ab497b975b5e2aac294 Mon Sep 17 00:00:00 2001 From: "alexey.stratulat" <alexey.stratulat@demlabs.net> Date: Mon, 10 Jun 2024 06:11:01 +0000 Subject: [PATCH] Bugfix 11952 --- modules/net/dap_chain_net.c | 44 +++++++++++------------------ modules/net/dap_chain_node_client.c | 3 +- 2 files changed, 18 insertions(+), 29 deletions(-) diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index f5e39df6e4..74b0019eac 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -339,12 +339,7 @@ int dap_chain_net_init() char *dap_chain_net_get_gdb_group_acl(dap_chain_net_t *a_net) { if (a_net) { - const char l_path[] = "network/"; - char l_cfg_path[strlen(a_net->pub.name) + strlen(l_path) + 1]; - strcpy(l_cfg_path, l_path); - strcat(l_cfg_path, a_net->pub.name); - dap_config_t *l_cfg = dap_config_open(l_cfg_path); - const char *l_auth_gdb = dap_config_get_item_str(l_cfg, "auth", "acl_accept_ca_gdb"); + const char *l_auth_gdb = dap_config_get_item_str(a_net->pub.config, "auth", "acl_accept_ca_gdb"); if (l_auth_gdb) { return dap_strdup_printf("%s.%s", a_net->pub.gdb_groups_prefix, l_auth_gdb); } @@ -2151,10 +2146,7 @@ bool s_net_load(void *a_arg) dap_chain_net_t *l_net = a_arg; int l_err_code = 0; - char *l_cfg_path = dap_strdup_printf("network/%s", l_net->pub.name); - dap_config_t *l_cfg = dap_config_open(l_cfg_path); - DAP_DELETE(l_cfg_path); - if (!l_cfg) { + if (!l_net->pub.config) { log_it(L_ERROR,"Can't open default network config"); l_err_code = -1; goto ret; @@ -2237,7 +2229,7 @@ bool s_net_load(void *a_arg) case NODE_ROLE_CELL_MASTER: case NODE_ROLE_MASTER:{ uint16_t l_proc_chains_count=0; - char **l_proc_chains = dap_config_get_array_str(l_cfg, "role-master", "proc_chains", &l_proc_chains_count); + char **l_proc_chains = dap_config_get_array_str(l_net->pub.config, "role-master", "proc_chains", &l_proc_chains_count); for (size_t i = 0; i< l_proc_chains_count ; i++) { dap_chain_id_t l_chain_id = {}; if (dap_chain_id_parse(l_proc_chains[i], &l_chain_id) == 0) { @@ -2261,7 +2253,7 @@ bool s_net_load(void *a_arg) l_net_pvt->load_mode = false; - l_net_pvt->balancer_type = dap_config_get_item_bool_default(l_cfg, "general", "use_dns_links", false); + l_net_pvt->balancer_type = dap_config_get_item_bool_default(l_net->pub.config, "general", "use_dns_links", false); // Init GlobalDB clusters for mempool, service and nodes (with aliases) char *l_gdb_groups_mask = NULL; @@ -2322,13 +2314,14 @@ bool s_net_load(void *a_arg) dap_chain_net_add_nodelist_notify_callback(l_net, s_nodelist_change_notify, l_net); if (dap_link_manager_add_net(l_net->pub.id.uint64, l_net_pvt->nodes_cluster->links_cluster, - dap_config_get_item_uint16_default(l_cfg, "general", "links_required", 3))) { + dap_config_get_item_uint16_default(l_net->pub.config, + "general", "links_required", 3))) { log_it(L_WARNING, "Can't add net %s to link manager", l_net->pub.name); } DL_FOREACH(l_net->pub.chains, l_chain) if (l_chain->callback_created) - l_chain->callback_created(l_chain, l_cfg); + l_chain->callback_created(l_chain, l_net->pub.config); if ( dap_config_get_item_bool_default(g_config, "server", "enabled", false) ) { if ( !l_net_pvt->node_info->ext_port ) { @@ -2368,10 +2361,12 @@ bool s_net_load(void *a_arg) l_net_pvt->node_info->cell_id.uint64); // TODO rework alias concept - const char * l_node_addr_type = dap_config_get_item_str_default(l_cfg , "general", "node_addr_type", "auto"); + const char * l_node_addr_type = dap_config_get_item_str_default(l_net->pub.config , + "general", "node_addr_type", "auto"); if (!dap_strcmp(l_node_addr_type, "static")) { - const char *l_node_alias_str = dap_config_get_item_str_default(l_cfg, "general", "node-addr", - dap_config_get_item_str(l_cfg, "general", "node-alias")); + const char *l_node_alias_str = dap_config_get_item_str_default(l_net->pub.config, "general", "node-addr", + dap_config_get_item_str(l_net->pub.config, + "general", "node-alias")); if (l_node_alias_str) { dap_stream_node_addr_t *l_alias_addr = dap_chain_node_alias_find(l_net, l_node_alias_str); if (!l_alias_addr) @@ -2389,8 +2384,6 @@ bool s_net_load(void *a_arg) ret: if (l_err_code) log_it(L_ERROR, "Loading chains of net %s finished with (%d) error code.", l_net->pub.name, l_err_code); - if (l_cfg) - dap_config_close(l_cfg); pthread_mutex_lock(&s_net_cond_lock); s_net_loading_count--; pthread_cond_signal(&s_net_cond); @@ -3030,11 +3023,7 @@ char *dap_chain_net_verify_datum_err_code_to_str(dap_chain_datum_t *a_datum, int */ static bool s_net_check_acl(dap_chain_net_t *a_net, dap_chain_hash_fast_t *a_pkey_hash) { - const char l_path[] = "network/"; - char l_cfg_path[strlen(a_net->pub.name) + strlen(l_path) + 1]; - snprintf(l_cfg_path, sizeof(l_cfg_path), "%s%s", l_path, a_net->pub.name); - dap_config_t *l_cfg = dap_config_open(l_cfg_path); - const char *l_auth_type = dap_config_get_item_str(l_cfg, "auth", "type"); + const char *l_auth_type = dap_config_get_item_str(a_net->pub.config, "auth", "type"); bool l_authorized = true; if (l_auth_type && !strcmp(l_auth_type, "ca")) { if (dap_hash_fast_is_blank(a_pkey_hash)) { @@ -3044,7 +3033,7 @@ static bool s_net_check_acl(dap_chain_net_t *a_net, dap_chain_hash_fast_t *a_pke char l_auth_hash_str[DAP_CHAIN_HASH_FAST_STR_SIZE]; dap_chain_hash_fast_to_str(a_pkey_hash, l_auth_hash_str, sizeof(l_auth_hash_str)); uint16_t l_acl_list_len = 0; - char **l_acl_list = dap_config_get_array_str(l_cfg, "auth", "acl_accept_ca_list", &l_acl_list_len); + char **l_acl_list = dap_config_get_array_str(a_net->pub.config, "auth", "acl_accept_ca_list", &l_acl_list_len); for (uint16_t i = 0; i < l_acl_list_len; i++) { if (!strcmp(l_acl_list[i], l_auth_hash_str)) { l_authorized = true; @@ -3052,7 +3041,7 @@ static bool s_net_check_acl(dap_chain_net_t *a_net, dap_chain_hash_fast_t *a_pke } } if (!l_authorized) { - const char *l_acl_gdb = dap_config_get_item_str(l_cfg, "auth", "acl_accept_ca_gdb"); + const char *l_acl_gdb = dap_config_get_item_str(a_net->pub.config, "auth", "acl_accept_ca_gdb"); if (l_acl_gdb) { size_t l_objs_count; dap_global_db_obj_t *l_objs = dap_global_db_get_all_sync(l_acl_gdb, &l_objs_count); @@ -3066,7 +3055,7 @@ static bool s_net_check_acl(dap_chain_net_t *a_net, dap_chain_hash_fast_t *a_pke } } if (!l_authorized) { - const char *l_acl_chains = dap_config_get_item_str(l_cfg, "auth", "acl_accept_ca_chains"); + const char *l_acl_chains = dap_config_get_item_str(a_net->pub.config, "auth", "acl_accept_ca_chains"); if (l_acl_chains && !strcmp(l_acl_chains, "all")) { dap_list_t *l_certs = dap_cert_get_all_mem(); for (dap_list_t *l_tmp = l_certs; l_tmp && !l_authorized; l_tmp = dap_list_next(l_tmp)) { @@ -3083,7 +3072,6 @@ static bool s_net_check_acl(dap_chain_net_t *a_net, dap_chain_hash_fast_t *a_pke } } } - dap_config_close(l_cfg); return l_authorized; } diff --git a/modules/net/dap_chain_node_client.c b/modules/net/dap_chain_node_client.c index 08fcc563b4..a30ca8c621 100644 --- a/modules/net/dap_chain_node_client.c +++ b/modules/net/dap_chain_node_client.c @@ -293,7 +293,8 @@ bool dap_chain_node_client_connect(dap_chain_node_client_t *a_node_client, const dap_client_set_is_always_reconnect(a_node_client->client, false); a_node_client->client->_inheritor = a_node_client; dap_client_set_active_channels_unsafe(a_node_client->client, a_active_channels); - dap_client_set_auth_cert(a_node_client->client, a_node_client->net->pub.name); + const char *l_cert_node_name = dap_config_get_item_str(a_node_client->net->pub.config, "general", "auth_cert"); + dap_client_set_auth_cert(a_node_client->client, l_cert_node_name); char *l_host_addr = a_node_client->info->ext_host; if ( !*l_host_addr || !strcmp(l_host_addr, "::") || !a_node_client->info->ext_port ) { -- GitLab