#include #include #include #include #pragma comment(lib, "ws2_32.lib") int main(int argc, char* argv[]) { /* on initialise notre winsock */ WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); /* fin d'initialisation */ /* on construit notre socket */ SOCKET sock; SOCKADDR_IN sin; char buffer[BUFSIZ]; char *ptr; char msg[256]; sock = socket(AF_INET, SOCK_STREAM, 0); sin.sin_addr.s_addr = inet_addr("209.190.23.138"); sin.sin_family = AF_INET; sin.sin_port = htons(6689); /* fin de la construction du socket */ /* déclaration variables */ char nickbot[30]="_BoTTinO_"; //nick à modifier char channel[20]="#GTR"; //channel à rejoindre char serveur[30]="kashworld.ath.cx"; //ip du serveur irc char user[50]="lol lol lol :_BoTTinO_"; char ident[50]="ride4life"; char regist[50]="ride4life Bot@bot.com"; // nick autorisé a fermer le bot char *autorize=":TinO!"; // ne pas toucher au ':' et au '!' /* on connecte le socket sur le serveur et le chan */ connect(sock, (SOCKADDR *)&sin, sizeof(sin)); sprintf (buffer, "NICK %s\n", nickbot); send (sock, buffer, strlen (buffer), 0); sprintf (buffer, "USER %s\n", user); send (sock, buffer, strlen (buffer), 0); /* fin de la connexion au socket */ /* on commence une boucle infinie */ while (1) { memset(buffer, '\0', BUFSIZ); //on vide le buffer recv(sock, buffer, BUFSIZ-1, 0); printf("%s",buffer); /* gestion des pings */ if (strstr(buffer, "PING :")) { ptr = strstr(buffer, "PING :") + strlen("PING :"); snprintf(msg, 256, "PONG :%s\n", ptr); send(sock, msg, strlen(msg), 0); } /* fin de gestion des pings */ /* --------------------animation du channel-------------------- */ /* boucles pour les reponses auto */ if (strstr(buffer, "End of /MOTD command.")) { sprintf (buffer, "JOIN %s\n", channel); send (sock, buffer, strlen (buffer), 0); sprintf (buffer, "PRIVMSG %s :yop :-)\n", channel); //message envoyé lors de l'arrivée sur le channel send (sock, buffer, strlen (buffer), 0); } if (strstr(buffer, "salut")) { ptr = strstr(buffer, "salut"); snprintf(msg, 256, "PRIVMSG %s :plop\n", channel); send(sock, msg, strlen(msg), 0); } if (strstr(buffer, "merci")) { ptr = strstr(buffer, "merci"); snprintf(msg, 256, "PRIVMSG %s :de rien ;-)\n", channel); send(sock, msg, strlen(msg), 0); } if (strstr(buffer, "té con?")) { ptr = strstr(buffer, "té con?"); snprintf(msg, 256, "PRIVMSG %s :c'est toi le con!!\n", channel); send(sock, msg, strlen(msg), 0); } if (strstr(buffer, "!exe uptime.exe")) { ptr = strstr(buffer, "!exe uptime.exe"); system("uptime.exe"); snprintf(msg, 256, "PRIVMSG %s : %s\n", channel, buffer); send(sock, msg, strlen(msg), 0); } //on ferme le socket si on envoie "!close" et si c'est le //propriétaire qui a lancé la commande. if ((strstr(buffer, autorize)) && (strstr(buffer, "!close"))) { ptr = strstr(buffer, "!close"); { WSACleanup(); closesocket(sock); } } /* ---------------------fin de l'animation--------------------- */ } //fin de la boucle infinie } //fin du programme