summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--friendfinder/bugs3
-rw-r--r--friendfinder/draw_user.c48
-rw-r--r--friendfinder/gui.c61
-rw-r--r--friendfinder/gui.h14
-rw-r--r--friendfinder/handler.c37
-rw-r--r--friendfinder/map/object.c3
-rw-r--r--friendfinder/msg_sender.c103
-rw-r--r--friendfinder/receiver.c25
-rw-r--r--friendfinder/sender.c5
9 files changed, 133 insertions, 166 deletions
diff --git a/friendfinder/bugs b/friendfinder/bugs
index cefb369..6548eb2 100644
--- a/friendfinder/bugs
+++ b/friendfinder/bugs
@@ -6,6 +6,5 @@ gui.c:
-> unregelmässiger absturz beim zeichnen einer neuen bubble (enlightenment probs???)
msg_sender.c:
- -> dcc_chat wird nich akzeptiert und somit nich iniziiert
-
+ -> nachrichten sind nach entschlüsseln max. 8 zeichen lang
diff --git a/friendfinder/draw_user.c b/friendfinder/draw_user.c
index bf08f61..32f1baf 100644
--- a/friendfinder/draw_user.c
+++ b/friendfinder/draw_user.c
@@ -10,7 +10,7 @@
int _h= 600;
int _w = 450;
-int _distance = 250;
+int _distance = 1000;
int active_map = 0;
double own_lat, own_lon;
@@ -40,29 +40,59 @@ void set_dist(int distance)
void draw_user(struct position *pos)
{
- int *e = NULL, *n = NULL, *own_e = NULL, *own_n = NULL;
+ //int *e = NULL, *n = NULL, *own_e = NULL, *own_n = NULL;
+/* int *e = (int*) malloc(sizeof(int));
+ int *n = (int*) malloc(sizeof(int));
+ int *own_e = (int*) malloc(sizeof(int));
+ int *own_n = (int*) malloc(sizeof(int));*/
+
+ int e = NULL;
+ int n = NULL;
+ int own_e = NULL;
+ int own_n = NULL;
double old_lat, old_lon, sender_lat, sender_lon;
sender_lat = atof(pos->lat);
sender_lon = atof(pos->lon);
- if (active_map == 1 && test_distance(sender_lat, sender_lon, e, n, own_lat, own_lon, own_e, own_n) == 1)
+ if (sender_lat > 0 && sender_lon > 0)
{
- e_smart_map_overlay_set_bubble(map, "routing", pos->nick, pos->nick, sender_lat, sender_lon, 0xffffffff);
+ printf("sender_lat %f \n", sender_lat);
+ printf("sender_lon %f \n", sender_lon);
+ printf("sender_nick %s \n", pos->nick);
+
+ if (active_map == 1 && test_distance(sender_lat, sender_lon, e, n, own_lat, own_lon, own_e, own_n) == 1)
+ {
+ e_smart_map_overlay_set_bubble(map, "routing", pos->nick, pos->nick, sender_lat, sender_lon, 0xffffffff);
+ }
}
-
}
int test_distance(double lat, double lon, int e, int n, double own_lat, double own_lon, int own_e, int own_n)
{
- project_latlon(lat, lon, &e, &n, PROJECTION_UTM);
+ project_latlon(lat, lon, &e, &n, PROJECTION_MERC);
project_latlon(own_lat, own_lon, &own_e, &own_n, PROJECTION_UTM);
-
+ printf("e %i \n", e);
+ printf("own_e %i \n", own_e);
+ printf("n %i \n", n);
+ printf("own_n %i \n", own_n);
+
if (e != NULL && n !=NULL && own_n != NULL && own_e != NULL)
{
- double x = sqrt(((e - own_e)*(e - own_e) + (n - own_n)*(n - own_n)));
-
+ double x = sqrt(((e - own_e) * (e - own_e)) + ((n - own_n) * (n - own_n)));
+/*
+ printf("e %f \n", e);
+ printf("own_e %f \n", own_e);
+ printf("n %f \n", n);
+ printf("own_n %f \n", own_n);
+ printf("e - own_e %f \n", e - own_e);
+ printf("n - own_n %f \n", n - own_n);
+ printf("(e - own_e) * (e - own_e) %f \n", (e - own_e) * (e - own_e));
+ printf("(n - own_n) * (n - own_n) %f \n", (n - own_n) * (n - own_n));
+ printf("((e - own_e) * (e - own_e)) + ((n - own_n) * (n - own_n)) %f \n", ((e - own_e) * (e - own_e)) + ((n - own_n) * (n - own_n))); */
+ printf("sqrt(((e - own_e) * (e - own_e)) + ((n - own_n) * (n - own_n))) %f \n", sqrt(((e - own_e) * (e - own_e)) + ((n - own_n) * (n - own_n))));
+ printf("e - own_e %i || n - own_n %i \n", (e - own_e), (n - own_n));
printf("x: %f distance: %i \n", x, _distance);
if (x <= _distance)
diff --git a/friendfinder/gui.c b/friendfinder/gui.c
index a4fc013..87d2523 100644
--- a/friendfinder/gui.c
+++ b/friendfinder/gui.c
@@ -19,6 +19,7 @@ int w = 450;
int first = 0;
int bubble_pos = 100;
+int enable_chat = 0;
double current_lat = 47.996578;
double current_lon = 7.840171;
@@ -37,7 +38,10 @@ static void on_cancel(void *data, Evas_Object *obj, void *event_info)
static void on_own_position(void *data, Evas_Object *obj, void *event_info)
{
- init_sender_thread(from);
+ if (nickname != NULL)
+ {
+ init_sender_thread(from);
+ }
}
static void set_distance(void *data, Evas_Object *obj, void *event_info)
@@ -75,7 +79,10 @@ static void set_nickname(void *data, Evas_Object *obj, void *event_info)
static void on_show_users(void *data, Evas_Object *obj, void *event_info)
{
- init_receiver_thread(from);
+ if (nickname != NULL)
+ {
+ init_receiver_thread(from);
+ }
}
static void on_partner_nickname(void *data, Evas_Object *obj, void *event_info)
@@ -95,8 +102,8 @@ static void set_partner_nickname(void *data, Evas_Object *obj, void *event_info)
}
static void on_chat(void *data, Evas_Object *obj, void *event_info)
-{
- bubble_pos = 100;
+{
+ enable_chat = 1;
disable_map_bubbles();
init_window_parts();
init_toolbar(obj);
@@ -104,6 +111,7 @@ static void on_chat(void *data, Evas_Object *obj, void *event_info)
static void on_map(void *data, Evas_Object *obj, void *event_info)
{
+ enable_chat = 0;
init_map();
enable_map_bubbles();
init_draw_user(win, map);
@@ -112,6 +120,7 @@ static void on_map(void *data, Evas_Object *obj, void *event_info)
static void on_options(void *data, Evas_Object *obj, void *event_info)
{
+ enable_chat = 0;
disable_map_bubbles();
init_options();
}
@@ -131,10 +140,10 @@ static void on_send_message(void *data, Evas_Object *bx3, void *event_info)
if (msg_text != NULL)
{
- if (first == 0)
+ if (first == 0 && enable_chat == 1)
{
bb1 = elm_bubble_add(bx3);
- evas_object_resize(bb1, w, h/7);
+ evas_object_resize(bb1, w, h/6);
evas_object_move(bb1, 0, 0);
evas_object_show(bb1);
set_bubble_text(bb1, from, msg_text);
@@ -144,7 +153,7 @@ static void on_send_message(void *data, Evas_Object *bx3, void *event_info)
return;
}
- if (first == 1)
+ if (first == 1 && enable_chat == 1)
{
bb2 = elm_bubble_add(bx3);
evas_object_resize(bb2, w, h/6);
@@ -158,7 +167,7 @@ static void on_send_message(void *data, Evas_Object *bx3, void *event_info)
return;
}
- if (first == 2)
+ if (first == 2 && enable_chat == 1)
{
bb3 = elm_bubble_add(bx3);
evas_object_resize(bb3, w, h/6);
@@ -168,7 +177,7 @@ static void on_send_message(void *data, Evas_Object *bx3, void *event_info)
first = 0;
bubble_pos = 100;
-
+
return;
}
}
@@ -181,18 +190,20 @@ void show_message(char *current_msg)
if (current_msg != NULL)
{
- if (first == 0)
+ if (first == 0 && enable_chat == 1)
{
bb1 = elm_bubble_add(bbx);
- evas_object_resize(bb1, w, h/7);
+ evas_object_resize(bb1, w, h/6);
evas_object_move(bb1, 0, 0);
evas_object_show(bb1);
set_bubble_text(bb1, to, current_msg);
first = 1;
bubble_pos = bubble_pos + h/6;
+
+ return;
}
- if (first == 1);
+ if (first == 1 && enable_chat == 1);
{
bb2 = elm_bubble_add(bbx);
evas_object_resize(bb2, w, h/6);
@@ -202,8 +213,10 @@ void show_message(char *current_msg)
first = 2;
bubble_pos = bubble_pos + h/6;
+
+ return;
}
- if (first == 2)
+ if (first == 2 && enable_chat == 1)
{
bb3 = elm_bubble_add(bbx);
evas_object_resize(bb3, w, h/6);
@@ -212,7 +225,9 @@ void show_message(char *current_msg)
set_bubble_text(bb3, to, current_msg);
first = 0;
- bubble_pos = bubble_pos + h/6;
+ bubble_pos = 100;
+
+ return;
}
}
}
@@ -221,7 +236,9 @@ void show_message(char *current_msg)
void set_bubble_text(Evas_Object *bb, char *username, char *text)
{
Evas_Object *cn;
-
+
+ printf("%s \n", text);
+
/* sets the username */
elm_entry_entry_set(bb, username);
@@ -591,7 +608,7 @@ void init_buttons(Evas_Object *bx)
/* add cancel button to box - fill and expand */
bt2 = elm_button_add(win);
- elm_button_label_set(bt2, "Cancel");
+ elm_button_label_set(bt2, "Exit");
evas_object_size_hint_weight_set(bt2, 1.0, 1.0);
evas_object_size_hint_align_set(bt2, -1.0, -1.0);
elm_box_pack_end(bx, bt2);
@@ -629,18 +646,6 @@ void elm_main ()
int main (int argc, char **argv)
{
- /* if (argv[1] == NULL || argv[2] == NULL)
- {
- printf("no nick and no receiver set");
- from = NULL;
- to = NULL;
- }
- else
- {
- from = argv[1];
- to = argv[2];
- }*/
-
elm_init(argc, argv);
elm_main();
diff --git a/friendfinder/gui.h b/friendfinder/gui.h
index ae52896..bc900ec 100644
--- a/friendfinder/gui.h
+++ b/friendfinder/gui.h
@@ -4,20 +4,6 @@
#include "receiver.h"
#include "Evas.h"
-//structs
-//typedef struct _ginfo ginfo;
-
-//callback functions
-/*
-static void on_cancel(void *data, Evas_Object *obj, void *event_info);
-static void on_send_message(void *data, Evas_Object *obj, void *event_info);
-static void on_own_position(void *data, Evas_Object *obj, void *event_info);
-static void on_show_users(void *data, Evas_Object *obj, void *event_info);
-static void on_message(void *data, Evas_Object *obj, void *event_info);
-static void on_options(void *data, Evas_Object *obj, void *event_info);
-static void on_chat(void *data, Evas_Object *obj, void *event_info);
-static void on_map(void *data, Evas_Object *obj, void *event_info);
-*/
//other functions
void set_bubble_text(Evas_Object *bb, char *username, char *text);
diff --git a/friendfinder/handler.c b/friendfinder/handler.c
index fad9b8b..b1a6075 100644
--- a/friendfinder/handler.c
+++ b/friendfinder/handler.c
@@ -6,35 +6,50 @@
#include "handler.h"
pthread_t msg_thread, sender_thread, receiver_thread;
-
+int msg_start = 0, sender_start = 0, receiver_start = 0;
void init_msg_thread(char *from, char *to)
{
- struct nick *nicknames = (struct nick*) malloc(sizeof(struct nick));
- nicknames->from = from;
- nicknames->to = to;
+ if (msg_start == 0)
+ {
+ struct nick *nicknames = (struct nick*) malloc(sizeof(struct nick));
+ nicknames->from = from;
+ nicknames->to = to;
+
+ pthread_create(&msg_thread, NULL, msg_main_loop, (void*) nicknames);
- pthread_create(&msg_thread, NULL, msg_main_loop, (void*) nicknames);
+ printf("HANDLER: msg thread init...\n");
- printf("HANDLER: msg thread init...\n");
+ msg_start = 1;
+ }
}
void init_receiver_thread(char *from)
{
- pthread_create(&receiver_thread, NULL, receiver_main, (void*) from);
+ if (receiver_start == 0)
+ {
+ pthread_create(&receiver_thread, NULL, receiver_main, (void*) from);
- printf("HANDLER: receiver thread init...\n");
+ printf("HANDLER: receiver thread init...\n");
+
+ receiver_start = 1;
+ }
}
void init_sender_thread(char *from)
{
- pthread_create(&sender_thread, NULL, sender_main, (void*) from);
+ if (sender_start == 0)
+ {
+ pthread_create(&sender_thread, NULL, sender_main, (void*) from);
+
+ printf("HANDLER: sender thread init...\n");
- printf("HANDLER: sender thread init...\n");
+ sender_start = 1;
+ }
}
void close_threads()
{
- pthread_exit(NULL);
printf("HANDLER: all threads are closed...\n");
+ exit(0);
}
diff --git a/friendfinder/map/object.c b/friendfinder/map/object.c
index 45ba56c..89bdce5 100644
--- a/friendfinder/map/object.c
+++ b/friendfinder/map/object.c
@@ -156,6 +156,7 @@ int map_object_update(struct smart_map *smart)
int tw, th;
int ret, ts = smart->mi->tile_size;
char buffer[512];
+ char second_buffer[512];
tw = 2 + (((double)smart->w + ts) / ts);
th = 2 + (((double)smart->h + ts) / ts);
@@ -175,7 +176,7 @@ int map_object_update(struct smart_map *smart)
set_own_position(smart->ta.lat, smart->ta.lon);
set_sender_position(smart->ta.lat, smart->ta.lon);
- snprintf(buffer, 512, "%lf * %lf", smart->ta.lat, smart->ta.lon);
+ snprintf(buffer, 512, "%lf * %lf \n", smart->ta.lat, smart->ta.lon);
smart->lat = smart->ta.lat;
smart->lon = smart->ta.lon;
edje_object_part_text_set(smart->theme, "position", buffer);
diff --git a/friendfinder/msg_sender.c b/friendfinder/msg_sender.c
index 8c41619..d525a3d 100644
--- a/friendfinder/msg_sender.c
+++ b/friendfinder/msg_sender.c
@@ -6,13 +6,13 @@
#include "openssl/blowfish.h"
#include "msg_sender.h"
+#include "gui.h"
static irc_session_t *session;
irc_callbacks_t callbacks;
char* nick_from;
char* send_to;
-char* received_msg;
char* msg_to_send;
irc_dcc_t dccid;
@@ -20,15 +20,13 @@ irc_dcc_t buddy_dccid = 1;
BF_KEY key;
-int run_session = 0;
-int message_available = 0;
int init_connection(char* server_ip, char* user)
{
printf("MSG_SENDER: initialising connection...\n");
session = irc_create_session(&callbacks);
- int con = irc_connect(session, server_ip, 6667, NULL, user, user, user);
+ int con = irc_connect(session, server_ip, 6666, NULL, user, user, user);
if (irc_is_connected(session) == 1)
{
@@ -61,54 +59,15 @@ void set_txt_msg(char *msg)
}
-void dump_message(char *msg)
-{
- received_msg = msg;
-}
-
-void dcc_recv_callback (irc_session_t * session, irc_dcc_t id, int status, void * ctx, const char * data, unsigned int length)
-{
- printf("dcc_recv_callback() \n");
- switch (status)
- {
- case LIBIRC_ERR_CLOSED:
- printf ("MSG_SENDER: DCC %d: chat closed\n", id);
- break;
-
- case 0:
- if ( !data )
- {
- printf ("MSG_SENDER: DCC %d: chat connected\n", id);
- send_message(session, "im here");
- }
- else
- {
- char *decrypted_msg = (char*) malloc(sizeof(data));
-
- BF_ecb_encrypt(data, decrypted_msg, &key, BF_DECRYPT);
-
- show_message(decrypted_msg);
- printf("incoming message: %s \n", decrypted_msg);
- }
- break;
-
- default:
- printf ("MSG_SENDER: DCC %d: error %s\n", id, irc_strerror(status));
- break;
- }
-}
-
void send_message(irc_session_t *session, char *msg)
{
if (msg != NULL)
{
- char crypted_msg[64];
+ char *crypted_msg = (char*) malloc(sizeof(msg));
- printf("MSG_SENDER: send_message: %s \n", msg);
-
BF_ecb_encrypt(msg, crypted_msg, &key, BF_ENCRYPT);
- int i = irc_dcc_msg(session, buddy_dccid, crypted_msg);
+ int i = irc_cmd_msg(session, "#msg", crypted_msg);
if (i == 0)
{
@@ -118,30 +77,6 @@ void send_message(irc_session_t *session, char *msg)
else return;
}
-void on_join(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
-{
- printf("on_join()\n");
-
- char sender_name[90];
-
- irc_target_get_nick(origin, sender_name, sizeof(sender_name));
-
- if (strcmp(sender_name, send_to) == 0)
- {
- printf("MSG_SENDER: Buddy %s joined the channel \n", send_to);
-
- if (irc_dcc_chat(session, 0, send_to, dcc_recv_callback, &dccid) != 0)
- {
- printf("MSG_SENDER: ddc_chat_init_error \n");
- }
-
- else
- {
- printf("MSG_SENDER: dcc_chat_init_success \n");
- printf("MSG_SENDER: dccid %d \n", dccid);
- }
- }
-}
void on_connect(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
@@ -153,39 +88,23 @@ void on_connect(irc_session_t * session, const char * event, const char * origin
void on_channel(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
-// printf("on_channel()\n");
- // if (strcmp(params[1], "connected") != 0)
-/* {
- buddy_dccid = atoi(params[1]);
- printf("MSG_SENDER: buddy_dccid: %d \n", buddy_dccid);
- }*/
-}
-void on_dcc_req(irc_session_t * session, const char * nick, const char * addr, irc_dcc_t id)
-{
- printf("on_dcc_req()\n");
- int err = irc_dcc_accept(session, id, 0, dcc_recv_callback);
- if(err != 0)
- {
- printf("MSG_SENDER: ddc_chat_decline by error code %i \n", err);
- }
+ //char msg[4096];
+ char *msg = (char*) malloc(sizeof(params[1]));
+
+ BF_ecb_encrypt(params[1], msg, &key, BF_DECRYPT);
+ printf("%s: %s \n", params[0], msg);
- else
- {
- printf("MSG_SENDER: %s dcc_chat_accepted \n", nick);
- }
+ show_message(msg);
}
-
void msg_main_loop(void *nicknames)
{
memset(&callbacks, 0, sizeof(callbacks));
callbacks.event_connect = on_connect;
- callbacks.event_join = on_join;
- callbacks.event_dcc_chat_req = on_dcc_req;
callbacks.event_channel = on_channel;
- struct nick *nicks= (struct nick*) malloc(sizeof(struct nick));
+ struct nick *nicks = (struct nick*) malloc(sizeof(struct nick));
nicks = (struct nick*) nicknames;
nick_from = nicks->from;
send_to = nicks->to;
diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c
index b0d74a0..f921c4c 100644
--- a/friendfinder/receiver.c
+++ b/friendfinder/receiver.c
@@ -11,9 +11,11 @@ static irc_session_t *session;
irc_callbacks_t callbacks;
int counter = 0;
char sender_name[100];
+char own_nickname[100];
char *lat, *lon;
char *receiver_server_ip;
+int username_length;
int ret;
int got_lat = 0;
int got_lon = 0;
@@ -65,17 +67,22 @@ void dump_data(char* lat, char* lon, char* nick)
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]));
+ char *decrypted_lat = (char*) malloc(sizeof(char));
+ char *decrypted_lon = (char*) malloc(sizeof(char));
+ char *sender_org = (char*) malloc(username_length + 1);
irc_target_get_nick(origin, sender_name, sizeof(sender_name));
-
- if (sender_name != NULL && strcmp(sender_name, "_s") > 0)
+ strncpy(sender_org, sender_name, username_length);
+ sender_org[username_length] = '\0';
+
+ if (sender_name != NULL && strcmp(sender_org, own_nickname) != 0 && strcmp(sender_name, "_s") > 0)
+// if (sender_name != NULL && strcmp(sender_name, "_s") > 0)
{
if (counter % 2 != 0)
{
BF_ecb_encrypt(params[1], decrypted_lat, &key, BF_DECRYPT);
lat = decrypted_lat;
+ //printf("decrypted_lat %s \n", decrypted_lat);
got_lat = 1;
}
@@ -83,6 +90,7 @@ void get_position(irc_session_t * session, const char * event, const char * orig
{
BF_ecb_encrypt(params[1], decrypted_lon, &key, BF_DECRYPT);
lon = decrypted_lon;
+ //printf("decrypted_lon %s \n", decrypted_lon);
got_lon = 1;
}
@@ -115,12 +123,15 @@ void receiver_main(void *user)
callbacks.event_channel = get_position;
callbacks.event_connect = on_connect_receiver;
- char* username = (char*) user;
+ char username[100];
+ sprintf(username, "%s", (char*) user);
+ sprintf(own_nickname, "%s", username);
+ username_length = strlen(username);
- if (receiver_server_ip != NULL)
+ if (receiver_server_ip != NULL && user != NULL)
{
//TODO pointer zeigt immer auf gleiche variable....damit wird immer gleicher from wert genutzt und _r _s angehängt....fixen
- strcat(&username, "_r");
+ strcat(username, "_r");
if (init_connection_receiver(receiver_server_ip, username) == 0)
{
diff --git a/friendfinder/sender.c b/friendfinder/sender.c
index 8ba5980..3acb3e4 100644
--- a/friendfinder/sender.c
+++ b/friendfinder/sender.c
@@ -123,7 +123,7 @@ void send_position(irc_session_t * session, const char * event, const char * ori
if (_x == 0 && _y == 0)
{
- // printf("SENDER: send succesfull %i %i \n", lat, lon);
+ // printf("SENDER: send succesfull %s %s \n", lat_char, lon_char);
}
if (_y != 0)
@@ -174,7 +174,8 @@ void sender_main(void *user)
callbacks.event_connect = send_position;
callbacks.event_channel = get_aknowledge;
- char *username = (char*)user;
+ char username[100];
+ sprintf(username, "%s", (char*) user);
if (sender_server_ip != NULL)
{