Update Chanban/chanban.tcl

Improve protection logic and code
This commit is contained in:
Teh PeGaSuS
2026-03-02 01:14:20 +01:00
parent 81fafac891
commit d69afe130b
+45 -18
View File
@@ -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
}