diff --git a/modules/mempool/dap_chain_mempool.c b/modules/mempool/dap_chain_mempool.c index 28ce8491f0bd1248a68cef2b09d6b98480fb1624..9b4c4ebe29990324b568e1323b28a9d8ef8a9eac 100644 --- a/modules/mempool/dap_chain_mempool.c +++ b/modules/mempool/dap_chain_mempool.c @@ -557,7 +557,7 @@ dap_chain_hash_fast_t* dap_chain_proc_tx_create_cond(dap_chain_net_t * a_net, if(a_net->pub.default_chain) l_chain = a_net->pub.default_chain; else - dap_chain_net_get_chain_by_chain_type(a_net, CHAIN_TYPE_TX); + l_chain = dap_chain_net_get_chain_by_chain_type(a_net, CHAIN_TYPE_TX); if(!l_chain) return NULL; diff --git a/modules/service/vpn/dap_chain_net_srv_vpn_cdb.c b/modules/service/vpn/dap_chain_net_srv_vpn_cdb.c index 6ab2d43a962fe79c19c19afd8c6dc6f43a574257..08045e4c3c44b31f3b2f89fed123711fa505e011 100644 --- a/modules/service/vpn/dap_chain_net_srv_vpn_cdb.c +++ b/modules/service/vpn/dap_chain_net_srv_vpn_cdb.c @@ -115,7 +115,7 @@ int dap_chain_net_srv_vpn_cdb_init(dap_http_t * a_http) "\tShow all users\n" "vpn_cdb serial generate -n <number of serial keys>] [-acive_days <active days that left for serial>]\n" "\tGenerate new serial keys\n" - "vpn_cdb serial list [-n <How many show serial keys>] [-shift <How many skip serial keys>] [-nototal]\n" + "vpn_cdb serial list [-n <How many show serial keys>] [-shift <How many skip serial keys>] [-activated_only|-inactive_only] [-nototal]\n" "\tShow serial keys\n" "vpn_cdb serial update -serial <serial keys> -acive_days <active days that left for serial>\n" "\tEdit serial key\n" diff --git a/modules/service/vpn/dap_chain_net_srv_vpn_cdb_auth.c b/modules/service/vpn/dap_chain_net_srv_vpn_cdb_auth.c index d68c5d7a24d66592e64026372ce1106026d3c6f8..6da0d00d199bc7157bbf827478cfa9e340e9bff5 100644 --- a/modules/service/vpn/dap_chain_net_srv_vpn_cdb_auth.c +++ b/modules/service/vpn/dap_chain_net_srv_vpn_cdb_auth.c @@ -458,12 +458,8 @@ size_t dap_serial_key_len(dap_serial_key_t *a_serial_key) } /** - * @brief dap_chain_net_srv_vpn_cdb_auth_cli_cmd_serial - * @param a_user_str - * @param a_arg_index - * @param a_argc - * @param a_argv - * @param a_str_reply + * @brief dap_chain_net_srv_vpn_cdb_auth_get_serial_param + * @param a_serial_str * @param a_group_out * @return */ @@ -489,7 +485,7 @@ dap_serial_key_t* dap_chain_net_srv_vpn_cdb_auth_get_serial_param(const char *a_ /** * @brief dap_chain_net_srv_vpn_cdb_auth_cli_cmd_serial - * @param a_user_str + * @param a_serial_str * @param a_arg_index * @param a_argc * @param a_argv @@ -504,25 +500,66 @@ int dap_chain_net_srv_vpn_cdb_auth_cli_cmd_serial(const char *a_serial_str, int const char * l_serial_count_str = NULL; const char * l_serial_shift_str = NULL; int l_serial_nototal = dap_chain_node_cli_find_option_val(a_argv, a_arg_index, a_argc, "-nototal", NULL); + int l_serial_show_activated_only = dap_chain_node_cli_find_option_val(a_argv, a_arg_index, a_argc, "-activated_only", NULL); + int l_serial_show_inactive_only = dap_chain_node_cli_find_option_val(a_argv, a_arg_index, a_argc, "-inactive_only", NULL); dap_chain_node_cli_find_option_val(a_argv, a_arg_index, a_argc, "-n", &l_serial_count_str); dap_chain_node_cli_find_option_val(a_argv, a_arg_index, a_argc, "-shift", &l_serial_shift_str); - size_t l_serial_count = l_serial_count_str ? strtoll(l_serial_count_str, NULL, 10) : 0; - size_t l_serial_shift = l_serial_shift_str ? strtoll(l_serial_shift_str, NULL, 10)+1 : 1; - size_t l_total = dap_chain_global_db_driver_count(s_group_serials, l_serial_shift); - l_serial_count = l_serial_count ? min(l_serial_count, l_total - l_serial_shift) : l_total; - dap_store_obj_t *l_obj = dap_chain_global_db_driver_cond_read(s_group_serials, l_serial_shift, &l_serial_count); + + if(l_serial_show_activated_only && l_serial_show_inactive_only){ + dap_chain_node_cli_set_reply_text(a_str_reply, "use onle one option '-activated_only' or '-inactive_only'"); + return -1; + } + long long l_serial_count_tmp = l_serial_count_str ? strtoll(l_serial_count_str, NULL, 10) : 0; + long long l_serial_shift_tmp = l_serial_shift_str ? strtoll(l_serial_shift_str, NULL, 10) : 0; + size_t l_serial_count = l_serial_count_tmp > 0 ? l_serial_count_tmp : 0; + size_t l_serial_shift = l_serial_shift_tmp > 0 ? l_serial_shift_tmp : 0; + //size_t l_serial_shift = l_serial_shift_str ? strtoll(l_serial_shift_str, NULL, 10)+1 : 1; + //size_t l_total = dap_chain_global_db_driver_count(s_group_serials, l_serial_shift); + //l_serial_count = l_serial_count ? min(l_serial_count, l_total - l_serial_shift) : l_total; + size_t l_serial_count_noactivated = 0; + size_t l_serial_count_activated = 0; + // read inactive serials + dap_store_obj_t *l_obj = l_serial_show_inactive_only ? dap_chain_global_db_driver_cond_read(s_group_serials, 0, &l_serial_count_noactivated) : NULL; + // read activated serials + dap_store_obj_t *l_obj_activated = l_serial_show_activated_only ? dap_chain_global_db_driver_cond_read(s_group_serials_activated, 0, &l_serial_count_activated) : 0; + size_t l_total = l_serial_count_noactivated + l_serial_count_activated; if(l_serial_count > 0) { dap_string_t *l_keys = l_serial_count > 1 ? dap_string_new("serial keys:\n") : dap_string_new("serial key: "); - for(size_t i = 0; i < l_serial_count; i++) { + size_t l_total_actual = 0; + for(size_t i = 0; i < l_serial_count_noactivated; i++) { if((l_obj + i)->value_len < sizeof(dap_serial_key_t)) continue; + if(l_serial_count > 0 && l_total_actual >= l_serial_count) + break; dap_serial_key_t *l_serial = (dap_serial_key_t*) (l_obj + i)->value; - dap_string_append(l_keys, l_serial->header.serial); - //if(i < l_serial_count - 1) + if(l_serial_shift > 0) + l_serial_shift--; + else { + dap_string_append(l_keys, l_serial->header.serial); + dap_string_append(l_keys, " inactive"); + //if(i < l_serial_count - 1) dap_string_append(l_keys, "\n"); + l_total_actual++; + } + } + for(size_t i = 0; i < l_serial_count_activated; i++) { + if((l_obj_activated + i)->value_len < sizeof(dap_serial_key_t)) + continue; + dap_serial_key_t *l_serial = (dap_serial_key_t*) (l_obj_activated + i)->value; + if(l_serial_count > 0 && l_total_actual >= l_serial_count) + break; + if(l_serial_shift > 0) + l_serial_shift--; + else { + dap_string_append(l_keys, l_serial->header.serial); + dap_string_append(l_keys, " activated"); + //if(i < l_serial_count - 1) + dap_string_append(l_keys, "\n"); + l_total_actual++; + } } if(!l_serial_nototal){ - char *l_total_str = dap_strdup_printf("total %u keys", l_total); + char *l_total_str = dap_strdup_printf("total %u keys", l_total_actual); dap_string_append(l_keys, l_total_str); DAP_DELETE(l_total_str); //dap_chain_node_cli_set_reply_text(a_str_reply, "\ntotal %u keys", l_total); @@ -530,7 +567,8 @@ int dap_chain_net_srv_vpn_cdb_auth_cli_cmd_serial(const char *a_serial_str, int } dap_chain_node_cli_set_reply_text(a_str_reply, "%s", l_keys->str); dap_string_free(l_keys, true); - dap_store_obj_free(l_obj, l_serial_count); + dap_store_obj_free(l_obj, l_serial_count_noactivated); + dap_store_obj_free(l_obj_activated, l_serial_count_activated); } else dap_chain_node_cli_set_reply_text(a_str_reply, "keys not found"); diff --git a/modules/service/vpn/include/dap_chain_net_srv_vpn_cdb_auth.h b/modules/service/vpn/include/dap_chain_net_srv_vpn_cdb_auth.h index 07556ea38d24ddbbca21a90d6ce4b78b7b9f1c16..f777af4abbde6f9eaab5b40e517a97bb657e3a59 100644 --- a/modules/service/vpn/include/dap_chain_net_srv_vpn_cdb_auth.h +++ b/modules/service/vpn/include/dap_chain_net_srv_vpn_cdb_auth.h @@ -46,7 +46,7 @@ void dap_chain_net_srv_vpn_cdb_auth_deinit(); void dap_chain_net_srv_vpn_cdb_auth_add_proc(dap_http_t * a_http, const char * a_url); void dap_chain_net_srv_vpn_cdb_auth_set_callback(dap_enc_http_callback_t a_callback_success); -int dap_chain_net_srv_vpn_cdb_auth_cli_cmd_serial(const char *a_user_str, int a_arg_index, int a_argc, char ** a_argv, char **a_str_reply); +int dap_chain_net_srv_vpn_cdb_auth_cli_cmd_serial(const char *a_serial_str, int a_arg_index, int a_argc, char ** a_argv, char **a_str_reply); int dap_chain_net_srv_vpn_cdb_auth_cli_cmd_user(const char *a_user_str, int a_arg_index, int a_argc, char ** a_argv, char **a_str_reply); int dap_chain_net_srv_vpn_cdb_auth_check_login(const char * a_login, const char * a_password);