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/libdap-app-cli
1 result
Show changes
Commits on Source (3)
cmake_minimum_required(VERSION 2.8)
project (dap_app_cli)
set(DAP_APP_CLI_SRCS
src/dap_app_cli.c
src/dap_app_cli_net.c
src/dap_app_cli_shell.c
)
set(DAP_APP_CLI_HEADERS
include/dap_app_cli.h
include/dap_app_cli_net.h
include/dap_app_cli_shell.h
)
if(WIN32)
include_directories(../3rdparty/curl/include/)
endif()
if(UNIX)
add_library(${PROJECT_NAME} STATIC ${DAP_APP_CLI_SRCS} ${DAP_APP_CLI_HEADERS} )
endif()
target_link_libraries(${PROJECT_NAME} dap_core dap_chain_net m curl)
target_include_directories(${PROJECT_NAME} PUBLIC include/ )
......@@ -24,9 +24,10 @@
#pragma once
#include <stdint.h>
#include <stddef.h>
// command description
typedef struct cmd_state_ {
typedef struct dap_app_cli_cmd_state {
char *cmd_name;
char **cmd_param;
int cmd_param_count;
......@@ -35,9 +36,18 @@ typedef struct cmd_state_ {
char *cmd_res;
size_t cmd_res_len;
size_t cmd_res_cur;
} cmd_state;
} dap_app_cli_cmd_state_t;
#ifdef __cplusplus
extern "C" {
#endif
/**
* Clear and delete memory of structure cmd_state
*/
void free_cmd_state(cmd_state *cmd);
void dap_app_cli_free_cmd_state(dap_app_cli_cmd_state_t *cmd);
int dap_app_cli_main(const char * a_app_name, const char * a_socket_path, int argc, char **argv);
#ifdef __cplusplus
}
#endif
......@@ -24,27 +24,27 @@
#pragma once
#include "dap_app_cli.h"
#include <curl/curl.h>
#include "main_node_cli.h"
// connection description
typedef struct connect_param_ {
typedef struct dap_app_cli_connect_param {
CURL *curl;
//SOCKET sock;
} connect_param;
} dap_app_cli_connect_param_t;
/**
* Connect to node unix socket server
*
* return struct connect_param if connect established, else NULL
*/
connect_param* node_cli_connect(void);
dap_app_cli_connect_param_t* dap_app_cli_connect(const char * a_socket_path);
/**
* Send request to kelvin-node
*
* return 0 if OK, else error code
*/
int node_cli_post_command(connect_param *conn, cmd_state *cmd);
int dap_app_cli_post_command(dap_app_cli_connect_param_t *conn, dap_app_cli_cmd_state_t *cmd);
int node_cli_disconnect(connect_param *conn);
int dap_app_cli_disconnect(dap_app_cli_connect_param_t *conn);
File moved
......@@ -32,21 +32,16 @@
#include "dap_file_utils.h"
#include "dap_strfuncs.h"
#include "dap_chain_node_cli.h"
#include "main_node_cli.h"
#include "main_node_cli_net.h"
#include "main_node_cli_shell.h"
#include "dap_app_cli.h"
#include "dap_app_cli_net.h"
#include "dap_app_cli_shell.h"
#ifdef __ANDROID__
#include "cellframe_node.h"
#endif
#ifdef _WIN32
#include "registry.h"
#endif
#include "dap_defines.h"
static connect_param *cparam;
static dap_app_cli_connect_param_t *cparam;
/**
* split string to argc and argv
......@@ -124,14 +119,14 @@ int execute_line(char *line)
// Call the function
if(argc > 0) {
cmd_state cmd;
memset(&cmd, 0, sizeof(cmd_state));
dap_app_cli_cmd_state_t cmd;
memset(&cmd, 0, sizeof(dap_app_cli_cmd_state_t));
cmd.cmd_name = (char *) argv[0];
cmd.cmd_param_count = argc - 1;
if(cmd.cmd_param_count > 0)
cmd.cmd_param = (char**) (argv + 1);
// Send command
int res = node_cli_post_command(cparam, &cmd);
int res = dap_app_cli_post_command(cparam, &cmd);
return res;
}
fprintf(stderr, "No command\n");
......@@ -141,7 +136,7 @@ int execute_line(char *line)
/**
* Clear and delete memory of structure cmd_state
*/
void free_cmd_state(cmd_state *cmd) {
void dap_app_cli_free_cmd_state(dap_app_cli_cmd_state_t *cmd) {
if(!cmd->cmd_param)
return;
for(int i = 0; i < cmd->cmd_param_count; i++)
......@@ -187,43 +182,25 @@ int shell_reader_loop()
return 0;
}
#ifdef __ANDROID__
int cellframe_node__cli_Main(int argc, const char *argv[])
#else
int main(int argc, const char *argv[])
#endif
/**
* @brief dap_app_cli_main
* @param argc
* @param argv
* @return
*/
int dap_app_cli_main(const char * a_app_name, const char * a_socket_path, int a_argc, char **a_argv)
{
dap_set_appname("cellframe-node-cli");
#ifdef _WIN32
g_sys_dir_path = dap_strdup_printf("%s/%s", regGetUsrPath(), dap_get_appname());
#elif DAP_OS_MAC
g_sys_dir_path = dap_strdup_printf("/Applications/%s.app/Contents/Resources", dap_get_appname());
#elif DAP_OS_ANDROID
g_sys_dir_path = dap_strdup_printf("/storage/emulated/0/opt/%s",dap_get_appname());
#elif DAP_OS_UNIX
g_sys_dir_path = dap_strdup_printf("/opt/%s", dap_get_appname());
#endif
dap_set_appname(a_app_name);
if (dap_common_init(dap_get_appname(), NULL) != 0) {
printf("Fatal Error: Can't init common functions module");
return -2;
}
{
char l_config_dir[MAX_PATH] = {'\0'};
dap_sprintf(l_config_dir, "%s/etc", g_sys_dir_path);
dap_config_init(l_config_dir);
}
dap_log_level_set(L_CRITICAL);
if((g_config = dap_config_open(dap_get_appname())) == NULL) {
printf("Can't init general configurations %s.cfg\n", dap_get_appname());
exit(-1);
}
// connect to node
cparam = node_cli_connect();
cparam = dap_app_cli_connect( a_socket_path );
if(!cparam)
{
printf("Can't connected to %s\n",dap_get_appname());
......@@ -243,23 +220,23 @@ int main(int argc, const char *argv[])
free_cmd_state(cmd);
}*/
if(argc > 1){
if(a_argc > 1){
// Call the function
//int res = ((*(command->func))(argc - 2, argv + 2));
cmd_state cmd;
memset(&cmd, 0, sizeof(cmd_state));
cmd.cmd_name = strdup(argv[1]);
cmd.cmd_param_count = argc - 2;
dap_app_cli_cmd_state_t cmd;
memset(&cmd, 0, sizeof(dap_app_cli_cmd_state_t));
cmd.cmd_name = strdup(a_argv[1]);
cmd.cmd_param_count = a_argc - 2;
if(cmd.cmd_param_count > 0)
cmd.cmd_param = (char**) (argv + 2);
cmd.cmd_param = (char**) (a_argv + 2);
// Send command
int res = node_cli_post_command(cparam, &cmd);
node_cli_disconnect(cparam);
int res = dap_app_cli_post_command(cparam, &cmd);
dap_app_cli_disconnect(cparam);
return res;
}else{
// command not found, start interactive shell
shell_reader_loop();
node_cli_disconnect(cparam);
dap_app_cli_disconnect(cparam);
}
return 0;
}
......
......@@ -52,7 +52,9 @@
#include "dap_common.h"
#include "dap_strfuncs.h"
#include "dap_chain_node_cli.h" // for UNIX_SOCKET_FILE
#include "main_node_cli_net.h"
#include "dap_app_cli.h"
#include "dap_app_cli_net.h"
/**
* Add to one array another one
......@@ -81,7 +83,7 @@ static int add_mem_data(uint8_t **memory, size_t *memory_len, char *add_mem, siz
}
//callback functions to receive header
static size_t WriteHttpMemoryHeadCallback(void *contents, size_t size, size_t nmemb, cmd_state *cmd)
static size_t WriteHttpMemoryHeadCallback(void *contents, size_t size, size_t nmemb, dap_app_cli_cmd_state_t *cmd)
{
if(!cmd)
return 0;
......@@ -97,7 +99,7 @@ static size_t WriteHttpMemoryHeadCallback(void *contents, size_t size, size_t nm
}
// callback function to receive data
static size_t WriteHttpMemoryCallback(void *contents, size_t size, size_t nmemb, cmd_state *cmd)
static size_t WriteHttpMemoryCallback(void *contents, size_t size, size_t nmemb, dap_app_cli_cmd_state_t *cmd)
{
//printf("[data] %s len=%d\n", contents, size * nmemb);
if(!cmd)
......@@ -109,18 +111,19 @@ static size_t WriteHttpMemoryCallback(void *contents, size_t size, size_t nmemb,
}
/**
* Connect to node unix socket server
*
* return struct connect_param if connect established, else NULL
* @brief dap_app_cli_connect
* @details Connect to node unix socket server
* @param a_socket_path
* @return if connect established, else NULL
*/
connect_param* node_cli_connect(void)
dap_app_cli_connect_param_t* dap_app_cli_connect(const char * a_socket_path)
{
curl_global_init(CURL_GLOBAL_DEFAULT);
connect_param *param = DAP_NEW_Z(connect_param);
dap_app_cli_connect_param_t *param = DAP_NEW_Z(dap_app_cli_connect_param_t);
CURL *curl_handle = curl_easy_init();
#ifndef _WIN32
int ret = curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, dap_config_get_item_str( g_config, "conserver", "listen_unix_socket_path") ); // unix socket mode
int ret = curl_easy_setopt(curl_handle, CURLOPT_UNIX_SOCKET_PATH, a_socket_path ); // unix socket mode
#else
int ret = curl_easy_setopt(curl_handle, CURLOPT_PORT, dap_config_get_item_uint16 ( g_config, "conserver", "listen_port_tcp")); // unix socket mode
#endif
......@@ -152,7 +155,7 @@ connect_param* node_cli_connect(void)
*
* return 0 if OK, else error code
*/
int node_cli_post_command( connect_param *conn, cmd_state *cmd )
int dap_app_cli_post_command( dap_app_cli_connect_param_t *conn, dap_app_cli_cmd_state_t *cmd )
{
if(!conn || !conn->curl || !cmd || !cmd->cmd_name)
{
......@@ -222,7 +225,7 @@ int node_cli_post_command( connect_param *conn, cmd_state *cmd )
return l_err_code;
}
int node_cli_disconnect(connect_param *param)
int dap_app_cli_disconnect(dap_app_cli_connect_param_t *param)
{
if(param) {
if(param->curl)
......
......@@ -26,8 +26,8 @@
#endif
#include "dap_common.h"
#include "main_node_cli.h"
#include "main_node_cli_shell.h"
#include "dap_app_cli.h"
#include "dap_app_cli_shell.h"
//#include "posixjmp.h"
......