View previous topic :: View next topic |
Author |
Message |
Regex Voice
Joined: 19 Mar 2011 Posts: 19
|
Posted: Sat Mar 19, 2011 1:28 pm Post subject: .bad add/del/list Tcl |
|
|
Hi Guys!
How can we, .bad add/del/list TCL ?
If a Badnick will join the chan, This TCL will Kicked from the room.
Thanks For all
Example:
<u24> .bad add *show*
<eggdrop> *show* has been added from the badnick list.
<u24> .bad del *show
<eggdrop> *show* has been removed from the badnick list.
<u24> .bad list
<eggdrop> Listing Bad File
<eggdrop>
<eggdrop> 1- *show*
<eggdrop>
<eggdrop> End of the file |
|
Back to top |
|
 |
arfer Master

Joined: 26 Nov 2004 Posts: 436 Location: Manchester, UK
|
Posted: Mon Mar 28, 2011 5:11 pm Post subject: |
|
|
Give this script a try. I've done a limited amount of testing.
Code: |
# badnick.tcl
### ---------- operation ---------------------------------------------------------------------- ###
# creates and manages a list of banned nicks from badnick.txt in the bots root directory
# nicks joining selected bot channels are checked against badnick.txt and kicked and/or banned if present
# to function in #channelname requires in the partyline .chanset #channelname +badnick
# this applies to both commands AND punishment if a nick is present in badnick.txt
# syntax, assuming default trigger character .
# .bad add <nick> ... adds nick to badnick.txt
# .bad del <nick> ... deletes <nick> from badnick.txt
# .bad show ... shows all nicks in badnick.txt
# avoid endless loops by adding nicks that are protected by the bot
### ---------- configuration ------------------------------------------------------------------ ###
# set here the single character command trigger
set vBadnickTrigger .
# set here the bot user flag(s) of people authorised to use the commands
set vBadnickFlag o
# set here the ban time in minutes
# a setting of 0 means that the ban will not be automatically removed by this script
set vBadnickTime 5
# set punishment mode here
# mode 1 may be unwise since the user may rejoin, get kicked, rejoin, get kicked ... ad nauseum
# 1 == kick only
# 2 == ban only
# 3 == ban then kick
set vBadnickMode 3
# set here the banmask type
# this could be set such that evading badnick.txt by changing nick, will not evade a previously set ban
# 1 == nick!*user@host
# 2 == nick!*@host
# 3 == *!*user@host
# 4 == *!*@host
# 5 == nick!*user@mask
# 6 == nick!*@mask
# 7 == *!*user@mask
# 8 == *!*@mask
# 9 == nick!*user@*
# 10 == nick!*@*
# 11 == *!*user@*
set vBadnickType 7
### ---------- code --------------------------------------------------------------------------- ###
set vBadnickVersion 11.03.28.21.35
setudef flag badnick
proc pBadnickTrigger {} {
global vBadnickTrigger
return $vBadnickTrigger
}
bind PUB $vBadnickFlag [pBadnickTrigger]bad pBadnickPub
bind JOIN - * pBadnickJoin
proc pBadnickAdd {target chan} {
global vBadnickList
pBadnickRead
if {[info exists vBadnickList]} {
if {[lsearch -exact $vBadnickList [string tolower $target]] != -1} {
pBadnickError 06 0 $target $chan 0
return 0
}
}
lappend vBadnickList [string tolower $target]
pBadnickWrite
pBadnickDone 01 0 $target $chan 0
foreach channel [channels] {
if {[channel get $channel badnick]} {
if {([onchan $target $channel]) && ([botisop $channel])} {
pBadnickPunish $target [getchanhost $target $channel] $channel
}
}
}
return 0
}
proc pBadnickDel {target chan} {
global vBadnickList
pBadnickRead
if {[info exists vBadnickList]} {
if {[set idx [lsearch -exact $vBadnickList [string tolower $target]]] != -1} {
set vBadnickList [lreplace $vBadnickList $idx $idx]
pBadnickWrite
pBadnickDone 02 0 $target $chan 0
} else {pBadnickError 08 0 $target $chan 0}
} else {pBadnickError 07 0 0 $chan 0}
return 0
}
proc pBadnickDone {number command target chan text} {
switch -- $number {
01 {set output "$target has been added to badnick.txt"}
02 {set output "$target has been removed from badnick.txt"}
03 {set output $text}
default {}
}
putserv "PRIVMSG $chan :$output"
return 0
}
proc pBadnickError {number command target chan text} {
switch -- $number {
01 {set output "$target is not a valid nick"}
02 {set output "correct syntax is [pBadnickTrigger]bad $command <nick>"}
03 {set output "correct syntax is [pBadnickTrigger]bad $command (without additional arguments)"}
04 {set output "unknown command [pBadnickTrigger]bad $command"}
05 {set output "[pBadnickTrigger]bad command must be followed by one of add, del or show"}
06 {set output "$target is already included in badnick.txt"}
07 {set output "badnick.txt does not have any nicks defined yet"}
08 {set output "badnick.txt does not contain the nick $target"}
default {}
}
putserv "PRIVMSG $chan :$output"
return 0
}
proc pBadnickJoin {nick uhost hand chan} {
global vBadnickList
if {[channel get $chan badnick]} {
pBadnickRead
if {[info exists vBadnickList]} {
if {[lsearch -exact $vBadnickList [string tolower $nick]] != -1} {
if {[botisop $chan]} {
pBadnickPunish $nick $uhost $chan
}
}
}
}
return 0
}
proc pBadnickMask {nick uhost type} {
scan $uhost {%[^@]@%s} user host
set user [string trimleft $user ~]
switch -- [regexp -- {^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$} $host] {
0 {
switch -- [regexp -all -- {\.} $host] {
0 - 1 {set mask $host}
2 {set mask *.[join [lrange [split $host .] 1 end] .]}
default {set mask *.[join [lrange [split $host .] 2 end] .]}
}
}
1 {set mask [join [lrange [split $host .] 0 end-1] .].*}
default {}
}
switch -- $type {
1 {set hostmask ${nick}!*${user}@$host}
2 {set hostmask ${nick}!*@$host}
3 {set hostmask *!*${user}@$host}
4 {set hostmask *!*@$host}
5 {set hostmask ${nick}!*${user}@$mask}
6 {set hostmask ${nick}!*@$mask}
7 {set hostmask *!*${user}@$mask}
8 {set hostmask *!*@$mask}
9 {set hostmask ${nick}!*${user}@*}
10 {set hostmask ${nick}!*@*}
11 {set hostmask *!*${user}@*}
default {}
}
return $hostmask
}
proc pBadnickPub {nick uhost hand chan text} {
if {[channel get $chan badnick]} {
set arguments [split [string trim $text]]
if {[llength $arguments] > 0} {
set command [lindex $arguments 0]
switch -- $command {
add {
if {[llength $arguments] == 2} {
set target [lindex $arguments 1]
if {[regexp -- {^[\x41-\x7D][-\d\x41-\x7D]*$} $target]} {
pBadnickAdd $target $chan
} else {pBadnickError 01 0 $target $chan 0}
} else {pBadnickError 02 $command 0 $chan 0}
}
del {
if {[llength $arguments] == 2} {
set target [lindex $arguments 1]
if {[regexp -- {^[\x41-\x7D][-\d\x41-\x7D]*$} $target]} {
pBadnickDel $target $chan
} else {pBadnickError 01 0 $target $chan 0}
} else {pBadnickError 02 del 0 $chan 0}
}
show {
if {[llength $arguments] == 1} {
pBadnickShow $chan
} else {pBadnickError 03 show 0 $chan 0}
}
default {pBadnickError 04 $command 0 $chan 0}
}
} else {pBadnickError 05 0 0 $chan 0}
}
return 0
}
proc pBadnickPunish {target uhost chan} {
global vBadnickMode vBadnickTime vBadnickType
switch -- $vBadnickMode {
1 {
putserv "KICK $chan $target :badnick.txt"
}
2 - 3 {
set hostmask [pBadnickMask $target $uhost $vBadnickType]
putserv "MODE $chan +b $hostmask"
if {![string equal $vBadnickTime 0]} {timer $vBadnickTime [list pBadnickRemove $chan $hostmask]}
if {[string equal $vBadnickMode 3]} {putserv "KICK $chan $target :badnick.txt"}
}
default {}
}
return 0
}
proc pBadnickRead {} {
global vBadnickList
unset -nocomplain -- vBadnickList
if {[file exists badnick.txt]} {
set fp [open badnick.txt r]
set data [split [read -nonewline $fp] \n]
close $fp
if {[llength $data] != 0} {set vBadnickList $data}
}
return 0
}
proc pBadnickRemove {chan hostmask} {
putserv "MODE $chan -b $hostmask"
return 0
}
proc pBadnickShow {chan} {
global vBadnickList
pBadnickRead
if {[info exists vBadnickList]} {
while {[llength $vBadnickList] != 0} {
pBadnickDone 03 0 0 $chan [join [lrange $vBadnickList 0 9]]
set vBadnickList [lrange $vBadnickList 10 end]
}
} else {pBadnickError 07 0 0 $chan 0}
return 0
}
proc pBadnickWrite {} {
global vBadnickList
set fp [open badnick.txt w]
puts -nonewline $fp [join $vBadnickList \n]
close $fp
return 0
}
putlog "badnick.tcl version $vBadnickVersion loaded"
# eof
|
_________________ I must have had nothing to do |
|
Back to top |
|
 |
Gulio Halfop
Joined: 01 Nov 2020 Posts: 73
|
Posted: Mon Apr 26, 2021 2:28 pm Post subject: Hello |
|
|
The script works great good
but is possible to change comand triger for add del and list show
to be and for kickban channel same for add del remove ban chan
for singel badnick and multinick to kiickban add
del
to be used and add badnick with wildcard on badnick mask
.kn virus* and not to add twice after we add .kn virusssss cozz is cover from virus* in badnick.txt
and to match badwqord newnick change on channel
show list in query not channel notice to show list in OP query and to find word with comamnd .bnl badnick in list
!bnl
.bnl
to kickban singel badnick and multi badnicks on channel and to add same time in file badnick.txt
!kn badnick *badnick badnick* *badnick*
.kn badnick *badnick badnick* *badnick*
for remove from file badnick.txt and to unban in chan
!un badnick *badnick badnick* *badnick*
.un badnick *badnick badnick* *badnick* |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|