From 3d4d54d506e6656fbe9fc79bc2cbc11ab1bde6e0 Mon Sep 17 00:00:00 2001 From: Dmitriy Naidolinskiy <dmitriy.naidolinskiy@demlabs.net> Date: Fri, 31 Dec 2021 13:40:49 +0000 Subject: [PATCH] Feature 5271 --- dap-sdk/net/server/enc_server/dap_enc_http.c | 17 +++++++++++++++++ .../server/enc_server/include/dap_enc_http.h | 2 ++ .../net/server/enc_server/include/dap_enc_ks.h | 1 + modules/net/dap_chain_net.c | 4 ++++ 4 files changed, 24 insertions(+) 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 69f6104fcc..ebef39fd58 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 4660b52509..ea12e4dca6 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 07c51b19ec..430a059e83 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 3d09271931..f5648db51d 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; } -- GitLab