summaryrefslogtreecommitdiffstats
path: root/friendfinder/receiver.c
diff options
context:
space:
mode:
authorPatrick Hornecker2010-03-05 18:21:34 +0100
committerPatrick Hornecker2010-03-05 18:21:34 +0100
commitaa41b2ba55d825fe203c50542ecd767917224612 (patch)
treea5d02b8a6c9bbaad5bda5b0f8e7f1728fdd04e82 /friendfinder/receiver.c
parentdeleted a few files (diff)
downloadfriendfinder-master.tar.gz
friendfinder-master.tar.xz
friendfinder-master.zip
tex source and bug fixesHEADmaster
Diffstat (limited to 'friendfinder/receiver.c')
-rw-r--r--friendfinder/receiver.c107
1 files changed, 63 insertions, 44 deletions
diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c
index 73a0409..8bf24d3 100644
--- a/friendfinder/receiver.c
+++ b/friendfinder/receiver.c
@@ -10,7 +10,7 @@
#include "receiver.h"
#include "cryptossl.h"
-static irc_session_t *session;
+static irc_session_t *session_receiver;
irc_callbacks_t callbacks;
char *username, *own_nickname, *sender_name;
@@ -24,6 +24,13 @@ int s_sender_size;
BF_KEY key;
+int count_ack = 0;
+int is_init = 0;
+char* sender_base64;
+
+#define CRYPT_LENGTH 10
+#define BASE64_LENGTH 60
+
void receiver_set_ip(char *_ip)
{
receiver_server_ip = _ip;
@@ -38,8 +45,8 @@ int init_connection_receiver(char* server_ip, char* user)
{
printf("RECEIVER: initialising connection...\n");
- session = irc_create_session(&callbacks);
- int con = irc_connect(session, server_ip, 6666, NULL, user, "receiver", "receiver");
+ session_receiver = irc_create_session(&callbacks);
+ int con = irc_connect(session_receiver, server_ip, 6666, NULL, user, "receiver", "receiver");
if (con != 0)
{
printf("RECEIVER: connection error-code: %i \n", con);
@@ -47,7 +54,7 @@ int init_connection_receiver(char* server_ip, char* user)
return 1;
}
- if (irc_is_connected(session) == 1)
+ if (irc_is_connected(session_receiver) == 1)
{
printf("RECEIVER: connected...\n");
@@ -58,8 +65,8 @@ int init_connection_receiver(char* server_ip, char* user)
void disconnect_receiver()
{
//irc_destroy_session(session);
- irc_disconnect(session);
- irc_destroy_session(session);
+ irc_disconnect(session_receiver);
+ irc_destroy_session(session_receiver);
for (int i = 0; i < s_sender_size; i++)
{
@@ -83,7 +90,6 @@ void disconnect_receiver()
free(s_sender[i]->lon_second);
free(s_sender[i]);
-
}
free(s_sender);
@@ -227,24 +233,33 @@ void repair_position(struct sender *_sender, unsigned char *decrypted)
void dump_data(char* lat, char* lon, char* nick)
{
struct position *pos = (struct position*) malloc(sizeof(struct position));
- pos->lat = lat;
- pos->lon = lon;
- pos->nick = nick;
+ pos->lat = (char*) malloc(strlen(lat) + 1);
+ pos->lon = (char*) malloc(strlen(lon) + 1);
+ pos->nick = (char*) malloc(strlen(nick) + 1);
+
+ memcpy(pos->lat, lat, strlen(lat));
+ memcpy(pos->lon, lon, strlen(lon));
+ memcpy(pos->nick, nick, strlen(nick));
+
+ pos->lat[strlen(lat)] = '\0';
+ pos->lon[strlen(lon)] = '\0';
+ pos->nick[strlen(nick)] = '\0';
+
draw_user(pos);
}
-void get_position(irc_session_t * session, const char * event, const char * origin, const unsigned char ** params, unsigned int count)
+void get_position(irc_session_t * session_receiver, const char * event, const char * origin, const unsigned char ** params, unsigned int count)
{
unsigned char *decrypted;
unsigned char *encrypted_base64;
char *sender_org = (char*) malloc(username_length + 1);
- char *own_sender_nickname = (char*) malloc(username_length + 3);
+ char *own_sender_nickname = (char*) malloc(strlen(own_nickname) + 3);
sender_name = (char*) malloc(sizeof(char) * 50);
memcpy(own_sender_nickname, own_nickname, strlen(own_nickname));
- strcat(own_sender_nickname, "_s");
+ strcat(own_sender_nickname, "_s\0");
irc_target_get_nick(origin, sender_name, sizeof(sender_name));
strncpy(sender_org, sender_name, username_length);
@@ -256,10 +271,10 @@ void get_position(irc_session_t * session, const char * event, const char * orig
if (s_sender[pos]->lat_set == 0)
{
- encrypted_base64 = (char*) malloc(sizeof(char) *60);
- decrypted = (char*) malloc(sizeof(char) * 8);
+ encrypted_base64 = (char*) malloc(sizeof(char) * BASE64_LENGTH);
+ decrypted = (char*) malloc(sizeof(char) * 9);
- from_base64(params[1], strlen(params[1]), encrypted_base64, 60);
+ from_base64(params[1], strlen(params[1]), encrypted_base64, BASE64_LENGTH);
BF_ecb_encrypt(encrypted_base64, decrypted, &key, BF_DECRYPT);
decrypted[strlen(decrypted)] = '\0';
@@ -274,10 +289,10 @@ void get_position(irc_session_t * session, const char * event, const char * orig
else if (s_sender[pos]->lon_set == 0)
{
- encrypted_base64 = (char*) malloc(sizeof(char) * 60);
- decrypted = (char*) malloc(sizeof(char) * 8);
+ encrypted_base64 = (char*) malloc(sizeof(char) * BASE64_LENGTH);
+ decrypted = (char*) malloc(sizeof(char) * 9);
- from_base64(params[1], strlen(params[1]), encrypted_base64, 60);
+ from_base64(params[1], strlen(params[1]), encrypted_base64, BASE64_LENGTH);
BF_ecb_encrypt(encrypted_base64, decrypted, &key, BF_DECRYPT);
decrypted[strlen(decrypted)] = '\0';
@@ -324,22 +339,21 @@ void get_position(irc_session_t * session, const char * event, const char * orig
}
}
-int count_ack = 0;
-int is_init = 0;
-char* sender_base64;
void send_acknowledgement(char *sender)
{
if (is_init == 0 && count_ack == 0)
{
- sender_base64 = (char*) malloc(sizeof(char) * 60);
- char* sender_crypted = (char*) malloc(sizeof(char) * 30);
+ sender_base64 = (char*) malloc(sizeof(char) * BASE64_LENGTH);
+ char* sender_crypted = (char*) malloc(sizeof(char) * CRYPT_LENGTH);
BF_ecb_encrypt(sender, sender_crypted, &key, BF_ENCRYPT);
-
- to_base64(sender_crypted, strlen(sender_crypted), sender_base64, 60);
- irc_cmd_msg(session, "#test", sender_base64);
+ sender_crypted[strlen(sender_crypted)] = '\0';
+
+ to_base64(sender_crypted, CRYPT_LENGTH, sender_base64, BASE64_LENGTH);
+
+ irc_cmd_msg(session_receiver, "#test", sender_base64);
free(sender_crypted);
is_init = 1;
@@ -350,7 +364,7 @@ void send_acknowledgement(char *sender)
if (is_init == 1 && count_ack < 3)
{
- irc_cmd_msg(session, "#test", sender_base64);
+ irc_cmd_msg(session_receiver, "#test", sender_base64);
count_ack++;
return;
@@ -358,7 +372,7 @@ void send_acknowledgement(char *sender)
if (is_init == 1 && count_ack == 3)
{
- irc_cmd_msg(session, "#test", sender_base64);
+ irc_cmd_msg(session_receiver, "#test", sender_base64);
count_ack = 0;
is_init = 0;
@@ -372,10 +386,10 @@ int check_message(char *msg, char *sender)
{
if (sender[strlen(sender) - 1] == 's')
{
- char* ack_base64 = (char*) malloc(sizeof(char) * 60);
+ char* ack_base64 = (char*) malloc(sizeof(char) * BASE64_LENGTH);
char* ack_decrypted = (char*) malloc(sizeof(char) * 20);
- from_base64(msg, strlen(msg), ack_base64, 60);
+ from_base64(msg, strlen(msg), ack_base64, BASE64_LENGTH);
BF_ecb_encrypt(ack_base64, ack_decrypted, &key, BF_DECRYPT);
if (strcmp(sender, ack_decrypted) == 0)
@@ -398,7 +412,7 @@ int check_message(char *msg, char *sender)
}
}
-void on_connect_receiver(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
+void on_connect_receiver(irc_session_t * session_receiver, const char * event, const char * origin, const char ** params, unsigned int count)
{
printf("RECEIVER: on_connect_receiver \n");
@@ -410,8 +424,8 @@ void on_connect_receiver(irc_session_t * session, const char * event, const char
init_sender_struct(_sender_count);
- irc_cmd_join(session, "#test", NULL);
-// irc_cmd_msg(session, "#test", "connected");
+ irc_cmd_join(session_receiver, "#test", NULL);
+// irc_cmd_msg(session_receiver, "#test", "connected");
free(keyd->key);
free(keyd);
@@ -423,26 +437,31 @@ void receiver_main(void *user)
callbacks.event_channel = get_position;
callbacks.event_connect = on_connect_receiver;
-
- username = (char*) malloc(sizeof(char) * sizeof(user));
- own_nickname = (char*) malloc(sizeof(char) * sizeof(user));
- memcpy(username, user, sizeof(user));
- memcpy(own_nickname, user, sizeof(user));
-
- printf("%s \n", username);
+ char* _user = (char*) user;
+ int len = strlen(_user) + 1;
+
+ username = (char*) malloc(len + 2);
+ own_nickname = (char*) malloc(len + 2);
+
+ memcpy(username, user, len);
+ memcpy(own_nickname, user, len);
+
+ own_nickname[strlen(own_nickname)] = '\0';
username_length = strlen(username);
if (receiver_server_ip != NULL && user != NULL)
{
- strcat(username, "_r");
- printf("%s \n", username);
+ strcat(username, "_r\0");
+
+ printf("%s %s \n", username, own_nickname);
+
if (init_connection_receiver(receiver_server_ip, username) == 0)
{
printf("RECEIVER: connection succesfull...\n");
- irc_run(session);
+ irc_run(session_receiver);
}
}