Questions sur les protocoles DCC et CTCP
* Qu'est ce que ca veut dire CTCP?
* Pourquoi ça s'appelle Protocole de Client
à Client?
* Comment ça marche?
* Quelles sont les commandes CTCP
courantes?
* Pourquoi tous les clients ne les supportent
pas?
* Comment on utilise les CTCP?
* Qu'est ce qu'un CTCP
flood?
* Et les
DCC?
* Plus
d'infos
* Qu'est ce que ca veut dire CTCP?
CTCP veut dire Client To Client Protocol. Donc
en bon français ça donne Protocole de Client à Client.
* Pourquoi ça s'appelle Protocole de Client à Client?
Parceque c'est interprété et envoyé par votre
client IRC, donc le serveur IRC n'entre pas en jeux, il traite la commande
CTCP comme il traite un /msg envoyé à quelqu'un. Non pas comme certaines
commandes comme le whois.
Dans CTCP, il y a deux types de communication
possible : COMMAND et REPLY
Les Commandes (command)
:
PRIVMSG ((cible):^A ((commande>) ((valeur)^A
Ca à
l'air compliqué?
-> ^A = Le premier caractère ASCII
->
commande = la commande CTCP
-> valeur = la valeur devant être
analysée par le client ciblé
sous la plupart des clients classiques
ca donne :
/CTCP cible commande valeur
Les Réponses (reply)
:
NOTICE ((cible):^A ((commande) ((valeur)^A
C'est pas trop
sorcier
-> ^A = Le premier caractère ASCII
-> commande = la
commande CTCP
-> valeur = la valeur devant être analysée par le
client ciblé
sous la plupart des clients ca donne :
/CTCPREPLY
cible commande valeur
la personne qui aura recu le CTCPREPLY aura dans
son status :
- nick - [CTCP] reply : commande valeur
Exemple
:
Pour pinger le channel #irc_aide, vous ferez :
/CTCP
#irc_aide PING
soit en fait
PRIVMSG #irc_aide :^APING
920054112^A
Toutes les personnes dans #irc_aide recevront donc
:
- [CTCP] #irc_aide PING
soit en
fait
:Mr_RIP!~DJ@zpro12.ibm.iim.devinci.fr PRIVMSG #irc_aide :^APING
920054112^A
Une réponse à ce PING sera :
/ctcpreply Mr_RIP PING
920054112
soit en fait
NOTICE Mr_RIP :^APING 920054112^A
et
Mr_RIP recevra :
- Minotor - [PING] Reply 0
seconds
soit en
fait
:Minotor!cacheflow@patron.cyber-café.fr NOTICE Mr_RIP
:^APING 920054112^A
Ensuite le client de Mr_RIP interprète la
valeure (920054112) qui est une valeur de temps sous UNIX et la soustraira
à la valeur courrante (ex : 920054112).
Soit 920054112 - 920054112
= 0
D'où la réponse - Minotor - [PING] Reply 0 seconds
* Quelles sont les commandes
CTCP courantes?
CLIENTINFO, ACTION, DCC, ERRMSG, FACE, FINGER, PING,
SOUND, SOURCE, TIME, USERINFO, VERSION, XDCC, SCRIPT et
MP3.
Explication de chaque commande :
CLIENTINFO --
Vous donne toutes les commandes CTCP qui
fonctionnent sur le client.
ACTION -- Quand vous tapez /me, c'est ce CTCP
là qui est
utilisé. La différence avec les autres CTCP est qu'il
n'y a pas de réponse (ctcpreply) donnée en retour.
DCC et XDCC -- Les DCC sont établis grâce à un
CTCP,
même si ils n'utilisent pas ce protocole.Voir
le
bas
de la page pour des infos sur les DCC.
ERRMSG -- Réponse à un CTCP
inconnu.
GET FACE -- Icone en 32x32 pixels qui représente
l'utilisateur
(Macintosh
clients only).
FINGER -- Vous donne le temps de idle
(inactivitée) de
la
personne ainsi que son mail et un message.
PING -- Utilisé pour
mesurer le lag (temps de retard) ou le
temps de trajet avec le serveur.
SOUND -- Fait jouer un son par le
client qui le recoit.
SOURCE -- Donne l'URL où le script/client peut être
trouvé.
TIME -- Donne l'heure locale.
USERINFO -- Vous donne un message personnel mis
par la
personne.
VERSION -- Vous donne la version du
script/client.
SCRIPT -- Donne l'URL où le script peut être
trouvé.
MP3 -- Vous donne un titre de MP3 joué par quelqu'un qui
fait du commerce/échange illégal de MP3 (musique). Je vous recommande sous
mIRC de mettre au début de votre fichier remote.ini après
[script] :
n0=ctcp ^1:*mp3*:{ haltdef | /ctcpreply $nick ! MP3 trade is
not allowed on Undernet ! }
Ce petit script vous permettra
d'ignorer la commande MP3 en répondant à celui qui l'a envoyé que le
commerce/échange de MP3 est interdit sur Undernet.
* Pourquoi tous les clients ne les supportent pas?
Parceque c'est une fonction qui dépasse
certains clients très basiques. Presque tous les clients répondront à
la commande CLIENTINFO qui vous montreront les commandes CTCP acceptées
par celui-ci.
* Comment on utilise les
CTCP?
En
général /CTCP cible commande est implémentée dans tous les bons clients
actuels. Il existe des raccourcis aux fonctions les plus utilisées :
-
/version nick = /ctcp nick version
- /ping nick ou /cping nick = /ctcp
nick ping
- /chat nick = /ctcp nick dcc chat
- /send nick valeur =
/ctcp nick dcc send valeur
...
C'est quand un petit malin s'amuse à vous flooder
de CTCP pour que vous soyez déconnecté du serveur IRC.
La plupart
des serveurs sont configurés pour que vous puissiez recevoir plus de plus
de données que ce que vous pouvez émettre. Malgré tout, certaines
commandes comme CLIENTINFO peuvent être utilisées pour vous faire
déconnecter.
La commande CLIENTINFO fait 12 lettres (plus les
infos sur l'expediteur et le destinataire), alors que la réponse au
CLIENTINFO peut faire plus de 200 caractères. Vous serez donc déconnecté
avec le message "Excess Flood".
Je vous recommande sous mIRC de
mettre au début de votre fichier remote.ini après [script]
:
n1=ctcp 1:*clientinfo*:{ haltdef | /ctcpreply $nick mIRC
}
* Et les
DCC?
Les DCC sont lancés par une commande CTCP. Une
fois qu'ils sont lancés, leur vitesse ne peut être altérée que par votre
propre connection, puisque ils n'utilisent pas les serveurs IRC.
La
commande CTCP pour un DCC CHAT est :
/ctcp cible dcc chat ou /chat
cible ou /dcc chat cible
soit en fait
PRIVMSG ((cible) :^ADCC CHAT
((Chat ou Talk) ((IP)
((port)^A
-> ^A = Le premier caractère
ASCII
-> IP = L'IP longue codée sur 32
bit
-> port = Port sur lequel va être effectué le
DCC
La personne que je veux DCC (Minotor) recevra
:
:Mr_RIP!~DJ@zpro12.ibm.iim.devinci.fr PRIVMSG Minotor :^ADCC CHAT
CHAT 5145646947 4242^A
Ma machine (5145646947) est donc prete à
recevoir une connection DCC CHAT sur le port 4242 si le DCC CHAT est
accepté.
NOTE : La plupart des clients acceptent les DCC entre les
ports 1024 et 5000.
Pour un DCC SEND la commande est donc
:
PRIVMSG ((cible) :^ADCC SEND ((nom du fichier) ((IP) ((port)
((taille du fichier)^A
-> ^A = Le premier
caractère ASCII
-> IP = L'IP longue codée sur 32
bit
-> port = Port sur lequel va être effectué le
DCC
La personne à qui je veux DCC (Minotor) recevra
:
:Mr_RIP!~DJ@zpro12.ibm.iim.devinci.fr PRIVMSG Minotor :^ADCC SEND
blagues.txt 5145646947 1313 5562^A
Ma machine (5145646947) est donc
prete à recevoir une connection DCC SEND de 5562 Octets sur le port 1313
si le DCC SEND est accepté (une commande DCC GET est envoyé des que vous
cliquez sur "accepter").
* Plus d'infos
Le site Undernet
Doco-Com vous offre une documentation très complète sur les DCC et les
CTCP. Ces documents sont en anglais et sont très techniques.
Version 1.0 écrite par LGM@IRC
Suggestions et
Commentaires pour la traduction à Mr_RIP.
(toute
erreur dans le present document n'engageant que
lui)
MAJ 04/09/99