Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique.
x
Je reprends très doucement, essaye de lire tous les mots:
1. mes tests marchent très bien, que ce soit getaccount ou isidentified
2. pourtant le .status ne "semble" pas montrer que les CAP sont disponibles
3. donc ton moyen de vérifier que les CAP sont activées n'est pas le bon
Ensuite, je vais essayer la suite plus doucement encore:
1. Tu ne t'enregistres jamais auprès du serveur ircd, tu t'enregistres auprès des services
2. les CAP permettent de faire une liaison plus simple ircd/services
3. c'est bien NickServ (ou Q, ou machin, mais un service) qui renvoie l'info de l'identification ou du compte sous lequel tu es connu, ircd n'en est qu'un dépositaire temporaire
4. coupe tes services et tu verras que les CAP marcheront bien moins bien
5. et c'est pas le sujet
pour résumer
- ircd v3 (+ services) + eggdrop1.9 => accès à getaccount et isidentified
- c'est pas le .status qui permet de savoir exactement ce qui est disponible comme CAP.
Et dernier point, sur ton script pour mecmec: donc, s'il est sur un serveur pas à jour ou qu'il ne veut pas utiliser une version d'eggdrop unstable, pas de script ? Et pire: pas d'eggdrop parce que tu fais un die ? Et note que ça fera une erreur car cap ne sera pas une commande reconnue
23/01/2021, 15:05 (This post was last modified: 23/01/2021, 18:23 by ZarTek.)
(23/01/2021, 01:09)CrazyCat Wrote: @ZarTek : STOP, et essaye de me lire.
Je reprends très doucement, essaye de lire tous les mots:
1. mes tests marchent très bien, que ce soit getaccount ou isidentified
2. pourtant le .status ne "semble" pas montrer que les CAP sont disponibles
3. donc ton moyen de vérifier que les CAP sont activées n'est pas le bon
Ensuite, je vais essayer la suite plus doucement encore:
1. Tu ne t'enregistres jamais auprès du serveur ircd, tu t'enregistres auprès des services
2. les CAP permettent de faire une liaison plus simple ircd/services
3. c'est bien NickServ (ou Q, ou machin, mais un service) qui renvoie l'info de l'identification ou du compte sous lequel tu es connu, ircd n'en est qu'un dépositaire temporaire
4. coupe tes services et tu verras que les CAP marcheront bien moins bien
5. et c'est pas le sujet
pour résumer
- ircd v3 (+ services) + eggdrop1.9 => accès à getaccount et isidentified
- c'est pas le .status qui permet de savoir exactement ce qui est disponible comme CAP.
Et dernier point, sur ton script pour mecmec: donc, s'il est sur un serveur pas à jour ou qu'il ne veut pas utiliser une version d'eggdrop unstable, pas de script ? Et pire: pas d'eggdrop parce que tu fais un die ? Et note que ça fera une erreur car cap ne sera pas une commande reconnue
Oui, bien résumé.
Effectivement, pour le .status c'est pourquoi j'ai été chercher un autre moyen de savoir via la commande [cap ].
Effectivement aussi il faudrait un catch sur le
Le die est volontaire même si brutal, sont eggdrop démarrera pas avec le script, vu que le script marchera pas sans ca .
Il n'y a pas que les services qui permet d'identifier un utilisateur, la méthode authentification SASL permet de s'identifier même si les services sont absent: le usermode est bien coté IRCD.
Je t'invite à voir la documentation usermode unrealircd : https://www.unrealircd.org/docs/User_Modes +r +R
4. coupe tes services et tu verras que les CAP marcheront bien moins bien <= je ne peu pas te laisser dire ceci car pas totalement juste non plus, le CAP est coté IRCD aussi. bien que en général ce sont les services si set le usermode +r (ou +g) . par exemple un eggdrop qui utilise le 'SVSMODE <nickname> <usermode>' ou autre .. "et c'est pas le sujet" car on part du principe que l'user doit être identifier a IRC
Quote:c'est bien NickServ (ou Q, ou machin, mais un service) qui renvoie l'info de l'identification, ircd n'en est qu'un dépositaire temporaire
Voici , en prenant en considération tes remarque une mise à jour du code.
tcl
if{[catch{package require eggdrop 1.9.0}]}{putloglev o *"\00304\[tapavu- erreur\]\003 tapavu nécessite que eggdrop 1.9.0 (ou plus) soit installé pour fonctionner. Votre version actuelle de Tcl est\00304 [package require eggdrop]\003.";return}if{[catch{set CAP_LIST [cap ls]}]}{putloglev o *"\00304\[tapavu- erreur\]\003 tapavu nécessite que le serveur irc supportent les Capabilities pour fonctionner... ce script ne marchera pas avec la fonction \[isidentified \$nick\] ";return}else{putloglev o *"\00304\[tapavu- info\]\003 le serveur irc supportent les Capabilities suivants: ${CAP_LIST}.";}bindpub -|- $tapavu(command)tapavu tapavu:pub:req
proc tapavu:pub:req {nick uhost handchannel arg}{if{![isidentified $nick]}{puthelp"NOTICE $nick :04$nick12, je n'accepte les demandes des utilisateurs non-enregistrés."return1}if{$arg == ""}{puthelp"PRIVMSG $channel :12Qui ça 04$nick12 ?"return1}
tapavu:pubreq $nick$uhost$hand$channel$arg0}
Allons plus loin (expérimental et a tester) :
tcl
proc isCAP_Available {}{if{[info commands cap] == ""}{return0;}else{return1;}}proc CAP_List {}{if{![isCAP_Available]}{return -1;}if{[catch{set CAP_LIST [cap ls]}]}{return0;}else{return[list${CAP_LIST}];}}proc isCAP_Found { CAP_NAME }{set List_CAPS [CAP_List]if{$List_CAPS == "-1"}{return"CAPS non pris en charge par le serveur IRC";}if{$List_CAPS == "0"}{return"La commande '\[cap ls\]' est indisponible sur ce eggdrop";}if{[string match -nocase *$CAP_NAME*$List_CAPS]}{return1;}return0;}proc UserIsIdentified {nick}{# Nouvelle methode proposer par ZarTek (eggdrop.fr)# # Necesite eggdrop 1.9.x min et ajouter dans eggdrop.fr :# set cap-request "account-notify extended-join"# https://github.com/eggheads/eggdrop/blob/develop/eggdrop.conf#L1122if{[isCAP_Found account-notify] == 1&&[info commands isidentified]!= ""}{return[isidentified $nick]}# Methode moins critiqué ... :# ICI ........ ???# Ou rien ...return -1;}
Je le sais je suis têtu. J'ai proposer des solutions et des exemples de codes.
Retrouvez les dernières modifications de mes scripts TCL (versions Alpha/Bêta) ainsi que d'autres de mes réalisations sur ma page GitHub et les versions stables dans la section scripts de ce site 8-)
25/01/2021, 02:11 (This post was last modified: 25/01/2021, 02:15 by ZarTek.)
(21/01/2021, 17:43)CrazyCat Wrote: Je ne sais pas si beaucoup de réseaux sont passés en IRCv3 et eggdrop1.9 est toujours en phase de développement, donc plutôt confidentiel.
Quote:CAP support, with native support for some IRCv3 features
Je sais, ce n'ai qu'une RC ! et que 82% des serveur unrealircd qui ont le support IRCv3
Retrouvez les dernières modifications de mes scripts TCL (versions Alpha/Bêta) ainsi que d'autres de mes réalisations sur ma page GitHub et les versions stables dans la section scripts de ce site 8-)
Il doit te manquer des choses soit sur l'eggdrop soit sur le serveur:
Quote:Description: determine if a user is identified to irc services. WARNING: this may not be accurate depending on the server and configuration. For accurate results, the server must support (and Eggdrop must have enabled via CAP) the account-notify and extended-join capabilities, and the server must understand WHOX requests (also known as raw 354 responses)