Générer un masque de host
Syntaxe : hostmask_process <nick> <host> [type]
Le host doit être de la forme ident@host (c'est le format habituel utilisé par l'Eggdrop).
Le type peut valoir de 1 à 10 et correspond au modèle de masque souhaité.
Si le type n'est pas spécifié, le masque retourné sera de la forme nick!ident@host sans jokers.
Types possibles :
0 = *!ident@host
1 = *!*ident@host
2 = *!*@host
3 = *!*ident@*.domaine
4 = *!*@*.domaine
5 = nick!ident@host
6 = nick!*ident@host
7 = nick!*@host
8 = nick!*ident@*.domaine
9 = nick!*@*.domaine
10 = *!ident@*.domaine
Procédure
###############################################################################
### Génération de masques de type user!ident@host
###############################################################################
proc ::hostmask_process {nick host {type {}}} {
set fullhost "$nick!$host"
set nick "*" ; set ident "*" ; set host "*"
scan $fullhost "%\[^!\]!%\[^@\]@%s" nick ident host
set nick [join [::tcl::string::trimleft $nick "@+"]]
set ident [join [::tcl::string::trimleft $ident "~"]]
set hostmask $host
if { [regexp {([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)} $host] } {
set host [lreplace [split $host "."] end end "*"]
} else {
set host [split $host "."]
if { [llength $host] == 3 } {
set host [lreplace $host 0 0 "*"]
} elseif { [llength $host] > 3 } {
set host [lreplace $host 0 1 "*"]
}
}
set domain [join $host "."]
switch -- $type {
"0" { return "*!$ident@$hostmask" }
"1" { return "*!*$ident@$hostmask" }
"2" { return "*!*@$hostmask" }
"3" { return "*!*$ident@$domain" }
"4" { return "*!*@$domain" }
"5" { return "$nick!$ident@$hostmask" }
"6" { return "$nick!*$ident@$hostmask" }
"7" { return "$nick!*@$hostmask" }
"8" { return "$nick!*$ident@$domain" }
"9" { return "$nick!*@$domain" }
"10" { return "*!$ident@$domain" }
default { return $fullhost }
}
}
Exemples
hostmask_process machin bidule@un.host.quelconque 1
Tcl: *!*bidule@un.host.quelconque
hostmask_process machin bidule@un.host.quelconque 2
Tcl: *!*@un.host.quelconque
hostmask_process machin bidule@un.host.quelconque 3
Tcl: *!*bidule@*.host.quelconque