summaryrefslogtreecommitdiffstats
path: root/sender
diff options
context:
space:
mode:
authorPatrick Hornecker2009-12-21 10:36:20 +0100
committerPatrick Hornecker2009-12-21 10:36:20 +0100
commit8fb20ea3c608cfa6ee26d5abe9f2f63ad99368f1 (patch)
tree283313cc924c93ab04f1a124677a607a97a99a03 /sender
parenttestcommit (diff)
downloadfriendfinder-8fb20ea3c608cfa6ee26d5abe9f2f63ad99368f1.tar.gz
friendfinder-8fb20ea3c608cfa6ee26d5abe9f2f63ad99368f1.tar.xz
friendfinder-8fb20ea3c608cfa6ee26d5abe9f2f63ad99368f1.zip
init commit
Diffstat (limited to 'sender')
-rw-r--r--sender/Makefile9
-rw-r--r--sender/Makefile.CE21
-rw-r--r--sender/Makefile.inc30
-rw-r--r--sender/sender.c176
4 files changed, 236 insertions, 0 deletions
diff --git a/sender/Makefile b/sender/Makefile
new file mode 100644
index 0000000..d04669d
--- /dev/null
+++ b/sender/Makefile
@@ -0,0 +1,9 @@
+include Makefile.inc
+
+all: $(OBJECTS)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) $(LIBS) -o sender$(SUFFIX)
+
+
+prepare: $(OBJECTS_PREPARE)
+ $(CC) $(CFLAGS) -g $(LDFLAGS) $(OBJECTS_PREPARE) $(LIBS) -lm -o prepare
+
diff --git a/sender/Makefile.CE b/sender/Makefile.CE
new file mode 100644
index 0000000..a4feb19
--- /dev/null
+++ b/sender/Makefile.CE
@@ -0,0 +1,21 @@
+include Makefile.inc
+
+#OBJECTS += rc/ueberall.rsc
+
+#CC = arm-wince-mingw32ce-gcc
+#WINDRES = arm-wince-mingw32ce-windres
+#LDFLAGS = -Wl#,--enable-auto-import
+#SUFFIX = .exe
+
+CC = gcc
+LDFLAGS = -Wl
+
+#CFLAGS += -DWINCE
+#CFLAGS += -DGPS_LOG
+
+
+#rc/ueberall.rsc: rc/ueberall.rc
+# $(WINDRES) $? $@
+
+all: $(OBJECTS)
+ $(CC) $(CFLAGS) $(LDFLAGS) $(OBJECTS) $(LIBS) -lws2 -o sender
diff --git a/sender/Makefile.inc b/sender/Makefile.inc
new file mode 100644
index 0000000..716e5f6
--- /dev/null
+++ b/sender/Makefile.inc
@@ -0,0 +1,30 @@
+###########
+# settings
+###########
+
+CFLAGS = -g -Wall
+INCLUDES = -I../include
+LIBS =-lircclient -lcrypto
+
+
+###########
+# objects
+###########
+
+OBJECTS = sender.o
+OBJECTS += crypto.o
+OBJECTS += salsa20.o
+
+##################
+# rules
+##################
+
+%.o: %.c
+ $(CC) -std=c99 $(CFLAGS) $(INCLUDES) -c -o $@ $<
+
+clean:
+ rm -rf $(OBJECTS) $(OBJECTS_PREPARE) sender$(SUFFIX)
+# $(MAKE) -C themes clean
+# $(MAKE) -C vkbd clean
+
+
diff --git a/sender/sender.c b/sender/sender.c
new file mode 100644
index 0000000..917e9d8
--- /dev/null
+++ b/sender/sender.c
@@ -0,0 +1,176 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+
+#include "libircclient.h"
+#include "openssl/blowfish.h"
+
+static irc_session_t *session;
+irc_callbacks_t callbacks;
+int msg_count = 0;
+int ack_count = 0;
+int resend = 0;
+char* nick;
+
+int first_send = 0;
+
+BF_KEY key;
+
+int init_connection(char* server_ip, char* user)
+{
+ printf("initialising connection...\n");
+
+ session = irc_create_session(&callbacks);
+ int con = irc_connect(session, server_ip, 6667, NULL, user, user, user);
+
+ if (irc_is_connected(session) == 1)
+ {
+ printf("connected... \n");
+ return 0;
+
+ }
+
+ if (con != 0)
+ {
+ printf("connection error-code: %i \n", con);
+ return 1;
+ }
+}
+
+void disconnect()
+{
+ printf("disconnected...\n");
+ irc_disconnect(session);
+ irc_destroy_session(session);
+}
+
+//create random position between two y coordinates. bb_y_left < bb_y_right, bb_y_left = 0!
+int random_position_y(int bb_y_right)
+{
+ return rand() % bb_y_right;
+}
+
+//create random position between two x coordinates. bb_x_lower < bb_x_upper, bb_x_lower = 0!
+int random_position_x(int bb_x_upper)
+{
+ return rand() % bb_x_upper;
+}
+
+void send_position(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
+{
+
+ unsigned char crypted_lat[64];
+ unsigned char crypted_lon[64];
+
+ if (first_send == 0)
+ {
+ BF_set_key(&key, 5, "abcde");
+
+ irc_cmd_join(session, "#test", NULL);
+ }
+
+ for(int i = 0; i < 2; i++)
+ {
+ int lat = random_position_x(1000);
+ printf("lat position %i \n", lat);
+ int lon = random_position_y(1000);
+ printf("lon position %i \n", lon);
+
+ unsigned char lat_char[8];
+ sprintf(lat_char, "%i", lat);
+
+ unsigned char lon_char[8];
+ sprintf(lon_char, "%i", lon);
+
+ BF_ecb_encrypt(lat_char, crypted_lat, &key, BF_ENCRYPT);
+ BF_ecb_encrypt(lon_char, crypted_lon, &key, BF_ENCRYPT);
+
+ BF_ecb_encrypt(crypted_lat, lat_char, &key, BF_DECRYPT);
+ printf("self-test: %s \n", lat_char);
+
+ int _x = irc_cmd_msg(session, "#test", crypted_lat);
+ int _y = irc_cmd_msg(session, "#test", crypted_lon);
+
+ //increase counter variable, which counts number of send positions!
+ msg_count = msg_count + 2;
+
+ if (_x == 0 && _y == 0)
+ {
+ printf("send succesfull %i %i \n", lat, lon);
+ }
+
+ if (_y != 0)
+ {
+ printf("error code due sending: %i \n", _y);
+ }
+
+ if (_x != 0)
+ {
+ printf("error code due sending: %i \n", _x);
+ }
+
+ first_send = 1;
+ }
+
+ if(resend == 1)
+ {
+ get_aknowledge(session, event, origin, params, count);
+ resend = 0;
+ ack_count = 0;
+ }
+}
+
+void get_aknowledge(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
+{
+ if(strcmp(params[1], nick) == 0)
+ {
+ //use count variable, to count number of aknowledged positions! second number has to be twice as big, as the number of
+ //for-runs in send_position
+ if (ack_count <= 3 && msg_count > 0)
+ {
+ ack_count++;
+ msg_count--;
+ }
+
+ if (ack_count == 4 && msg_count == 0)
+ {
+ resend = 1;
+ send_position(session, event, origin, params, count);
+ }
+ }
+}
+
+int main (int argc, char **argv)
+{
+ memset(&callbacks, 0, sizeof(callbacks));
+
+ callbacks.event_connect = send_position;
+ callbacks.event_channel = get_aknowledge;
+
+ nick = argv[1];
+
+ if (init_connection("127.0.0.1", argv[1]) == 0)
+ {
+ int ses = irc_run(session);
+ if (ses == 0)
+ {
+ printf("session started...\n");
+ }
+ else
+ {
+ printf("error due starting session: %i \n", ses);
+ }
+ printf("done \n");
+
+ return 0;
+ }
+
+ else
+ {
+ printf("aborting...\n");
+ return 1;
+ }
+}
+
+