diff --git a/dap-sdk/net/server/enc_server/dap_enc_http.c b/dap-sdk/net/server/enc_server/dap_enc_http.c index 69f6104fcc792915a79973c003aa9a865207b4c0..ebef39fd584423af4c5e45ab0e1dcab74139e43e 100644 --- a/dap-sdk/net/server/enc_server/dap_enc_http.c +++ b/dap-sdk/net/server/enc_server/dap_enc_http.c @@ -53,6 +53,14 @@ #define LOG_TAG "dap_enc_http" static dap_enc_acl_callback_t s_acl_callback = NULL; +static dap_enc_acl_callback_t s_acl_params_callback = NULL; + + +void dap_enc_http_set_acl_params_callback(dap_enc_acl_callback_t a_callback) +{ + s_acl_params_callback = a_callback; +} + int enc_http_init() { @@ -144,6 +152,15 @@ void enc_http_proc(struct dap_http_simple *cl_st, void * arg) } else { log_it(L_DEBUG, "Callback for ACL is not set, pass anauthorized"); } + if (s_acl_params_callback) { + if (!l_enc_key_ks->acl_bugreport) + l_enc_key_ks->acl_bugreport = s_acl_params_callback(&l_sign_hash); + else { + if (l_enc_key_ks->acl_bugreport[0] == false) { + l_enc_key_ks->acl_bugreport = s_acl_params_callback(&l_sign_hash); + } + } + } char encrypt_msg[DAP_ENC_BASE64_ENCODE_SIZE(l_pkey_exchange_key->pub_key_data_size) + 1]; size_t encrypt_msg_size = dap_enc_base64_encode(l_pkey_exchange_key->pub_key_data, l_pkey_exchange_key->pub_key_data_size, encrypt_msg, DAP_ENC_DATA_TYPE_B64); diff --git a/dap-sdk/net/server/enc_server/include/dap_enc_http.h b/dap-sdk/net/server/enc_server/include/dap_enc_http.h index 4660b5250969586abea87ba461115e6169929bbc..ea12e4dca6d454e1d1ab6aa431284a6639210683 100644 --- a/dap-sdk/net/server/enc_server/include/dap_enc_http.h +++ b/dap-sdk/net/server/enc_server/include/dap_enc_http.h @@ -82,4 +82,6 @@ void enc_http_delegate_delete(enc_http_delegate_t * dg); void enc_http_add_proc(struct dap_http * sh, const char * url); +void dap_enc_http_set_acl_params_callback(dap_enc_acl_callback_t a_callback); + #endif diff --git a/dap-sdk/net/server/enc_server/include/dap_enc_ks.h b/dap-sdk/net/server/enc_server/include/dap_enc_ks.h index 07c51b19ecf378acd9e7e776228aa7b89dbc4fe3..430a059e83c1f6d4badbb3ab52661cddbf1421ef 100644 --- a/dap-sdk/net/server/enc_server/include/dap_enc_ks.h +++ b/dap-sdk/net/server/enc_server/include/dap_enc_ks.h @@ -36,6 +36,7 @@ typedef struct dap_enc_ks_key{ time_t time_created; pthread_mutex_t mutex; uint8_t *acl_list; + uint8_t *acl_bugreport; UT_hash_handle hh; // makes this structure hashable with UTHASH library } dap_enc_ks_key_t; diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 3d092719310f7567c03f5ba33e174556bb251fb5..f5648db51df4f49f5987190ae1ca9dc5829a9c0f 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -117,6 +117,7 @@ static size_t s_max_links_count = 5;// by default 5 static size_t s_required_links_count = 3;// by default 3 static bool s_debug_more = false; + struct link_dns_request { uint32_t link_id; dap_chain_net_t * net; @@ -255,6 +256,8 @@ static int s_cli_net(int argc, char ** argv, char **str_reply); static bool s_seed_mode = false; static uint8_t *dap_chain_net_set_acl(dap_chain_hash_fast_t *a_pkey_hash); +uint8_t *dap_chain_net_set_acl_param(dap_chain_hash_fast_t *a_pkey_hash); + static dap_global_db_obj_callback_notify_t s_srv_callback_notify = NULL; @@ -303,6 +306,7 @@ int dap_chain_net_init() dap_chain_net_load_all(); dap_enc_http_set_acl_callback(dap_chain_net_set_acl); + log_it(L_NOTICE,"Chain networks initialized"); return 0; }