diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b7dc51aff466bb08c52e1294d3a58599caa481e..6ed0d58bfb191db8bb418f774b08a6c22f5288bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,39 +5,42 @@ set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_COLOR_MAKEFILE ON) set (CMAKE_CXX_STANDARD 11) +add_definitions ("-DDAP_SERVER") + +add_subdirectory(libdap-server) add_subdirectory(libdap) #add_subdirectory(libdap-chain) -add_subdirectory(libdap-server) add_subdirectory(libdap-stream) -add_definitions ("-DDAP_SERVER") include_directories("${INCLUDE_DIRECTORIES} ${dap_core_INCLUDE_DIRS}") include_directories("${INCLUDE_DIRECTORIES} ${dap_http_INCLUDE_DIRS}") include_directories("${INCLUDE_DIRECTORIES} ${dap_crypto_INCLUDE_DIRS}") -include_directories("${INCLUDE_DIRECTORIES} ${dap_udp_server_INCLUDE_DIRS}") include_directories("${INCLUDE_DIRECTORIES} ${dap_enc_server_INCLUDE_DIRS}") include_directories("${INCLUDE_DIRECTORIES} ${dap_http_server_INCLUDE_DIRS}") include_directories("${INCLUDE_DIRECTORIES} ${dap_client_INCLUDE_DIRS}") #include_directories("${INCLUDE_DIRECTORIES} ${dap-chain_INCLUDE_DIRS}") include_directories("${INCLUDE_DIRECTORIES} ${dap_core_server_INCLUDE_DIRS}") -include_directories("${INCLUDE_DIRECTORIES} ${dap_stream_INCLUDE_DIRS}") +include_directories("${INCLUDE_DIRECTORIES} ${dap_udp_server_INCLUDE_DIRS}") include_directories("${INCLUDE_DIRECTORIES} ${dap_session_INCLUDE_DIRS}") -add_definitions ("${dap_enc_server_DEFINITIONS}") -add_definitions ("${dap_http_server_DEFINITIONS}") -add_definitions ("${dap_udp_server_DEFINITIONS}") -add_definitions ("${dap_http_DEFINITIONS}") +include_directories("${INCLUDE_DIRECTORIES} ${dap_stream_INCLUDE_DIRS}") + add_definitions ("${dap_core_DEFINITIONS}") add_definitions ("${dap_crypto_DEFINITIONS}") add_definitions ("${dap_client_DEFINITIONS}") +add_definitions ("${dap_enc_server_DEFINITIONS}") +add_definitions ("${dap_http_server_DEFINITIONS}") +add_definitions ("${dap_http_DEFINITIONS}") #add_definitions ("${dap-chain_DEFINITIONS}") add_definitions ("${dap_core_server_DEFINITIONS}") -add_definitions ("${dap_stream_DEFINITIONS}") +add_definitions ("${dap_udp_server_DEFINITIONS}") add_definitions ("${dap_session_DEFINITIONS}") -set(SOURCES sources/kelvin-node.c sources/node_manager.c) +add_definitions ("${dap_stream_DEFINITIONS}") + +set(SOURCES sources/kelvin-node.c sources/node_manager.c ) set(HEADERS sources/node_manager.h) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ") -add_executable(${PROJECT_NAME} "sources/kelvin-node.c" ${HEADERS} ${SOURCES}) -target_link_libraries(${PROJECT_NAME} dap_http_server dap_enc_server dap_core_server dap_udp_server dap_client dap_crypto dap_core dap_http dap_session dap_stream m pthread) +add_executable(${PROJECT_NAME} "sources/kelvin-node.c" ${HEADERS} ${SOURCES} ${CRYPTO_SRCS}) +target_link_libraries(${PROJECT_NAME} dap_http_server dap_core_server dap_udp_server dap_session dap_crypto dap_client dap_core dap_http dap_enc_server dap_stream m pthread) \ No newline at end of file diff --git a/libdap b/libdap index 81377864c37166c8ec9f5e9e02775c05618109f8..d77436785654ce4c10d7b5cdbd22fff3e03665e4 160000 --- a/libdap +++ b/libdap @@ -1 +1 @@ -Subproject commit 81377864c37166c8ec9f5e9e02775c05618109f8 +Subproject commit d77436785654ce4c10d7b5cdbd22fff3e03665e4 diff --git a/libdap-server b/libdap-server index 2fa0658778d991f780dd55d7f15d17deb5503070..813167b563e88873dd40bc27b79863586612269f 160000 --- a/libdap-server +++ b/libdap-server @@ -1 +1 @@ -Subproject commit 2fa0658778d991f780dd55d7f15d17deb5503070 +Subproject commit 813167b563e88873dd40bc27b79863586612269f diff --git a/libdap-stream b/libdap-stream index 3a8672290289cde03708148e8a5300a17ff3906f..f8b3d76ac722aeb31c4af3b99217baa9cdfb2486 160000 --- a/libdap-stream +++ b/libdap-stream @@ -1 +1 @@ -Subproject commit 3a8672290289cde03708148e8a5300a17ff3906f +Subproject commit f8b3d76ac722aeb31c4af3b99217baa9cdfb2486 diff --git a/libdap-stream-ch-vpn b/libdap-stream-ch-vpn index 722b9ed9866b34c8b117b76a7be61723351d20ad..61d2654814614f695c8abe2d1d8d2c7b1d7bcb40 160000 --- a/libdap-stream-ch-vpn +++ b/libdap-stream-ch-vpn @@ -1 +1 @@ -Subproject commit 722b9ed9866b34c8b117b76a7be61723351d20ad +Subproject commit 61d2654814614f695c8abe2d1d8d2c7b1d7bcb40 diff --git a/sources/kelvin-node.c b/sources/kelvin-node.c index 447d052365dae57104470538a1c7700954a6a45e..ada6c54a6f674d670efba171cbd71d9322dde124 100644 --- a/sources/kelvin-node.c +++ b/sources/kelvin-node.c @@ -17,7 +17,7 @@ You should have received a copy of the GNU Lesser General Public License along with any DAP based project. If not, see <http://www.gnu.org/licenses/>. */ - +#define DAP_SERVER #include <errno.h> #include <signal.h> @@ -26,18 +26,32 @@ #include <string.h> #include <unistd.h> #include "uthash.h" -#include "dap_udp_server.h" -#include "dap_udp_client.h" #include "dap_http.h" #include "stream.h" #include "node_manager.h" +/*struct ev_loop *repeat_loop; +ev_timer timeout_watcher; + +static void repeat_cb (EV_P_ ev_timer *w, int revents){ + puts("repeat"); +}*/ + + + int main(int argc, char **argv) { + + /* repeat_loop = EV_DEFAULT; + ev_timer_init (&timeout_watcher, repeat_cb, 3, 3); + ev_timer_start (repeat_loop, &timeout_watcher); + ev_run (repeat_loop, 0);*/ + + printf("Kelvin Node version 0.1 \n"); if (argc > 1) { @@ -45,8 +59,9 @@ int main(int argc, char **argv) { node_manager_init(); - node_manager_t* manager = new_node_manager(l_config_name); - node_manager_start(manager); + // node_manager_t* manager = new_node_manager(l_config_name); + // node_manager_start(manager); + node_manager_start_stream(); node_manager_deinit(); free(l_config_name); diff --git a/sources/node_manager.c b/sources/node_manager.c index ba45c143c4aa0d68bac0d6851b1c8c0201e18f9e..b47181118991b6b690f19e97a513e2029f6b1303 100644 --- a/sources/node_manager.c +++ b/sources/node_manager.c @@ -19,34 +19,60 @@ */ #include "node_manager.h" +#include "dap_http.h" +#include "stream.h" +#include "stream_ch_pkt.h" #define LOG_TAG "node_manager" -void client_new(dap_udp_client_t *client,void * arg){ +void channel_new(struct stream_ch* ch,void* arg){ + puts("Channel new"); +} + +void channel_delete(struct stream_ch* ch,void* arg){ + puts("Channel delete"); +} + +void channel_packet_in(struct stream_ch* ch,void* arg){ + stream_ch_pkt_t * ch_pkt = arg; + char* data = (char*)malloc(ch_pkt->hdr.size); + memcpy(data,ch_pkt->data,ch_pkt->hdr.size); + printf("Income data: %s from %s \n",data,itoa(ch->stream->conn_udp->host_key)); + stream_ch_set_ready_to_write(ch,false); + stream_ch_pkt_write_f(ch, 1, "ping"); + stream_ch_set_ready_to_write(ch,true); +} + +void channel_packet_out(struct stream_ch* ch,void* arg){ + stream_ch_set_ready_to_write(ch,false); +} + + +void client_new(dap_client_remote_t *client,void * arg){ printf("Client connected"); } -void client_read(dap_udp_client_t *client,void * arg){ +void client_read(dap_client_remote_t *client,void * arg){ printf("Client read \n"); unsigned char* data = (char*)malloc(client->buf_in_size); data[client->buf_in_size] = 0; if(client->_ready_to_read) { - dap_udp_client_read(client,data,client->buf_in_size); + dap_client_read(client,data,client->buf_in_size); } puts(data); char outbox[] = "ping"; - dap_udp_client_write(client,outbox,strlen(outbox)); + dap_client_write(client,outbox,strlen(outbox)); dap_udp_client_ready_to_write(client,true); free(data); } -void client_write(dap_udp_client_t *client,void * arg){ +void client_write(dap_client_remote_t *client,void * arg){ printf("Client write"); } -void client_disconnect(struct dap_client_remote *client,void * arg){ +void client_disconnect(dap_client_remote_t *client,void * arg){ printf("Client disconnect"); } @@ -71,14 +97,18 @@ int node_manager_init(){ log_it(L_CRITICAL,"Can't init encryption key module"); return -57; } - if(dap_udp_server_init()!=0){ + if(dap_server_init()!=0){ log_it(L_CRITICAL,"Can't init udp server module"); return -4; } - if(dap_udp_client_init()!=0){ + if(dap_client_init()!=0){ log_it(L_CRITICAL,"Can't init udp client module"); return -4; } + stream_init(); + stream_session_init(); + dap_http_init(); + dap_http_simple_module_init(); return 0; } @@ -86,8 +116,9 @@ int node_manager_init(){ * @brief dap_server_deinit Deinit modules */ void node_manager_deinit(){ - dap_udp_server_deinit(); - dap_udp_client_deinit(); + stream_session_deinit(); + dap_server_deinit(); + dap_client_deinit(); dap_enc_key_deinit(); dap_enc_deinit(); common_deinit(); @@ -120,7 +151,7 @@ void node_manager_start(node_manager_t* manager){ log_it(L_CRITICAL,"Unable to read port value"); return; } - dap_udp_server_t* sh = manager->sh; + dap_server_t* sh = manager->sh; sh = dap_udp_server_listen(port); sh->client_read_callback = *client_read; sh->client_write_callback = *client_write; @@ -128,4 +159,13 @@ void node_manager_start(node_manager_t* manager){ sh->client_delete_callback = *client_disconnect; dap_udp_server_loop(sh); dap_udp_server_delete(sh); + } + +void node_manager_start_stream(){ + dap_server_t* server = dap_server_listen("localhost",56001,DAP_SERVER_TCP); + dap_http_new(server,"HTTP-serv"); + enc_http_add_proc(DAP_HTTP(server),"/handshake"); + dap_server_loop(server); +} + diff --git a/sources/node_manager.h b/sources/node_manager.h index 31733d60306a35b321d5e3fb9dcbd6e0fbb01dd1..6dc015a99aff26f8f0e3501aa1f252b0de11395d 100644 --- a/sources/node_manager.h +++ b/sources/node_manager.h @@ -25,16 +25,17 @@ #include <stdlib.h> #include <string.h> #include <unistd.h> -#include "dap_udp_server.h" -#include "dap_udp_client.h" +#include "dap_server.h" #include "dap_common.h" #include "dap_config.h" +#include "dap_udp_server.h" +#include "dap_udp_client.h" #include "dap_enc.h" #include "dap_enc_key.h" typedef struct node_manager{ - dap_udp_server_t* sh; + dap_server_t* sh; dap_config_t *l_config; } node_manager_t;