[Résolu] Retirer une partie d'un host
#1
Bonjour à tous,

j'ai deux procédures , une qui me permet d'ajouter un access qui fonctionne parfaitement, elle ajoute une extension dans l'host de l'utilisateur .xyz :

TCL
bind pub o|o .+access [namespace current]::addaccess
proc addaccess { nick host hand chan arg } {
 
if {![channel get $chan certif]} {
return
}
 
set colonne(pseudo) [string tolower [lindex $arg 0]]
 
::certUser::service:connect
mysqlsel $::mysqlink "INSERT INTO voiceauto (pseudo, salon) VALUES ('$colonne(pseudo)', '$chan')"
::certUser::service:deconnect
 
if {[onchan $colonne(pseudo) $chan]} {
set identhost [getchanhost $colonne(pseudo)]
lassign [split $identhost "@"] ident uhost
putnow "CHGHOST $colonne(pseudo) $uhost.xyz"
}
 
puthelp "NOTICE $nick :Pseudo ajouté: \0034$colonne(pseudo)\003 sur \0034$chan\003"
 
}



Le problème est dans cette procédure, j'aimerais que dans la condition du onchan, il detecte si il y a .xyz a la fin de l'host et si oui il recup l'host et retire juste l'extension .xyz , en redefinissant l'host sans l'extension .xyz ..

TCL
bind pub o|o .-access [namespace current]::delaccess
proc delaccess { nick host hand chan arg } {
 
if {![channel get $chan certif]} {
return
}
 
set colonne(pseudo) [lindex $arg 0]
 
::certUser::service:connect
mysqlsel $::mysqlink "DELETE FROM voiceauto WHERE pseudo='$colonne(pseudo)' and salon='$chan'"
::certUser::service:deconnect
 
if {[onchan $colonne(pseudo) $chan]} {
set identhost [getchanhost $colonne(pseudo)]
lassign [split $identhost "@"] ident uhost
#putnow "CHGHOST $colonne(pseudo) $uhost" # ici je veux qu'il retire le .xyz du host
}
 
puthelp "NOTICE $nick :Pseudo supprimé: \0034$colonne(pseudo)\003 sur \0034$chan\003"
 
}


#2
Je ne vois pas le souci.
TCL
if {[string match "*.xyz" $identhost]} {
   set uhost [string range $uhost 0 end-[string length ".xyz"]]
}



Une autre manière de procéder si tu préfères utiliser les listes:
TCL
set luhost [split $uhost "."]
if {[lindex end $luhost] eq "xyz"} {
   set uhost [join [lrange $uhost 0 end-1] "."]
}


Mais bon, c'est un peu idiot de passer par une liste pour refaire une chaîne.
#3
[getchanhost nick] ne met pas à jour l'host quand il y a un CHGHOST via le serveur, du coup il garde en mémoire le premier host avant l'éxecution de la commande, le string match ne sert à rien mais dans mon cas d'utilisation ça ne me dérange pas.

Merci à toi Smile
#4
Je pense que c'est exploitable si tu as un eggdrop assez récent et que le serveur autorise la CAP chghost.
Si tu la charge (cap req chghost), l'eggdrop voit les changements d'host.
Citation :The chghost capability allows servers to send a notification when clients change their username or host. This mechanism avoids simulating a reconnect of the client. This is useful for servers that implement virtual hosts or cloaks, and helps to reduce clutter in client UI.


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté