Accueil > > > BOT IRC TOUT SIMPLE, FAIT A L'AIDE DE LA CLASSE PROSOCK
BOT IRC TOUT SIMPLE, FAIT A L'AIDE DE LA CLASSE PROSOCK
Information sur la source
Description
le code d'un bot irc tout bete, fait à l'aide de la classe ProSock. j'ai remis prosock.cpp dans le projet meme s'il ne sert pas (tout est mis entre /* */ d'ailleurs...) : prosock.h se sert de la libraire prosock.lib. Le bot se connecte sur un serveur irc, et join un channel. il s'identifie sur le port 113 (ircid). cf la source ! le seul truc ke le bot fait est de répondre au PING du serveur (sinon il se fait déconnecter pour ping timeout)
Source
- #include "prosock.h"
- #include <stdio.h>
- #include "token.h"
- #include <time.h>
-
- void IrcProc(ProSock* s, int message);
- void proc_ircid(ProSock* s, int message);
-
- ProSock s_accept = CreateProSocket(proc_ircid);
- ProSock s_listen = CreateProSocket(proc_ircid);
-
- ProSock botirc = CreateProSocket(IrcProc);
-
-
- void main()
- {
- s_listen.SockListen(113);
- botirc.SockOpen("mesra.dal.net",6669);
-
- while (true)
- {
- Sleep(INFINITE);
- }
- }
-
-
- void IrcProc(ProSock* s, int message)
- {
- switch(message)
- {
- case ON_SOCKOPEN:
- {
- // Géneration d'un nick 'aléatoire'/////
- srand(time(0));
- char c1 = (rand() % 10) + '0';
- char c2 = (rand() % 10) + '0';
- char c3 = (rand() % 10) + '0';
- char c4 = (rand() % 10) + '0';
- char nick[20];
- sprintf(nick,"cosmo%c%c%c%c",c1,c2,c3,c4);
- //////////////////////////////////////////
-
- printf("connection reussie sur %s (port %d) !\n",s->Ip(),s->Port());
- s->SockWrite("NICK ");
- s->SockWriteln(nick);
- s->SockWriteln(" USER pouet . . pouit");
- s->SockWriteln("JOIN #CosmoBob");
- break;
- }
- case SOCKOPEN_ERROR:
- {
- printf("impossible de se connecter sur %s (port %d)\n",s->Ip(),s->Port());
- // Le socket va être automatiquement fermé.
- break;
- }
-
- case SOCKWRITE_ERROR:
- {
- printf("Erreur de send\n");
- s->SockClose();
- break;
- }
- case SOCKREAD_ERROR:
- {
- printf("erreur de recv, le socket est automatiquement fermé\n");
-
- break;
- }
-
-
- case ON_SOCKREADLN:
- {
- char buffer[512];
- s->SockReadln(buffer,sizeof(buffer));
-
- printf("%s\n",buffer);
-
- char param1[50];
- token(buffer,param1,sizeof(param1),1,1,32);
- if (!strcmp(param1,"PING"))
- {
- s->SockWrite("PONG ");
- s->SockWriteln(buffer);
- }
-
- break;
- }
- }
- }
-
-
- void proc_ircid(ProSock* s, int message)
- {
- switch(message)
- {
-
- case ON_SOCKLISTEN:
- {
- printf("listen ok !\n");
- s->SockAccept(&s_accept);
- s->SockClose();
- break;
- }
-
- case SOCKLISTEN_ERROR:
- {
- printf("listen error (le socket va etre fermé automatiquement)!\n");
- break;
- }
-
- case ON_SOCKACCEPT:
- {
- printf("accept ok Ip : %s (port %d)\n",s->Ip(),s->Port());
- break;
- }
-
- case SOCKACCEPT_ERROR:
- {
- printf("accept error\n");
- break;
- }
-
- case ON_SOCKREADLN:
- {
- char buffer[200];
- s->SockReadln(buffer,sizeof(buffer));
- printf("%s\n",buffer);
-
- char param1[50];
- char param2[50];
- token(buffer,param1,sizeof(param1),1,1,32);
- token(buffer,param2,sizeof(param2),3,3,32);
- char string2send[150];
- strncpy(string2send,param2,sizeof(string2send));
- strncat(string2send," , ",sizeof(string2send));
- strncat(string2send,param1,sizeof(string2send));
- strncat(string2send," : USERID : UNIX : pouet",sizeof(string2send));
- s->SockWriteln(string2send);
-
- break;
- }
- }
- }
-
#include "prosock.h"
#include <stdio.h>
#include "token.h"
#include <time.h>
void IrcProc(ProSock* s, int message);
void proc_ircid(ProSock* s, int message);
ProSock s_accept = CreateProSocket(proc_ircid);
ProSock s_listen = CreateProSocket(proc_ircid);
ProSock botirc = CreateProSocket(IrcProc);
void main()
{
s_listen.SockListen(113);
botirc.SockOpen("mesra.dal.net",6669);
while (true)
{
Sleep(INFINITE);
}
}
void IrcProc(ProSock* s, int message)
{
switch(message)
{
case ON_SOCKOPEN:
{
// Géneration d'un nick 'aléatoire'/////
srand(time(0));
char c1 = (rand() % 10) + '0';
char c2 = (rand() % 10) + '0';
char c3 = (rand() % 10) + '0';
char c4 = (rand() % 10) + '0';
char nick[20];
sprintf(nick,"cosmo%c%c%c%c",c1,c2,c3,c4);
//////////////////////////////////////////
printf("connection reussie sur %s (port %d) !\n",s->Ip(),s->Port());
s->SockWrite("NICK ");
s->SockWriteln(nick);
s->SockWriteln(" USER pouet . . pouit");
s->SockWriteln("JOIN #CosmoBob");
break;
}
case SOCKOPEN_ERROR:
{
printf("impossible de se connecter sur %s (port %d)\n",s->Ip(),s->Port());
// Le socket va être automatiquement fermé.
break;
}
case SOCKWRITE_ERROR:
{
printf("Erreur de send\n");
s->SockClose();
break;
}
case SOCKREAD_ERROR:
{
printf("erreur de recv, le socket est automatiquement fermé\n");
break;
}
case ON_SOCKREADLN:
{
char buffer[512];
s->SockReadln(buffer,sizeof(buffer));
printf("%s\n",buffer);
char param1[50];
token(buffer,param1,sizeof(param1),1,1,32);
if (!strcmp(param1,"PING"))
{
s->SockWrite("PONG ");
s->SockWriteln(buffer);
}
break;
}
}
}
void proc_ircid(ProSock* s, int message)
{
switch(message)
{
case ON_SOCKLISTEN:
{
printf("listen ok !\n");
s->SockAccept(&s_accept);
s->SockClose();
break;
}
case SOCKLISTEN_ERROR:
{
printf("listen error (le socket va etre fermé automatiquement)!\n");
break;
}
case ON_SOCKACCEPT:
{
printf("accept ok Ip : %s (port %d)\n",s->Ip(),s->Port());
break;
}
case SOCKACCEPT_ERROR:
{
printf("accept error\n");
break;
}
case ON_SOCKREADLN:
{
char buffer[200];
s->SockReadln(buffer,sizeof(buffer));
printf("%s\n",buffer);
char param1[50];
char param2[50];
token(buffer,param1,sizeof(param1),1,1,32);
token(buffer,param2,sizeof(param2),3,3,32);
char string2send[150];
strncpy(string2send,param2,sizeof(string2send));
strncat(string2send," , ",sizeof(string2send));
strncat(string2send,param1,sizeof(string2send));
strncat(string2send," : USERID : UNIX : pouet",sizeof(string2send));
s->SockWriteln(string2send);
break;
}
}
}
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
SIMULER FACILEMENT L'ENVOI DE MAILSIMULER FACILEMENT L'ENVOI DE MAIL par JeremyJeanson
il m'a été demandé, à plusieurs reprises, comment je faisais pour simuler l'envoi de mail lors de mes démos de Workflow Foundation. Ma solution est plutôt simple : j'utilise la configuration par défaut du SmtpClient et j'oriente les mails vers un dossier ...
Cliquez pour lire la suite de l'article par JeremyJeanson VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES !VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES ! par Patrick Guimonet
Si ce n'est déjà fait (comme plus de 600 personnes déjà), il est encore temps de voter pour le concours TOP 10 des influenceurs SharePoint francophones ! Il est organisé par harmon.ie et accessible ici : http://harmon.ie/top-...
Cliquez pour lire la suite de l'article par Patrick Guimonet [CONF'SHAREPOINT] DERNIER RAPPEL ! :-)[CONF'SHAREPOINT] DERNIER RAPPEL ! :-) par Patrick Guimonet
La Conf'SharePoint en chiffres c'est : 3 jours de SharePoint ! 4 parcours et 60 sessions 17 partenaires représentant toutes les fac...
Cliquez pour lire la suite de l'article par Patrick Guimonet [ #SHAREPOINT 2013 ] LES MODèLES DE SITES STANDARDS.[ #SHAREPOINT 2013 ] LES MODèLES DE SITES STANDARDS. par Patrick Guimonet
C'est un point peu mis en avant mais SharePoint 2013 a été l'occasion de remettre de l'ordre dans les modèles de sites. Tout d'abord, un certain nombre de modèles ont été tout simplement rendus obsolètes (cf. Fonctionnalités déco...
Cliquez pour lire la suite de l'article par Patrick Guimonet
Forum
QUESTION QUESTION par wouroudkouka
Cliquez pour lire la suite par wouroudkouka PB PACMAN C++PB PACMAN C++ par garfield95
Cliquez pour lire la suite par garfield95
Logiciels
Easy-Planning (4.5.0.11)EASY-PLANNING (4.5.0.11)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté a... Cliquez pour télécharger Easy-Planning CVEasy (3.1.0.51)CVEASY (3.1.0.51)PHMSD-CVEasy est un logiciel d'aide à la rédaction de CV d'une simplicité déconcertante.
PHMSD-C... Cliquez pour télécharger CVEasy LettresFaciles 2011 (8.6.0.31)LETTRESFACILES 2011 (8.6.0.31)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011 sDEVIS-FACTURES vlPRO (8.4.2.62)SDEVIS-FACTURES VLPRO (8.4.2.62)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO Devis-Factures PHMSD (2.1.0.11)DEVIS-FACTURES PHMSD (2.1.0.11)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD
|