************************************************************************************************************************ *** DMS IRC-SCOL Client - by Sebastien DENEUX - May 00 *** VERSION 1.0 BETA 5 ************************************************************************************************************************ *INTRODUCTION : L'IRC (Internet Relay Chat) est le protocole de discussion (chat) le plus utilisé sur internet. Il existe un grand nombre de logiciels permettant de se connecter à des serveurs IRC. Un des plus connus est mirc (http://www.mirc.com) Tous les jours, des dizaines de milliers de personnes se connectent et discutent sur les réseaux IRC. Ceux-ci sont composés d'un grand nombre de serveurs répartis partout dans le monde. Beaucoup de ces serveurs sont interconnectés. Sur chaque réseau/serveur, il est possible de rentrer dans un canal de discussion existant, ou de créer son propre canal. sdirc vous connecte à ces serveurs IRC à partir des mondes virtuels 3D développés avec la technologie SCOL. Les personnes des mondes 3D et des chats 2D peuvent ainsi communiquer. Vous pouvez vous connecter à un seul canal à la fois, les noms des serveurs et des canaux sont définis par vous, auteur du site. Le principe de connexion entre les chats 2D et 3D retenu est le suivant : une cellule 3D SCOL = un canal de discussion IRC. * NOTES IMPORTANTES : - le timeout à la connection au serveur IRC est de 30 secondes - nécessité de la version 1.3 ou supérieure du module colorTerm - pour la cellule 3D SCOL connectée sur l'irc - ne pas utiliser la liste d'utilisateurs du C3D mais celle du module IRC (UsersList) - ne pas connecter le colorTerm au C3D pour le chat, le chat passe désormais par le module IRC - régler dans l'éditeur du module 1) l'adresse du serveur IRC 2) le port du serveur IRC 3) le nombre maximum de caractères accepté par le serveur pour le pseudo (pour connaître cette valeur, mettre la valeur maximum (20=valeur maximum sous SCOL authorisée par les différents modules de LOGIN), se connecter sur le serveur et changer de pseudo jusqu'à ce qu'il ne soit plus accepté ou tronqué) 4) dans un premier temps, ne pas cocher les options "check SCOL secured login" et "Enable NickServ/ChanServ commands" 5) choisissez l'adresse de votre site 3D (acccès via le web avec installation automatique du plugin SCOL si possible) cette adresse est envoyée dans le message QUIT dès qu'un utilisateur IRC-3D se déconencte du serveur IRC. 6) choisisser la couleur du texte et la couleur de fond de la zone dans laquelle sera affichée le topic du canal (zone ChannelTopic) - ajouter un canal dans l'éditeur (exemple : #france) - l'aide sur les différentes commandes est accessible à partir de la commande /irchelp - ne pas se connecter sur plusieurs serveurs IRC en même temps, sinon il risque d'avoir des "conflits" avec les pseudos (par exemple si un pseudo est accepté par un serveur et pas par un autre) il est nécessaire d'avoir un parfaite synchronisation entres les noms des utilisateurs sue le serveur SCOL et sur le serveur IRC. - le code SCOL de la version actuelle du module est crypté pour différentes raisons : - diminuer la taille du fichier client au maximum (environ 100 Ko avec le code sans commentaires/espaces contre 200 Ko avec) - éviter d'avoir des codes sources modifiés, tant que la version n'est pas stabilisée à 100%. - il est inutile d'induire de nouvelles erreurs, un code uniforme permettra un meilleur suivi. * DESCRIPTION DES ACTIONS, EVENEMENTS ET ZONES Actions : -start : start the module on client -destroy : destroy the module on client (disconnect from irc server if connected) -connect : connect to irc server (events connection_OK or connection_ERROR) -disconnect : disconnect from irc server (event disconnected and event channel#xxx_UNREGISTERED if in a channel) -connectAndRegisterChannel#xxx : connect to irc server if not already connected (events connection_OK or connection_ERRROR) try to join the channel xxx (events channel#xxx_REGISTER_OK or channel#xxx_REGISTER_ERROR) part old channel if already in a channel and register successfull (event channel#xxx_UNREGISTERED) -unregisterChannel#xxxAndDisconnect : part Channel xxx (event channel#xxx_UNREGISTERED) disconnect from irc server (event disconnected) this action has no effect if channel#xxx not joined -unregisterChannel#xxx : part Channel xxx (event channel#xxx_UNREGISTERED this action has no effect if channel#xxx not joined -command : get IRC actions and messages entered by the user -avatarList : get the C3D avatar list (used to orientate in the direction of the avatar when clicking on it in the users list) -showLoginInterface : show a window that allow the user to change his nickname -showContextualMenu : to open contextual menu when clicking on the avatar of a user for example Events : -in : the module has been started on client -destroyed : the module has been destroyed on client -connection_OK : when connection to irc server successfull -connection_ERROR : when error while connecting to irc server -disconnected : when disconnected from IRC server (error while connected, action disconnect or if connected with action connectAndRegisterChannel#xxx and kicked from channel) -channel#xxx_REGISTER_OK : when action registerChannel#xxx successfull -channel#xxx_REGISTER_ERROR : when action registerChannel#XXX unsuccessfull -channel#xxx_UNREGISTERED : when action unregisterChannel#xxx successfull or new channel registered and old channel left -channel#xxx_FORCEDPART : when kicked from channel #xxx or disconnected from IRC server while in channel. -channelMsg : send current channel messages -privateMsgWarning : when receiving a private msg and when the private window not opened or has not the focus -registerMacros : the module wants to register the IRC macros -unregisterMacros the module wants to unregister the IRC macros -CenterOnPlayer : used to orientate in the direction of the avatars when clicking on them in the users list -checkLoginPassword : used to check if login registered in the database of a secured module like loginP3 Zones : -ChannelTopic : channel topic with scrolling (text color and background color can be choosen in the editor of the module) -UserList : list of the IRC users (with the number of people in the channel) * PREMIER EXEMPLE : - à partir d'une première cellule 3D non connectée sur l'irc, on souhaite, quand on clique sur une porte, se connecter sur un serveur IRC et joindre un canal. - si on est accepté par le serveur et dans le canal, on rentre dans une pièce. - quand on quitte cette pièce, on se déconnecte du serveur (donc du canal) et on retourne dans la première cellule SCOL (sans IRC). - dans l'exemple suivant on se connecte au canal #exemple (à ajouter dans l'éditeur du module) [C3D_IRC] = cellule 3D SCOL avec connexion au serveur IRC et à un canal #exemple [C3D_SCOL] = cellule 3D SCOL sans connexion IRC [LOGIN_IRC_BUTTON] = bouton permettant d'activer l'interface de changement de pseudo sur le serveur irc (le changement sous scol se fera par l'évènement !chgLogin) [LOGIN_SCOL_BUTTON] = bouton permettant d'activer le module de changement de pseudo sous scol. (module utilisé quand il n'y a aucune connexion au serveur IRC) - liens à mettre en place : [SHELL] start -> [IRC] start (démarre le module chez le client) [COLORTERM] command -> [IRC] command (réception des lignes de commandes tapées dans le colorterm) [COLORTERM] extMacroCommand -> [IRC] command (réception des macros IRC tapées dans le colorterm) [IRC] channelMsg -> [COLORTERM] privateMsg (envoie des messages des canaux IRC au colorterm) [C3D_SCOL] lienVersIRC -> [IRC] connectAndRegisterChannel#exemple (connexion au serveur IRC, demande de connexion au canal #exemple) [IRC] channel#exemple_REGISTER_OK -> [C3D_IRC] pos_enter (pour ne rentrer dans la cellule 3D-IRC que si on a joint le canal IRC #exemple) [C3D_IRC] lienVersSCOL -> [IRC] disconnectAndUnregisterChannel#exemple (quitte le canal #exemple et se déconnecte du serveur IRC) [C3D_IRC] lienVersSCOL -> [C3D_SCOL] pos_from_#exemple (retourne dans la cellule SCOL) [IRC] channel#exemple_FORCEDPART -> [C3D3_SCOL] pos_from_#exemple (si kické du canal ou deconnecté du serveur irc suite à un flood par exemple) [IRC] loginChanged -> !chglogin (des différents modules SCOL dont le colorTerm) [IRC] registerMacros -> [COLORTERM] registerExtMacro (enregistrement des macros IRC auprès du colorterm) [IRC] unregisterMacros -> [COLORTERM] unregisterExtMacro (désenregistrement des macros IRC auprès du colorterm) [C3D_IRC] avatarList -> [IRC] avatarList (permet de s'orienter vers un utilisateur 3D quand on clique dans la liste des utilisateurs du module IRC) [IRC] centerOnPlayer -> [C3D_IRC] !centerOnPlayer (permet de s'orienter vers un utilisateur 3D quand on clique dans la liste des utilisateurs du module IRC) [C3D_IRC] select2 -> [IRC] showContextualMenu (permet d'ouvrir le menu contextuel sur un utilisateur quand on clique avec le bouton droit de la souris sur son avatar dans la 3D) [LOGIN_IRC_BUTTON] click -> [IRC] showLoginInterface (ouvre l'interface de login lors du clique) [IRC] connection_OK -> [LOGIN_IRC_BUTTON] start (création du bouton quand connexion au serveur irc) [IRC] connection_OK -> [LOGIN_SCOL_BUTTON] destroy (destruction du bouton quand connexion au serveur irc) [IRC] disconnected -> [LOGIN_IRC_BUTTON] destroy (destruction du bouton quand déconnexion du serveur irc) [IRC] disconnected -> [LOGIN_SCOL_BUTTON] start (création du bouton quand déconnexion du serveur irc) * DEUXIEME EXEMPLE - dans cet exemple, on se connecte sur le serveur IRC quand on accède à une cellule 3D du site. - depuis cette cellule, on peut cliquer sur différentes portes, chacune donne accès à un canal IRC particulier chaque canal correspond à une cellule SCOL 3D dans notre exemple, on se contentera de deux canaux - il est possible de passer d'un canal à un autre, sans revenir par la cellule principale. [C3D_SCOL] = cellule 3D SCOL sans connexion IRC [C3D_IRC_SERVER] = cellule 3D SCOL avec connexion au serveur IRC [C3D_IRC_CANAL_1] = cellule 3D SCOL avec connexion IRC au serveur IRC et au canal #canal1 [C3D_IRC_CANAL_2] = cellule 3D SCOL avec connexion IRC au serveur IRC et au canal #canal2 [LOGIN_IRC_BUTTON] = bouton permettant d'activer l'interface de changement de pseudo sur le serveur irc (le changement sous scol se fera par l'évènement !chgLogin) [LOGIN_SCOL_BUTTON] = bouton permettant d'activer le module de changement de pseudo sous scol. (module utilisé quand il n'y a aucune connexion au serveur IRC) - liens à mettre en place : [SHELL] start -> [IRC] start (démarre le module chez le client) [COLORTERM] command -> [IRC] command (réception des lignes de commandes tapées dans le colorterm) [COLORTERM] extMacroCommand -> [IRC] command (réception des macros IRC tapées dans le colorterm) [IRC] channelMsg -> [COLORTERM] privateMsg (envoie des messages des canaux IRC au colorterm) [C3D_SCOL] lienVersIRC -> [IRC] connect (connexion au serveur IRC) [IRC] connection_OK -> [C3D_IRC_SERVER] pos_enter (entrée dans la cellule IRC connectée au serveur) [IRC] disconnected -> [C3D_SCOL] pos_from_irc (retour à la cellule SCOL si deconnecté du serveur IRC) [C3D_IRC_SERVER] lienVersCanal1 -> [IRC] connectAndRegisterChannel#canal1 (demande de connexion au canal #canal1) [C3D_IRC_SERVER] lienVersCanal2 -> [IRC] connectAndRegisterChannel#canal2 (demande de connexion au canal #canal2) [IRC] channel#canal1_REGISTER_OK -> [C3D_IRC_CANAL_1] pos_enter (pour ne rentrer dans la cellule que si on a joint le canal IRC #canal1) [IRC] channel#canal2_REGISTER_OK -> [C3D_IRC_CANAL_2] pos_enter (pour ne rentrer dans la cellule que si on a joint le canal IRC #canal2) [C3D_IRC_CANAL_1] lienVersCelluleIRCserveur -> [IRC] unregisterChannel#canal1(quitte le canal #canal1) [C3D_IRC_CANAL_1] lienVersCelluleIRCserveur -> [C3D_IRC_SERVER] pos_from_#canal1 (retourne dans la cellule connectée au serveur uniquement) [C3D_IRC_CANAL_2] lienVersCelluleIRCserveur -> [IRC] unregisterChannel#canal1(quitte le canal #canal2) [C3D_IRC_CANAL_2] lienVersCelluleIRCserveur -> [C3D_IRC_SERVER] pos_from_#canal2 (retourne dans la cellule connectée au serveur uniquement) [IRC] channel#canal1_FORCEDPART -> [C3D_IRC_SERVER] pos_from_#canal1 (si kické du canal ou deconnecté du serveur irc suite à un flood par exemple) [IRC] channel#canal2_FORCEDPART -> [C3D_IRC_SERVER] pos_from_#canal2 (si kické du canal ou deconnecté du serveur irc suite à un flood par exemple) [C3D_IRC_CANAL_1] lienVersCanal2 -> [IRC] connectAndRegisterChannel#canal2 (demande de connexion au canal #canal2, se deconencte de #canal1 si acceptée) [C3D_IRC_CANAL_2] lienVersCanal2 -> [IRC] connectAndRegisterChannel#canal1 (demande de connexion au canal #canal1, se deconencte de #canal2 si acceptée) [IRC] loginChanged -> !chglogin (des différents modules SCOL dont le colorTerm) [IRC] registerMacros -> [COLORTERM] registerExtMacro (enregistrement des macros IRC auprès du colorterm) [IRC] unregisterMacros -> [COLORTERM] unregisterExtMacro (désenregistrement des macros IRC auprès du colorterm) [C3D_IRC_CANAL_1] avatarList -> [IRC] avatarList (permet de s'orienter vers un utilisateur 3D quand on clique dans la liste des utilisateurs du module IRC) [C3D_IRC_CANAL_2] avatarList -> [IRC] avatarList (permet de s'orienter vers un utilisateur 3D quand on clique dans la liste des utilisateurs du module IRC) [IRC] centerOnPlayer -> [C3D_IRC_CANAL_1] !centerOnPlayer (permet de s'orienter vers un utilisateur 3D quand on clique dans la liste des utilisateurs du module IRC) [IRC] centerOnPlayer -> [C3D_IRC_CANAL_2] !centerOnPlayer (permet de s'orienter vers un utilisateur 3D quand on clique dans la liste des utilisateurs du module IRC) [C3D_IRC_CANAL_1] select2 -> [IRC] showContextualMenu (permet d'ouvrir le menu contextuel sur un utilisateur quand on clique avec le bouton droit de la souris sur son avatar dans la 3D) [C3D_IRC_CANAL_2] select2 -> [IRC] showContextualMenu (permet d'ouvrir le menu contextuel sur un utilisateur quand on clique avec le bouton droit de la souris sur son avatar dans la 3D) [LOGIN_IRC_BUTTON] click -> [IRC] showLoginInterface (ouvre l'interface de login lors du clique) [IRC] connection_OK -> [LOGIN_IRC_BUTTON] start (création du bouton quand connexion au serveur irc) [IRC] connection_OK -> [LOGIN_SCOL_BUTTON] destroy (destruction du bouton quand connexion au serveur irc) [IRC] disconnected -> [LOGIN_IRC_BUTTON] destroy (destruction du bouton quand déconnexion du serveur irc) [IRC] disconnected -> [LOGIN_SCOL_BUTTON] start (création du bouton quand déconnexion du serveur irc) * COMPATIBILITE AVEC LES PSEUDOS SECURISES SOUS SCOL : - nécessité de la version 2.1 du module LOGINP3 - paramètres de l'éditeur : il faut cocher l'option "check SCOL secured login". -lien supplémentaire à mettre en place : [IRC] checkLoginPassword -> [LOGINP3] check * COMPATIBILITE AVEC LES SERVICES IRC NICKSERV ET CHANSERV : - paramètres de l'éditeur : il faut cocher l'option "Enable NickServ/ChanServ commands" - pour plus d'informations, consultez l'aide en ligne du module par la commande /irchelp * HOW DOES THE NICKNAME CHOICE WORKS -verif INITIALISATION if nickname under scol == guest if a cookie exist nickname = cookie (delete erroneous chars, troncate nickname) else nickname = scol_3D else if nickname under scol different then guest if scol Defaultname=="nick" nickname = SCOL_3D else nickname = scol DefaultName (delete erroneous chars, troncate nickname) - verif SCOL server if nickname refused by scol server nickname = scol_3D, goto verif SCOL server else if nickname already used or nickname temporarily unavailable if nickname ended with _3D nickname = nickName (troncated if needed) + number + _3D else nickname = nickName (troncated if needed) + number else if nickname needs password if from /nick command, ask user password if password is false, error message else goto verif IRC server else nickname = SCOL_3D + message password needed else nickname accepted, goto verif IRC server -verif IRC server if nickname erroneous (432) if from /nick command, error message else nickname = SCOL_3D else if nickname already used (433) or temporarily unavailable (437) if from /nick command, error message else if nickname ended with _3D nickname = nickName (troncated if needed) + number + _3D else nickname = nickName (troncated if needed) + number else nickname accepted * BUGS REPORT : - report all bugs about this module at cryolab@cryo-networks.fr