From 69766d73f500b5e6f7f75b2ed5b850565bd279ac Mon Sep 17 00:00:00 2001 From: Aleksandr Lysikov <lysikov@inbox.ru> Date: Sat, 18 May 2019 14:02:08 +0500 Subject: [PATCH] some changed client authorisation --- dap_chain_net_srv_vpn.c | 56 ++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/dap_chain_net_srv_vpn.c b/dap_chain_net_srv_vpn.c index 77a8e4b..b1e7679 100755 --- a/dap_chain_net_srv_vpn.c +++ b/dap_chain_net_srv_vpn.c @@ -1,6 +1,7 @@ /* * Authors: * Dmitriy A. Gearasimov <gerasimov.dmitriy@demlabs.net> + * Aleksandr Lysikov <alexander.lysikov@demlabs.net> * DeM Labs Inc. https://demlabs.net * Kelvin Project https://github.com/kelvinblockchain * Copyright (c) 2017-2018 @@ -317,17 +318,27 @@ void srv_ch_sf_tun_destroy() raw_server->tun_fd = -1; } - static void callback_trafic(dap_client_remote_t *a_client, dap_stream_ch_t* a_ch) { - dap_stream_ch_vpn_t *l_ch_vpn = (dap_stream_ch_vpn_t*)(a_ch->internal); + dap_stream_ch_vpn_t *l_ch_vpn = CH_SF(a_ch); + //dap_stream_ch_vpn_t *l_ch_vpn = (dap_stream_ch_vpn_t*)(a_ch->internal); if(!a_client || !l_ch_vpn) return; dap_chain_net_srv_abstract_t *srv_common = &l_ch_vpn->net_srv.srv_common; - int bytes_max = srv_common->proposal_params.vpn.limit_bytes; - int bytes_cur = a_client->download_stat.buf_size_total; + size_t bytes_max = srv_common->proposal_params.vpn.limit_bytes; + static size_t bytes_cur_prev = 0; + size_t bytes_cur = a_client->download_stat.buf_size_total; + size_t delta_bytes = (bytes_cur > bytes_cur_prev) ? bytes_cur - bytes_cur_prev : 0; + // make receipt transaction + if(delta_bytes) { + const dap_chain_net_srv_abstract_t *l_cond = &(l_ch_vpn->net_srv.srv_common); + //l_cond-> + //if() + //if(!dap_chain_mempool_tx_create_receipt(delta_bytes)) + // bytes_cur_prev = bytes_cur; // if transaction added successfully + } // no more traffic -> disconnect? - if(bytes_cur>=bytes_max){ + if(bytes_cur >= bytes_max) { //dap_stream_delete(a_ch->stream); //dap_stream_ch_delete(a_ch); //srv_ch_sf_delete(a_ch, NULL); @@ -335,7 +346,6 @@ static void callback_trafic(dap_client_remote_t *a_client, dap_stream_ch_t* a_ch } - /** * @brief stream_sf_new Callback to constructor of object of Ch * @param ch @@ -348,34 +358,28 @@ void srv_ch_sf_new(dap_stream_ch_t* ch, void* arg) pthread_mutex_init(&sf->mutex, NULL); sf->raw_l3_sock = socket(PF_INET, SOCK_RAW, IPPROTO_RAW); // - if(ch->stream->service_key) { - - char **l_str = dap_strsplit(ch->stream->service_key, ";", -1); - char *l_addr_base58 = NULL; - char *l_sign_txt = NULL; - if(dap_str_countv(l_str) == 2) { - l_addr_base58 = l_str[0]; - l_sign_txt = l_str[1]; - } - l_addr_base58 = - "RpiDC8c1SxrT7TUExyGWNErgV6HtwkKhSd1yLEkTA9qHcSiYA4GXjE67KJQay2TzHdG2ouk42d8GgLyABu6rP55JeFYzBkqZ7CqijDEw"; - l_sign_txt = "123"; - uint8_t *l_sign = l_sign_txt; - size_t l_sign_size = 0; + if(ch->stream->session->service_key) { + + char *l_addr_base58; + char *l_sign_hash_str; + ch->stream->session->service_key = + "RpiDC8c1SxrT7TUExyGWNErgV6HtwkKhSd1yLEkTA9qHcSiYA4GXjE67KJQay2TzHdG2ouk42d8GgLyABu6rP55JeFYzBkqZ7CqijDEw;12345"; + const dap_chain_net_srv_abstract_t *l_cond = NULL; - uint64_t l_value = dap_chain_net_srv_client_auth(l_addr_base58, l_sign, l_sign_size, &l_cond); + // get value for service and fill l_cond struct + uint64_t l_value = dap_chain_net_srv_client_auth(ch->stream->session->service_key, &l_cond); // add service - //if(l_cond && l_value>0) - { + if(l_cond && l_value > 0) + { dap_chain_net_srv_t l_srv; - memset(&l_srv,0,sizeof(dap_chain_net_srv_t)); + memset(&l_srv, 0, sizeof(dap_chain_net_srv_t)); l_srv.callback_trafic = callback_trafic; // debug l_srv.srv_common.proposal_params.vpn.limit_bytes = 2000; if(l_cond) memcpy(&l_srv.srv_common, l_cond, sizeof(dap_chain_net_srv_abstract_t)); - dap_chain_net_srv_gen_uid((uint8_t*)&l_srv.uid,sizeof(l_srv.uid)); + dap_chain_net_srv_gen_uid((uint8_t*) &l_srv.uid, sizeof(l_srv.uid)); dap_chain_net_srv_add(&l_srv); memcpy(&sf->net_srv, &l_srv, sizeof(dap_chain_net_srv_t)); // Unique ID for service. } @@ -504,7 +508,7 @@ void srv_ch_sf_packet_in(dap_stream_ch_t* ch, void* arg) sizeof(dap_stream_ch_vpn_remote_single_t)); n_client->ch = ch; - if(count_free_addr > 0){ + if(count_free_addr > 0) { n_addr.s_addr = list_addr_head->addr.s_addr; LL_DELETE(list_addr_head, list_addr_head); } -- GitLab