#include #include #include #include #include #include "openssl/blowfish.h" static irc_session_t *session; irc_callbacks_t callbacks; int counter = 0; char sender_name[100]; int ret; BF_KEY key; int init_connection(char* server_ip, char* user) { printf("init_connection()\n"); session = irc_create_session(&callbacks); int con = irc_connect(session, server_ip, 6666, NULL, user, "receiver", "receiver"); if (con != 0) { printf("connection error-code: %i \n", con); return 0; } if (irc_is_connected(session) == 1) { printf("connecting...\n"); return 1; } } void disconnect() { irc_disconnect(session); irc_destroy_session(session); } char* dump_event (irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) { char* msg = " "; //msg = params[2]; //printf("%c: \n",params[2]); return msg; } void get_position(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) { char *decrypted_lat = (char*) malloc(sizeof(params[1])); char *decrypted_lon = (char*) malloc(sizeof(params[1])); irc_target_get_nick(origin, sender_name, sizeof(sender_name)); if (sender_name != NULL && strcmp(sender_name, "sender") == 1) { //first message is the ret param, which is needed for message decryption if (counter == 0) { //BF_set_key(&key, 5, "abcde"); } //dump_event(session, event, origin, params, count); if (counter % 2 == 0) { BF_ecb_encrypt(params[1], decrypted_lat, &key, BF_DECRYPT); printf("lat %s, origin: %s \n", decrypted_lat, sender_name); } if (counter % 2 != 0) { BF_ecb_encrypt(params[1], decrypted_lon, &key, BF_DECRYPT); printf("lon %s , origin: %s \n", decrypted_lon, sender_name); printf("====\n"); } //send an aknowledge to the sender (=sendername, to differ between multiple sender) // if (strcmp(params[1], "128") != 0) { irc_cmd_msg(session, "#test", sender_name); counter++; } // else { // counter++; } } } void on_connect(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count) { BF_set_key(&key, 5, "abcde"); irc_cmd_join(session, "#test", NULL); irc_cmd_msg(session, "#test", "connected"); } int main (int argc, char **argv) { memset(&callbacks, 0, sizeof(callbacks)); callbacks.event_channel = get_position; callbacks.event_connect = on_connect; char *user = argv[1]; if (init_connection("127.0.0.1", user) == 1) { irc_run(session); printf("done? \n"); return 1; } else { printf("aborting...\n"); return 0; } }