diff --git a/main.c b/main.c index 2925666..3bf3099 100644 --- a/main.c +++ b/main.c @@ -18,6 +18,8 @@ int joinChan = 0x0; time_t startTime; +int onIRC = 0; + void usage(); int bridgeProcessData(int net,char *data); @@ -139,7 +141,62 @@ } int bridgeProcessData(int net,char *dataFresh) { - printf("[%s]\n",dataFresh); + char *data_tok = 0x0; + char *cmd = 0x0; + char *nick = 0x0; + char *chunk = 0x0; + char *chunk_tok = 0x0; + char IRCnick[32]; + int i = 0x0; + printf("[%s]\n",dataFresh); + if (net == 1) { + writeLog(0,"TUve Network\n"); + if (strstr(dataFresh,"PING ")) + sWriteSocket(tuveSocket,"PONG 1234\n"); + cmd = strtok_r(dataFresh,":",&data_tok); + if (!strcmp(cmd,"IDENT")) + sWriteSocket(tuveSocket,"JOIN #TUvé\n"); + if (!strcmp(cmd,"MSG") && (onIRC == 1)) { + nick = strtok_r(NULL,":",&data_tok); + strtok_r(NULL,":",&data_tok); + sWriteSocket(ircSocket,"PRIVMSG #UbixOS :<%s> %s\n",nick,strtok_r(NULL,"\n",&data_tok)); + } + } + else { + writeLog(0,"IRC Network\n"); + for (chunk = strtok_r(dataFresh,"\n",&chunk_tok);chunk;chunk = strtok_r(NULL,"\n",&chunk_tok)) { + + cmd = strtok_r(chunk," ",&data_tok); + printf("CMD1: [%s]\n",cmd); + + if (cmd[0] == ':') { + if (strstr(cmd,"!")) { + for (i=1;cmd[i] != '!';i++) + IRCnick[i-1] = cmd[i]; + IRCnick[i] = '\0'; + } + printf("IRC NICK: [%s]\n",IRCnick); + cmd = strtok_r(NULL," ",&data_tok); + } + + printf("CMD2: [%s]\n",cmd); + + if (!strcmp(cmd,"PING")) + sWriteSocket(ircSocket,"PONG %s\n",strtok_r(NULL,"\n",&data_tok)); + else if (!strcmp(cmd,"376")) { + sWriteSocket(ircSocket,"JOIN #UbixOS\n"); + sWriteSocket(ircSocket,"PRIVMSG #UbixOS :Welcome\n"); + onIRC = 1; + } + else if (!strcmp(cmd,"PRIVMSG")) { + strtok_r(NULL," ",&data_tok); + + nick = strtok_r(NULL,"\n",&data_tok); + nick[0] = ' '; + sWriteSocket(tuveSocket,"MSG #TUvé:%s>%s\n",IRCnick,nick); + } + } + } return(0x0); } diff --git a/socket.c b/socket.c index ff947f5..8bb656d 100644 --- a/socket.c +++ b/socket.c @@ -64,11 +64,14 @@ if (net == 1) { writeLog(2,"TUve Socket: [%i]\n",mySocket); tuveSocket = mySocket; - sWriteSocket(tuveSocket,"IDENT TUveBridge:1234567\n"); + sWriteSocket(tuveSocket,"IDENT TB:91234567\n"); } else { - writeLog(2,"IRC Socket: [%i]\n",mySocket); - ircSocket = mySocket; + writeLog(2,"IRC Socket: [%i]\n",mySocket); + ircSocket = mySocket; + sWriteSocket(ircSocket,"NICK TV_B\n"); + sWriteSocket(ircSocket,"USER TV_B 8 * :TUve Bridge\n"); + sWriteSocket(ircSocket,"JOIN #UbixOS\n"); } highSock = mySocket + 1; diff --git a/tuvebridge.h b/tuvebridge.h index 7890ee1..0d80e31 100644 --- a/tuvebridge.h +++ b/tuvebridge.h @@ -29,7 +29,7 @@ #define MAX_TOPIC_LEN 128 #define MAX_CHAN_LEN 32 #define VERSION "v0.40" -#define MYSQL_HOST_NAME "localhost" +#define MYSQL_HOST_NAME "ivorytower.ubixonline.com" #define MYSQL_USERNAME "tuve" #define MYSQL_PASSWORD "5558585" #define MYSQL_DB_NAME "tuve"