summaryrefslogblamecommitdiffstats
path: root/friendfinder/msg_sender.c
blob: d525a3dc9d803e431e6e598c123183a34a6b6818 (plain) (tree)
1
2
3
4
5
6
7
8
9







                             
                



                              
                
              


                  
                          


           


                                                
                                                           

                                                 
                                                                                


                                           
                                                      





                         
                                                                        



                         
                            
 

                                     
                                                        



                           
                                           
         

                                           

                                                 

 

                                                    

                        
                                                                
 

                                                                        
                                                                  

                           
                 
                                                                                   
                 



                    










                                                                                                                           




                                                                
 
                          

 
                                   



                                                 

                                             
                                                                        


                                         
 
                                                         
                
                                                              
 
                                 
         
  
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "libircclient.h"
#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* msg_to_send;

irc_dcc_t dccid;
irc_dcc_t buddy_dccid = 1;

BF_KEY key;


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, 6666, NULL, user, user, user);
	
	if (irc_is_connected(session) == 1)
	{
		printf("MSG_SENDER: connected... \n");
		return 0;
	
	}

	if (con != 0)
	{
		printf("MSG_SENDER: connection error-code: %i \n", con);
		return 1;
	}
}

void disconnect_msg_sender()
{
	irc_disconnect(session);
	irc_destroy_session(session);
	printf("MSG_SENDER: disconnected...\n");	
}

void set_txt_msg(char *msg)
{
	if (msg != NULL && session != NULL)
	{
		send_message(session, msg);
	}
	else printf("MSG_SENDER: NULL value \n");
	
}

void send_message(irc_session_t *session, char *msg)
{
	if (msg != NULL)
	{
		char *crypted_msg = (char*) malloc(sizeof(msg));

		BF_ecb_encrypt(msg, crypted_msg, &key, BF_ENCRYPT);	

		int i = irc_cmd_msg(session, "#msg", crypted_msg);
	
		if (i == 0)
		{
			printf("MSG_SENDER: message '%s' sent successful \n", msg);
		}
	}
	else return;
}


void on_connect(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
	irc_cmd_join(session, "#msg", NULL);	
	irc_cmd_msg(session, "#msg", "connected"); 		

	BF_set_key(&key, 5, "abcde");	
}

void on_channel(irc_session_t * session, const char * event, const char * origin, const char ** params, unsigned int count)
{
	//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);

	show_message(msg);
}

void msg_main_loop(void *nicknames)
{
	memset(&callbacks, 0, sizeof(callbacks));

	callbacks.event_connect = on_connect;
	callbacks.event_channel = on_channel;

	struct nick *nicks = (struct nick*) malloc(sizeof(struct nick));
	nicks = (struct nick*) nicknames;
	nick_from = nicks->from;
	send_to = nicks->to;

 	if (init_connection("127.0.0.1", nick_from) == 0)
	{	
		printf("MSG_SENDER: connection succesfull\n");

		irc_run(session);
	}
}