Update Chanban/chanban.tcl
Improve protection logic and code
This commit is contained in:
+45
-18
@@ -44,9 +44,9 @@ namespace eval cmgmt {
|
||||
# 9 nick!*@*.host
|
||||
variable banMask "2"
|
||||
|
||||
# Masks to protect from bans
|
||||
# Masks to protect from bans, always on the format *!ident@hostname
|
||||
variable protectMasks {
|
||||
"*!*@services.ptirc.org"
|
||||
*!*@services.ptirc.org
|
||||
}
|
||||
|
||||
# Mask type to use to track hostmasks that should not trigger auto adding bans
|
||||
@@ -55,14 +55,14 @@ namespace eval cmgmt {
|
||||
|
||||
# Nicks to ignore for auto adding bans
|
||||
variable noAddNicks {
|
||||
"ChanServ"
|
||||
"NickServ"
|
||||
"ChanBot"
|
||||
ChanServ
|
||||
NickServ
|
||||
ChanBot
|
||||
}
|
||||
|
||||
# Masks to ignore for auto adding bans
|
||||
variable noAddMasks {
|
||||
"*!*@services.ptirc.org"
|
||||
*!*@services.ptirc.org
|
||||
}
|
||||
|
||||
# ----------
|
||||
@@ -112,14 +112,41 @@ namespace eval cmgmt {
|
||||
# ----------
|
||||
proc abans {nick uhost hand chan mode target} {
|
||||
# putlog "DEBUG autobans: nick=$nick chan=$chan mode=$mode target=$target"
|
||||
set hostmask [maskhost ${nick}![getchanhost $nick $chan] $::cmgmt::noAddType]
|
||||
set banReason "$::cmgmt::banReason \(auto-added\)"
|
||||
|
||||
if {![channel get $chan addBans]} {
|
||||
return 0
|
||||
}
|
||||
if {$nick ne "$::botnick" && $nick ni $::cmgmt::noAddNicks} {
|
||||
foreach pmask $::cmgmt::protectMasks {
|
||||
if {[matchstr $pmask $target] || [matchstr $target $pmask]} {
|
||||
pushmode $chan -b $target
|
||||
flushmode $chan
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
if {$nick ne "$::botnick" && $nick ni $::cmgmt::noAddNicks && $hostmask ni $::cmgmt::noAddMasks && $hostmask ni $::cmgmt::protectMasks} {
|
||||
foreach nmask $::cmgmt::noAddMasks {
|
||||
if {[matchstr $nmask $target] || [matchstr $target $nmask]} {
|
||||
pushmode $chan -b $target
|
||||
flushmode $chan
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
foreach user [userlist] {
|
||||
if {[matchattr $user mno|mno $chan]} {
|
||||
foreach host [getuser $user HOSTS] {
|
||||
if {[matchstr $target $host] || [matchstr $host $target]} {
|
||||
pushmode $chan -b $target
|
||||
flushmode $chan
|
||||
return 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if {![channel get $chan addBans]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
# We also need to deal with the addition of extbans, since we don't deal with them internally
|
||||
if {[matchstr "~*" $target] && ![isban $target $chan]} {
|
||||
newchanban $chan $target $nick EXTBAN 0 sticky
|
||||
@@ -140,10 +167,10 @@ namespace eval cmgmt {
|
||||
}
|
||||
|
||||
if {$nick ne "$::botnick"} {
|
||||
if {[matchstr "~*" $target] && ![isban $target $chan]} {
|
||||
if {[matchstr "~*" $target] && [isban $target $chan]} {
|
||||
killchanban $chan $target
|
||||
return 0
|
||||
} else {
|
||||
} elseif {[isban $target $chan]} {
|
||||
killchanban $chan $target
|
||||
putserv "PRIVMSG $chan :$target auto-removed from ${chan}'s ban list."
|
||||
return 0
|
||||
@@ -205,7 +232,7 @@ namespace eval cmgmt {
|
||||
set bhost [string trim [getchanhost $target $chan] ~]
|
||||
|
||||
foreach pmask $::cmgmt::protectMasks {
|
||||
if {[matchstr $pmask "${target}!$bhost"]} {
|
||||
if {[matchstr $pmask "${target}!$bhost"] || [matchstr "${target}!$bhost" $pmask]} {
|
||||
putserv "NOTICE $nick :You can't use this command on the nick $target."
|
||||
return 0
|
||||
}
|
||||
@@ -256,7 +283,7 @@ namespace eval cmgmt {
|
||||
set bhost [string trim [getchanhost $target $chan] ~]
|
||||
|
||||
foreach pmask $::cmgmt::protectMasks {
|
||||
if {[matchstr $pmask "${target}!$bhost"]} {
|
||||
if {[matchstr $pmask "${target}!$bhost"] || [matchstr "${target}!$bhost" $pmask]} {
|
||||
putserv "NOTICE $nick :You can't use this command on the nick $target."
|
||||
return 0
|
||||
}
|
||||
@@ -497,7 +524,7 @@ namespace eval cmgmt {
|
||||
set bhost [string trim [getchanhost $target $chan] ~]
|
||||
|
||||
foreach pmask $::cmgmt::protectMasks {
|
||||
if {[matchstr $pmask "${target}!$bhost"]} {
|
||||
if {[matchstr $pmask "${target}!$bhost"] || [matchstr "${target}!$bhost" $pmask]} {
|
||||
putserv "PRIVMSG $nick :You can't use this command on the nick $target."
|
||||
return 0
|
||||
}
|
||||
@@ -560,7 +587,7 @@ namespace eval cmgmt {
|
||||
set bhost [string trim [getchanhost $target $chan] ~]
|
||||
|
||||
foreach pmask $::cmgmt::protectMasks {
|
||||
if {[matchstr $pmask "${target}!$bhost"]} {
|
||||
if {[matchstr $pmask "${target}!$bhost"] || [matchstr "${target}!$bhost" $pmask]} {
|
||||
putserv "PRIVMSG $nick :You can't use this command on the nick $target."
|
||||
return 0
|
||||
}
|
||||
@@ -705,7 +732,7 @@ namespace eval cmgmt {
|
||||
set tstamp [lindex $botban 3]
|
||||
set date [clock format $tstamp -format "%d/%m/%Y - %H:%M:%S"]
|
||||
set creator [lindex $botban end]
|
||||
puts $blist "\[${i}\] Banmask: $banmask :: Added by: $creator :: Date: $date"
|
||||
puts $blist "\[${i}\] Banmask: $banmask :: Reason: $freason :: Added by: $creator :: Date: $date"
|
||||
puts $blist ""
|
||||
incr i
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user