summaryrefslogtreecommitdiffstats
path: root/friendfinder/receiver.c
diff options
context:
space:
mode:
authorPatrick Hornecker2010-02-19 13:54:27 +0100
committerPatrick Hornecker2010-02-19 13:54:27 +0100
commit0b6b032e0293ebd62c146f27622487bb87c7b773 (patch)
treea90a92c0683594d5bf38dfcd364b8a785d69b4f5 /friendfinder/receiver.c
parenttex source (diff)
downloadfriendfinder-0b6b032e0293ebd62c146f27622487bb87c7b773.tar.gz
friendfinder-0b6b032e0293ebd62c146f27622487bb87c7b773.tar.xz
friendfinder-0b6b032e0293ebd62c146f27622487bb87c7b773.zip
few bugs fixed, redrawing of bubbels changed
Diffstat (limited to 'friendfinder/receiver.c')
-rw-r--r--friendfinder/receiver.c47
1 files changed, 28 insertions, 19 deletions
diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c
index 1295983..ee02249 100644
--- a/friendfinder/receiver.c
+++ b/friendfinder/receiver.c
@@ -8,6 +8,7 @@
#include "draw_user.h"
#include "read_file.h"
#include "receiver.h"
+#include "cryptossl.h"
static irc_session_t *session;
irc_callbacks_t callbacks;
@@ -110,16 +111,16 @@ int get_sender_array_pos(char* nick)
{
for (int i = 0; i < s_sender_size; i++)
{
- if (s_sender[i]->is_init == 1 && strlen(s_sender[i]->nick) == 0)//strcmp(s_sender[i]->nick, nick) == 0)
+ if (s_sender[i]->is_init == 0)// && strcmp(s_sender[i]->nick, nick) != 0)
{
+ s_sender[i]->is_init = 1;
+ strcpy(s_sender[i]->nick, nick);
+
return i;
}
- if (s_sender[i]->is_init == 0 && strcmp(s_sender[i]->nick, nick) != 0)
+ else if (s_sender[i]->is_init == 1 && strcmp(s_sender[i]->nick, nick) == 0)
{
- s_sender[i]->is_init = 1;
- memcpy(s_sender[i]->nick, nick, strlen(nick));
-
return i;
}
}
@@ -157,8 +158,7 @@ void repair_position(struct sender *_sender, unsigned char *decrypted)
if (_sender->lat_first_set == 1 && _sender->lat_second_set == 1)
{
- memcpy(_sender->lat, _sender->lat_first, strlen(_sender->lat_first));
-
+ memcpy(_sender->lat, _sender->lat_first, sizeof(_sender->lat_first));
strcat(_sender->lat, _sender->lat_second);
_sender->lat_set = 1;
@@ -171,8 +171,9 @@ void repair_position(struct sender *_sender, unsigned char *decrypted)
if (_sender->lon_first_set == 1 && _sender->lon_second_set == 1)
{
- memcpy(_sender->lon, _sender->lon_first, strlen(_sender->lon_first));
+ memcpy(_sender->lon, _sender->lon_first, sizeof(_sender->lon_first));
strcat(_sender->lon, _sender->lon_second);
+
_sender->lon_set = 1;
_sender->lon_first_set = 0;
_sender->lon_second_set = 0;
@@ -181,7 +182,7 @@ void repair_position(struct sender *_sender, unsigned char *decrypted)
_sender->lon_second[0] = '\0';
}
- printf("lon_set: %i \n", _sender->lon_set);
+/* printf("lon_set: %i \n", _sender->lon_set);
printf("lon: %s \n", _sender->lon);
printf("lat_set: %i \n", _sender->lat_set);
printf("lat: %s \n", _sender->lat);
@@ -196,7 +197,7 @@ void repair_position(struct sender *_sender, unsigned char *decrypted)
printf("first_lat: %s \n", _sender->lat_first);
printf("second_lat_set: %i \n", _sender->lat_second_set);
printf("second_lat: %s \n", _sender->lat_second);
- printf("====================== \n");
+ printf("====================== \n");*/
}
@@ -216,7 +217,8 @@ void get_position(irc_session_t * session, const char * event, const char * orig
disconnect_receiver(session, event, origin, params, count);
unsigned char *decrypted;
-
+ unsigned char *encrypted_base64;
+
char *sender_org = (char*) malloc(username_length + 1);
irc_target_get_nick(origin, sender_name, sizeof(sender_name));
@@ -227,28 +229,36 @@ void get_position(irc_session_t * session, const char * event, const char * orig
&& strcmp(params[1], "ack") != 0)
{
int pos = get_sender_array_pos(sender_org);
-
+
if (s_sender[pos]->lat_set == 0)
{
+ encrypted_base64 = (char*) malloc(sizeof(char) * 50);
decrypted = (char*) malloc(sizeof(char) * 7);
- BF_ecb_encrypt(params[1], decrypted, &key, BF_DECRYPT);
+ from_base64(params[1], strlen(params[1]), encrypted_base64, 50);
+ BF_ecb_encrypt(encrypted_base64, decrypted, &key, BF_DECRYPT);
+
decrypted[strlen(decrypted)] = '\0';
repair_position(s_sender[pos], decrypted);
+ free(encrypted_base64);
free(decrypted);
}
else if (s_sender[pos]->lon_set == 0)
{
+ encrypted_base64 = (char*) malloc(sizeof(char) * 50);
decrypted = (char*) malloc(sizeof(char) * 7);
- BF_ecb_encrypt(params[1], decrypted, &key, BF_DECRYPT);
+ from_base64(params[1], strlen(params[1]), encrypted_base64, 50);
+ BF_ecb_encrypt(encrypted_base64, decrypted, &key, BF_DECRYPT);
+
decrypted[strlen(decrypted)] = '\0';
repair_position(s_sender[pos], decrypted);
+ free(encrypted_base64);
free(decrypted);
}
@@ -291,8 +301,7 @@ void get_position(irc_session_t * session, const char * event, const char * orig
void init_sender_struct(int number)
{
-// s_sender = (struct sender(*)[number]) malloc(sizeof(struct sender*) * number);
- s_sender = (struct sender(*)[number]) malloc(sizeof(struct sender) * number);
+ s_sender = (struct sender**) malloc(sizeof(struct sender*) * number);
s_sender_size = number;
@@ -301,13 +310,13 @@ void init_sender_struct(int number)
s_sender[i] = (struct sender*) malloc(sizeof(struct sender));
s_sender[i]->nick = (char*) malloc(sizeof(char) * 20);
- s_sender[i]->nick[0] = '\0';
+ // s_sender[i]->nick[0] = '\0';
s_sender[i]->lat = (char*) malloc(sizeof(char) * 10);
- s_sender[i]->lat[0] = '\0';
+// s_sender[i]->lat[0] = '\0';
s_sender[i]->lon = (char*) malloc(sizeof(char) * 10);
- s_sender[i]->lon[0] = '\0';
+// s_sender[i]->lon[0] = '\0';
// s_sender[i]->is_init = (int) malloc(sizeof(int));
s_sender[i]->is_init = 0;