Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • cellframe/cellframe-sdk
  • MIKA83/cellframe-sdk
2 results
Show changes
Commits on Source (4)
Subproject commit dd493a209579b92a9935d59c546ce276d0e653c4
Subproject commit 6947b1238f6057bce9733c4084cf41f2a01d434f
......@@ -43,7 +43,7 @@ const dap_chain_addr_t c_dap_chain_addr_blank = {0};
int dap_id_uint64_parse(const char *a_id_str, uint64_t *a_id)
{
if (sscanf(a_id_str, "0x%16"DAP_UINT64_FORMAT_X, a_id) != 1 &&
if (!a_id_str || !a_id || sscanf(a_id_str, "0x%16"DAP_UINT64_FORMAT_X, a_id) != 1 &&
sscanf(a_id_str, "0x%16"DAP_UINT64_FORMAT_x, a_id) != 1 &&
sscanf(a_id_str, "%"DAP_UINT64_FORMAT_U, a_id) != 1) {
log_it (L_ERROR, "Can't recognize '%s' string as 64-bit id, hex or dec", a_id_str);
......
......@@ -108,7 +108,7 @@ DAP_STATIC_INLINE bool dap_chain_node_addr_str_check(const char *a_addr_str) {
DAP_STATIC_INLINE int dap_chain_node_addr_from_str(dap_chain_node_addr_t *a_addr, const char *a_addr_str)
{
if (!a_addr){
if (!a_addr || !a_addr_str){
return -1;
}
if (sscanf(a_addr_str, NODE_ADDR_FP_STR, NODE_ADDR_FPS_ARGS(a_addr)) == 4)
......@@ -207,6 +207,25 @@ DAP_STATIC_INLINE const char *dap_chain_srv_unit_enum_to_str(dap_chain_srv_unit_
}
}
DAP_STATIC_INLINE dap_chain_srv_unit_enum_t dap_chain_srv_str_to_unit_enum(char* a_price_unit_str) {
if (!a_price_unit_str)
return SERV_UNIT_UNDEFINED;
if (!dap_strcmp(a_price_unit_str, "MB")){
return SERV_UNIT_MB;
} else if (!dap_strcmp(a_price_unit_str, "SEC")){
return SERV_UNIT_SEC;
} else if (!dap_strcmp(a_price_unit_str, "DAY")){
return SERV_UNIT_DAY;
} else if (!dap_strcmp(a_price_unit_str, "KB")){
return SERV_UNIT_KB;
} else if (!dap_strcmp(a_price_unit_str, "B")){
return SERV_UNIT_B;
} else if (!dap_strcmp(a_price_unit_str, "PCS")){
return SERV_UNIT_PCS;
}
return SERV_UNIT_UNDEFINED;
}
typedef union {
uint8_t raw[4];
uint32_t uint32;
......
......@@ -80,6 +80,7 @@ static bool s_pay_verificator_callback(dap_ledger_t * a_ledger, dap_chain_tx_out
dap_chain_datum_tx_t *a_tx_in, bool a_owner);
static bool s_fee_verificator_callback(dap_ledger_t * a_ledger, dap_chain_tx_out_cond_t *a_cond,
dap_chain_datum_tx_t *a_tx_in, bool a_owner);
static int s_str_to_price_unit(char* a_price_unit_str, dap_chain_net_srv_price_unit_uid_t* a_price_unit);
/**
* @brief dap_chain_net_srv_init
......@@ -248,18 +249,18 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
const char *l_units_str = NULL;
dap_cli_server_cmd_find_option_val(argv, arg_index, argc, "-units", &l_units_str);
char *l_order_hash_hex_str;
char *l_order_hash_base58_str;
char *l_order_hash_hex_str = NULL;
char *l_order_hash_base58_str = NULL;
// datum hash may be in hex or base58 format
if(!dap_strncmp(l_order_hash_str, "0x", 2) || !dap_strncmp(l_order_hash_str, "0X", 2)) {
l_order_hash_hex_str = dap_strdup(l_order_hash_str);
l_order_hash_base58_str = dap_enc_base58_from_hex_str_to_str(l_order_hash_str);
}
else {
l_order_hash_hex_str = dap_enc_base58_to_hex_str_from_str(l_order_hash_str);
l_order_hash_base58_str = dap_strdup(l_order_hash_str);
if (l_order_hash_str) {
if(!dap_strncmp(l_order_hash_str, "0x", 2) || !dap_strncmp(l_order_hash_str, "0X", 2)) {
l_order_hash_hex_str = dap_strdup(l_order_hash_str);
l_order_hash_base58_str = dap_enc_base58_from_hex_str_to_str(l_order_hash_str);
} else {
l_order_hash_hex_str = dap_enc_base58_to_hex_str_from_str(l_order_hash_str);
l_order_hash_base58_str = dap_strdup(l_order_hash_str);
}
}
if(l_continent_str && l_continent_num <= 0) {
dap_string_t *l_string_err = dap_string_new("Unrecognized \"-continent\" option=");
dap_string_append_printf(l_string_err, "\"%s\". Variants: ", l_continent_str);
......@@ -367,8 +368,10 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
}
}
if ( l_srv_uid_str)
l_srv_uid.uint64 = (uint64_t) atoll( l_srv_uid_str);
if (l_srv_uid_str && dap_id_uint64_parse(l_srv_uid_str ,&l_srv_uid.uint64)) {
dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't recognize '%s' string as 64-bit id, hex or dec.", l_srv_uid_str);
return -21;
}
if ( l_price_min_str )
l_price_min = dap_chain_balance_scan(l_price_min_str);
......@@ -400,7 +403,7 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
// Select with specified service uid
if ( l_order_hash_str ){
dap_chain_net_srv_order_t * l_order = dap_chain_net_srv_order_find_by_hash_str( l_net, l_order_hash_hex_str );
if (l_order){
if (l_order) {
dap_chain_net_srv_order_dump_to_string(l_order,l_string_ret, l_hash_out_type);
l_ret = 0;
}else{
......@@ -410,17 +413,17 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
else
dap_string_append_printf(l_string_ret,"Can't find order with hash %s\n", l_order_hash_base58_str );
}
} else{
} else {
dap_chain_net_srv_order_t * l_orders = NULL;
size_t l_orders_num =0;
size_t l_orders_num = 0;
dap_chain_net_srv_uid_t l_srv_uid={{0}};
uint256_t l_price_min = {};
uint256_t l_price_max = {};
dap_chain_net_srv_price_unit_uid_t l_price_unit={{0}};
dap_chain_net_srv_order_direction_t l_direction = SERV_DIR_UNDEFINED;
if( dap_chain_net_srv_order_find_all_by( l_net,l_direction,l_srv_uid,l_price_unit, NULL, l_price_min, l_price_max,&l_orders,&l_orders_num) == 0 ){
if( !dap_chain_net_srv_order_find_all_by( l_net,l_direction,l_srv_uid,l_price_unit, NULL, l_price_min, l_price_max,&l_orders,&l_orders_num) ){
dap_string_append_printf(l_string_ret,"Found %zd orders:\n",l_orders_num);
size_t l_orders_size = 0;
for(size_t i = 0; i < l_orders_num; i++) {
......@@ -492,10 +495,13 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
}
}
if (l_expires_str)
l_expires = (dap_time_t ) atoll( l_expires_str);
l_srv_uid.uint64 = (uint64_t) atoll( l_srv_uid_str);
if (l_srv_uid_str && dap_id_uint64_parse(l_srv_uid_str ,&l_srv_uid.uint64)) {
dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't recognize '%s' string as 64-bit id, hex or dec.", l_srv_uid_str);
dap_string_free(l_string_ret, true);
return -21;
}
if (l_node_addr_str){
if (dap_chain_node_addr_str_check(l_node_addr_str)) {
dap_chain_node_addr_from_str( &l_node_addr, l_node_addr_str );
......@@ -514,20 +520,7 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
dap_chain_hash_fast_from_str (l_tx_cond_hash_str, &l_tx_cond_hash);
l_price = dap_chain_balance_scan(l_price_str);
if (!dap_strcmp(l_price_unit_str, "MB")){
l_price_unit.uint32 = SERV_UNIT_MB;
} else if (!dap_strcmp(l_price_unit_str, "SEC")){
l_price_unit.uint32 = SERV_UNIT_SEC;
} else if (!dap_strcmp(l_price_unit_str, "DAY")){
l_price_unit.uint32 = SERV_UNIT_DAY;
} else if (!dap_strcmp(l_price_unit_str, "KB")){
l_price_unit.uint32 = SERV_UNIT_KB;
} else if (!dap_strcmp(l_price_unit_str, "B")){
l_price_unit.uint32 = SERV_UNIT_B;
} else if (!dap_strcmp(l_price_unit_str, "PCS")){
l_price_unit.uint32 = SERV_UNIT_PCS;
} else {
//l_price_unit.uint32 = SERV_UNIT_UNDEFINED;
if (s_str_to_price_unit(l_price_unit_str, &l_price_unit)){
log_it(L_ERROR, "Undefined price unit");
dap_string_free(l_string_ret, true);
dap_cli_server_cmd_set_reply_text(a_str_reply, "Wrong unit type sepcified, possible values: B, KB, MB, SEC, DAY, PCS");
......@@ -542,9 +535,9 @@ static int s_cli_net_srv( int argc, char **argv, char **a_str_reply)
dap_enc_key_t *l_key = NULL;
if(l_order_cert_name) {
l_cert = dap_cert_find_by_name(l_order_cert_name);
if(l_cert)
if(l_cert) {
l_key = l_cert->enc_key;
else {
} else {
log_it(L_ERROR, "Can't load cert '%s' for sign order", l_order_cert_name);
dap_cli_server_cmd_set_reply_text(a_str_reply, "Can't load cert '%s' for sign "
"order", l_order_cert_name);
......@@ -932,19 +925,7 @@ int dap_chain_net_srv_parse_pricelist(dap_chain_net_srv_t *a_srv, const char *a_
}
continue;
case 4:
if (!strcmp(l_price_token, "SEC"))
l_price->units_uid.enm = SERV_UNIT_SEC;
else if (!strcmp(l_price_token, "DAY"))
l_price->units_uid.enm = SERV_UNIT_DAY;
else if (!strcmp(l_price_token, "MB"))
l_price->units_uid.enm = SERV_UNIT_MB;
else if (!strcmp(l_price_token, "KB"))
l_price->units_uid.enm = SERV_UNIT_KB;
else if (!strcmp(l_price_token, "B"))
l_price->units_uid.enm = SERV_UNIT_B;
else if (!strcmp(l_price_token, "PCS"))
l_price->units_uid.enm = SERV_UNIT_PCS;
else {
if (s_str_to_price_unit(l_price_token, &(l_price->units_uid))) {
log_it(L_ERROR, "Error parsing pricelist: wrong unit type \"%s\"", l_price_token);
l_iter = 0;
break;
......@@ -1216,4 +1197,15 @@ dap_chain_datum_tx_receipt_t * dap_chain_net_srv_issue_receipt(dap_chain_net_srv
return dap_chain_datum_tx_receipt_sign_add(l_receipt, dap_chain_wallet_get_key(a_price->wallet, 0));
}
/**
* @brief dap_chain_net_srv_issue_receipt
* @param a_str_price_unit
* @param a_price_unit
* @return 0 if OK, other if error
*/
int s_str_to_price_unit(char* a_price_unit_str, dap_chain_net_srv_price_unit_uid_t* a_price_unit) {
if (!a_price_unit_str || !a_price_unit)
return -1;
a_price_unit->enm = dap_chain_srv_str_to_unit_enum(a_price_unit_str);
return a_price_unit->enm != SERV_UNIT_UNDEFINED ? 0 : -1;
}
......@@ -289,7 +289,7 @@ static enum error_code s_cli_hold(int a_argc, char **a_argv, int a_arg_index, da
return REINVEST_ARG_ERROR;
if (IS_ZERO_256(l_reinvest_percent)) {
int l_reinvest_percent_int = atoi(l_reinvest_percent_str);
if (l_reinvest_percent_int <= 0 || l_reinvest_percent_int > 100)
if (l_reinvest_percent_int < 0 || l_reinvest_percent_int > 100)
return REINVEST_ARG_ERROR;
l_reinvest_percent = dap_chain_uint256_from(l_reinvest_percent_int);
MULT_256_256(l_reinvest_percent, GET_256_FROM_64(1000000000000000000ULL), &l_reinvest_percent);
......@@ -658,7 +658,7 @@ static void s_error_handler(enum error_code errorCode, dap_string_t *output_line
} break;
case REINVEST_ARG_ERROR: {
dap_string_append_printf(output_line, "reinvestment is set as a percentage from 1 to 100");
dap_string_append_printf(output_line, "reinvestment is set as a percentage from 0 to 100");
} break;
case FEE_ARG_ERROR: {
......