I have developed this script from algol's clonepro tcl
which is quite alike. He had sticky bans in it newchanban
which I didnt like, and I wanted to make normal user channel
bans.
The script executes fine, after changing the utimer variable
as mentioned by someone, because this script has a vulnerability
but it works excellent now.
The only problem I am facing is, that it doesn't kick out all the
clones. Here is the script.
Code: Select all
# The channels you want this script active on
set cp_chans "#eleet"
# Number of *!*@host joins in how many seconds, joins:seconds
set cp_j_flood 2:5
# Number of *!*user@host join/part cycles in how many seconds, j/p_cycles:seconds
set cp_jp_flood 2:8
# Period in minutes to ban *!*@host for multiple joins or join/part floods
set clone_btime 10
##### DON'T edit anything below this line unless you know what you're doing #####
bind join - * clone_pro_join
bind part - * clone_pro_leave
bind sign - * clone_pro_leave
proc clone_pro_join {nick uhost hand chan} {
global cp_chans cp_j_flood cp_jp_flood cp_host_count cp_uh_count clone_btime
set uhost [string tolower $uhost]
set host [lindex [split $uhost @] 1]
set chan [string tolower $chan]
set file [open $::kickno r]
set tilnow "[gets $file]"
catch {close $file}
set totalkicks [expr $tilnow]
set cloneban "*!*@[lindex [split $uhost @] 1]"
if {[lsearch -exact $cp_chans $chan] == -1} {return 0}
if {![info exists cp_host_count($host:$chan)]} {
set cp_host_count($host:$chan) 1
} else {
incr cp_host_count($host:$chan)
}
utimer [lindex $cp_j_flood 1] [list cp_expire cp_host_count($host:$chan)]
if {$cp_host_count($host:$chan) > [lindex $cp_j_flood 0]} {
if {[botisop $chan]} {
putquick "MODE $chan +b $cloneban"
timer $clone_btime "pushmode $chan -b $cloneban"
set mask "*!*@[lindex [split $uhost @] 1]"
set list [list]
foreach user [chanlist $chan] {
if {[string equal -nocase $user $nick]} { continue }
if {[string match -nocase $mask "${nick}![getchanhost $user $chan]"]} { lappend list $user }
}
putserv "KICK $chan [join $list {,}] :0,1 Excessive Clone/Botnet Kick 12,0 - 12Detected 2*3 or more* 12clients with the 2host $cloneban 12joining in here, in 2less than 4 secs. 2Excessive Clones 12and 2Botnets 12are 2not allowed 12to 2enter this channel, 12if done so further more 2your host 12will be 2banned permanently.2 - (Kick #$totalkicks)"
}
}
if {![info exists cp_uh_count($uhost:$chan)]} {
set cp_uh_count($uhost:$chan) 1
} else {
incr cp_uh_count($uhost:$chan)
}
utimer [lindex $cp_jp_flood 1] [list cp_expire cp_uh_count($uhost:$chan)]
if {$cp_uh_count($uhost:$chan) >= [expr [lindex $cp_jp_flood 0]*2]} {
if {[botisop $chan]} {
putquick "MODE $chan +b $cloneban"
putquick "KICK $chan $nick :0,1 Mass Join/Part Flood Kick 12,0 - 12Detected 2multiple 12clients in here, with the 2host $cloneban 12performing2 *more than 3* join/part cycles,12 in less than2 10 secs. 2Mass Join/Part floods 12by 2botnets 12are 2prohibited in here, 12if done so further more 212you will be 2banned permanently 12from this 2network/channel.2 - (Kick #$totalkicks)"
timer $clone_btime "pushmode $chan -b $cloneban"
}
}
}
Code: Select all
* Joins: Woaaaaaah (goodguy@219.92.24.5)
* Joins: RocketScientist (goodguy@219.92.24.5)
* Joins: Shakeel- (goodguy@219.92.24.5)
* adapter sets mode: +b *!*@219.92.24.5
* Woaaaaaah was kicked by adapter ( Excessive Clone/Botnet Kick - Detected *3 or more* clients with the host *!*@219.92.24.5 joining in here, in less than 4 secs. Excessive Clones and Botnets are not allowed to enter this channel, if done so further more your host will be banned permanentl)
* RocketScientist was kicked by adapter ( Excessive Clone/Botnet Kick - Detected *3 or more* clients with the host *!*@219.92.24.5 joining in here, in less than 4 secs. Excessive Clones and Botnets are not allowed to enter this channel, if done so further more your host will be banned permanentl)
* awyeah sets mode: -b *!*@219.92.24.5
I've tried many output combinations with the list, and the putkick commands, but it only kicks two people, not three, I dont understand.
I've also tried changining the timer settings, from the variables, in the setting options to flexibility in seconds as well, but still not yet. It doesnt seem to kick out all the clones of the host.
Please help me.