summaryrefslogtreecommitdiffstats
path: root/friendfinder/receiver.c
diff options
context:
space:
mode:
Diffstat (limited to 'friendfinder/receiver.c')
-rw-r--r--friendfinder/receiver.c92
1 files changed, 81 insertions, 11 deletions
diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c
index 8d27a89..e1ab333 100644
--- a/friendfinder/receiver.c
+++ b/friendfinder/receiver.c
@@ -7,6 +7,7 @@
#include "openssl/blowfish.h"
#include "draw_user.h"
#include "read_file.h"
+#include "receiver.h"
static irc_session_t *session;
irc_callbacks_t callbacks;
@@ -74,6 +75,59 @@ int get_sender_array_pos(char* nick)
}
}
+void repair_position(struct sender *_sender, unsigned char *decrypted)
+{
+ if (decrypted[5] == 'a')
+ {
+ _sender->lat_first = decrypted;
+ _sender->lat_first[5] = '\0';
+ _sender->lat_first_set = 1;
+
+ // return;
+ }
+
+ if (decrypted[4] == 'b')
+ {
+ _sender->lat_second = decrypted;
+ _sender->lat_second[4] = '\0';
+ _sender->lat_second_set = 1;
+
+ // return;
+ }
+
+ if (decrypted[5] == 'c')
+ {
+ _sender->lon_first = decrypted;
+ _sender->lon_first[5] = '\0';
+ _sender->lon_first_set = 1;
+
+ // return;
+ }
+
+ if (decrypted[4] == 'd')
+ {
+ _sender->lon_second = decrypted;
+ _sender->lon_second[4] = '\0';
+ _sender->lon_second_set = 1;
+
+ // return;
+ }
+
+ if (_sender->lat_first_set == 1 && _sender->lat_second_set == 1)
+ {
+ _sender->lat = _sender->lat_first;
+ strcat(_sender->lat, _sender->lat_second);
+ _sender->lat_set = 1;
+ }
+
+ if (_sender->lon_first_set == 1 && _sender->lon_second_set == 1)
+ {
+ _sender->lon = _sender->lon_first;
+ strcat(_sender->lon, _sender->lon_second);
+ _sender->lon_set = 1;
+ }
+}
+
void dump_data(char* lat, char* lon, char* nick)
{
struct position *pos = (struct position*) malloc(sizeof(struct position));
@@ -84,9 +138,9 @@ void dump_data(char* lat, char* lon, char* nick)
draw_user(pos);
}
-void get_position(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
+void get_position(irc_session_t * session, const char * event, const char * origin, const unsigned char ** params, unsigned int count)
{
- char *decrypted;
+ unsigned char *decrypted;
char *sender_org = (char*) malloc(username_length + 1);
@@ -101,20 +155,29 @@ void get_position(irc_session_t * session, const char * event, const char * orig
if (s_sender[pos]->lat_set == 0)
{
- decrypted = (char*) malloc(sizeof(char) * 8);
+ decrypted = (char*) malloc(sizeof(char) * 5);
+
BF_ecb_encrypt(params[1], decrypted, &key, BF_DECRYPT);
- s_sender[pos]->lat = decrypted;
- // printf("s_sender[%i]->lat: %s \n", pos, s_sender[pos]->lat);
- s_sender[pos]->lat_set = 1;
+ decrypted[strlen(decrypted)] = '\0';
+
+ printf("decrypted %s \n", decrypted);
+
+ repair_position(s_sender[pos], decrypted);
+
+ free(decrypted);
}
else if (s_sender[pos]->lon_set == 0)
{
- decrypted = (char*) malloc(sizeof(char) * 8);
+ decrypted = (char*) malloc(sizeof(char) * 5);
BF_ecb_encrypt(params[1], decrypted, &key, BF_DECRYPT);
- s_sender[pos]->lon = decrypted;
- // printf("s_sender[%i]->lon: %s \n", pos, s_sender[pos]->lon);
- s_sender[pos]->lon_set = 1;
+ decrypted[strlen(decrypted)] = '\0';
+
+ printf("decrypted %s \n", decrypted);
+
+ repair_position(s_sender[pos], decrypted);
+
+ free(decrypted);
}
if(s_sender[pos]->lon_set == 1 && s_sender[pos]->lat_set == 1)// && lon != NULL && lat != NULL)
@@ -136,7 +199,6 @@ void get_position(irc_session_t * session, const char * event, const char * orig
s_sender[pos]->lon_set = 0;
s_sender[pos]->lat_set = 0;
- free(decrypted);
free(sender_org);
}
@@ -165,6 +227,14 @@ void init_sender_struct(int number)
s_sender[i]->lon_set = (int) malloc(sizeof(int));
s_sender[i]->lon_set = 0;
+
+
+ s_sender[i]->lat_first = (char*) malloc(sizeof(char) * 5);
+ s_sender[i]->lat_second = (char*) malloc(sizeof(char) * 5);
+
+ s_sender[i]->lon_first = (char*) malloc(sizeof(char) * 5);
+ s_sender[i]->lon_second = (char*) malloc(sizeof(char) * 5);
+
}
}