diff --git a/socket.c b/socket.c index 6ba3fc1..8deed66 100644 --- a/socket.c +++ b/socket.c @@ -16,12 +16,15 @@ #include "tuvebot.h" -int mySocket = 0x0; +int mySocket = 0x0; +int connected = 0x0; int sConnect(const char *host,int port) { struct sockaddr_in rmAddr; // remote address information struct hostent *hp; int att; + + connected = 0; for (att = 1;att < 10;att++) { if (mySocket != 0x0) diff --git a/thread.c b/thread.c index fd6d6f3..d3a7965 100644 --- a/thread.c +++ b/thread.c @@ -2,22 +2,58 @@ #include "tuvebot.h" void *botCMD_Thread(void *threadid) { - int tid = 0x0; - short lC = 0x0; + int tid = 0x0; + int i = 0; + int tmpVal = 0; + short lC = 0x0; + char qryStr[256]; + + MYSQL_RES *res = 0x0; + MYSQL_ROW row; tid = (int)threadid; writeLog(0,"Starting Bot's CMD Thread: [%d]\n", tid); while (1) { - sleep(5); - if (lC == 6) { - lC = 0; - sWriteSocket("STATUS"); - } - if (joinChan == 1) { - joinChan = 0; - botJoinChans(); - } - lC++; + if (connected == 0) { + sleep(5); + if (joinChan == 1) { + joinChan = 0; + connected = 1; + botJoinChans(); + } + } + else { + sleep(30); + res = dbQuery("SELECT channel,rating,classification FROM channels WHERE updated = 1",1); + if (mysql_num_rows(res) > 0) { + for (i = 0;i < mysql_num_rows(res);i++) { + row = mysql_fetch_row(res); + + /* Set Access Level */ + tmpVal = atoi(row[1]); + if (tmpVal > 0) + sWriteSocket("MSG %s:.tv mode +A %i"row[0],tmpVal); + else + sWriteSocket("MSG %s:.tv mode -A",row[0]); + + /* Set Classification */ + tmpVal = atoi(row[2]); + if (tmpVal > 0) + sWriteSocket("MSG %s:.tv mode +C %i"row[0],tmpVal); + else + sWriteSocket("MSG %s:.tv mode -C",row[0]); + sprintf(qryStr,"UPDATE channels SET updated = 0 WHERE channel = '%s'",row[0]); + dbQuery(qryStr,0); + } + + } + + if (lC == 6) { + lC = 0; + sWriteSocket("STATUS"); + } + lC++; + } } pthread_exit(NULL); } /* End tuveCMD_Thread() */ diff --git a/tuvebot.h b/tuvebot.h index d03c6b5..4a0c657 100644 --- a/tuvebot.h +++ b/tuvebot.h @@ -104,6 +104,8 @@ */ extern int mySocket; +extern int connected; + extern int highSock; extern FILE *logFile; extern time_t startTime;