#include #include #include #include #include "espik_global.h" #include "espik_net.h" #include "espik_common_handler.h" #include "espik_error.h" #include "espik_debug.h" #include "espik_irc.h" #include "espik.h" #include #include typedef int (*Handler_Func) (void* data, int ev_type, void* ev); static int ret; /* For debug */ char connected = 0; Ecore_Con_Server* con_sock; void espik_con_init (t_info serv_info) { int nb_launch; espik_enter(); nb_launch = ecore_con_init (); com_active = 0; /* espik_debug_printf ("nb_launch = %d", nb_launch); */ con_sock = ecore_con_server_connect (ECORE_CON_REMOTE_SYSTEM, serv_info.server->host, (int)serv_info.server->port, NULL); if (!con_sock) { espik_debug_print ("ecore_con_server_connect failed " "(ECORE_CON_REMOTE_SYSTEM)"); exit (-1); } if (! (ecore_event_handler_add (ECORE_CON_EVENT_SERVER_DATA, (Handler_Func) server_data, NULL))) { espik_debug_print ("ecore_event_handler_add " "(ECORE_CON_EVENT_SERVER_DATA)"); exit (-1); } if (! (ecore_event_handler_add (ECORE_CON_EVENT_SERVER_ADD, (Handler_Func) espik_con_up, NULL))) { espik_debug_print ("ecore_event_handler_add " "(ECORE_CON_EVENT_SERVER_ADD)"); exit (-1); } if (! (ecore_event_handler_add (ECORE_CON_EVENT_SERVER_DEL, (Handler_Func) espik_con_shutdown, NULL))) { espik_debug_print ("ecore_event_handler_add " "(ECORE_CON_EVENT_SERVER_DEL)"); exit (-1); } espik_leave(); } void send_login() { espik_enter(); // espik_debug_print ("<<<<<<<< DUMMMMY CODE >>>>>>>"); char *tmp, *tmp2; tmp = malloc ( strlen("NICK ") + strlen (a_infos.client->nickname)); tmp2 = malloc ( strlen("USER :") + strlen(a_infos.client->nickname)*2 + strlen (a_infos.client->realname) + strlen (a_infos.server->host)); sprintf (tmp, "NICK %s", a_infos.client->nickname); sprintf (tmp2, "USER %s %s %s: %s", a_infos.client->nickname, a_infos.client->nickname, a_infos.server->host, a_infos.client->realname); espik_debug_print("tmp: %s", tmp); espik_raw_send (tmp); espik_debug_print("tmp2: %s", tmp2); espik_raw_send (tmp2); espik_raw_send ("JOIN #e.fr"); com_active = 1; // espik_debug_print ("<<<<<<<< DUMMMMY CODE >>>>>>>"); free (tmp); free (tmp2); connected++; espik_leave(); } void espik_con_up() { espik_enter(); printf ("Connected\n"); espik_leave(); } void espik_con_shutdown () { espik_enter(); if (!connected) espik_debug_print ("Unable to connect to server"); espik_debug_print ("ecore_con_server_del: %p", ecore_con_server_del (con_sock)); ecore_con_shutdown (); ecore_main_loop_quit (); free (server_dns); espik_leave(); } void espik_raw_send (const char *msg) { buf_t buf; espik_enter(); buf = make_buffer (strlen(msg) + 2); /* \r\n\0" */ snprintf (buf.buf, buf.len, "%s\r\n", msg); /* Override trailing \0 */ espik_debug_print("strlen(msg): %d", strlen(msg)); espik_debug_print("buf.len: %d", buf.len); buf.buf[buf.len] = '\n'; espik_debug_print ("\n\nmsg(%d): %s\n\nout(%d-%d): %s\n", strlen(msg), msg, strlen(buf.buf), buf.len, buf.buf); /* printf ("out[len-3]: 0x%X\n", out[len - 3]); printf ("out[len-2]: 0x%X\n", out[len - 2]); printf ("out[len-1]: 0x%X\n", out[len - 1]); */ /* int i; for (i = 0 ; i < buf.len; i++) { espik_debug_print ("buf.buf[%d]: '%d'", i, buf.buf[i]); } */ ret = ecore_con_server_send (con_sock, buf.buf, buf.len-1); espik_debug_print ("ret: %d", ret); free (buf.buf); // free (msg); espik_leave(); }