Update Chanban/cmgmt.tcl
This commit is contained in:
@@ -39,6 +39,10 @@ namespace eval cmgmt {
|
||||
# 9 nick!*@*.host
|
||||
variable banMask "2"
|
||||
|
||||
# Mask type to be used when adding an op. Same types as above
|
||||
# We advise to use 1, as it's more secure
|
||||
variable addOpMask "1"
|
||||
|
||||
# Masks to protect from bans, always on the format *!ident@hostname
|
||||
variable protectMasks {
|
||||
*!*@services.ptirc.org
|
||||
@@ -70,6 +74,9 @@ namespace eval cmgmt {
|
||||
bind pub * ${::cmgmt::trigger}banlist ::cmgmt::banlist_pub
|
||||
bind pub * ${::cmgmt::trigger}autoadd ::cmgmt::autoban_pub
|
||||
bind pub * ${::cmgmt::trigger}opcmds ::cmgmt::opcmds_pub
|
||||
bind pub * ${::cmgmt::trigger}addop ::cmgmt::addop_pub
|
||||
bind pub * ${::cmgmt::trigger}delop ::cmgmt::delop_pub
|
||||
bind pub * ${::cmgmt::trigger}ops ::cmgmt::chanops_pub
|
||||
|
||||
### Private
|
||||
bind msg * addban ::cmgmt::addban_msg
|
||||
@@ -82,6 +89,9 @@ namespace eval cmgmt {
|
||||
bind msg * banlist ::cmgmt::banlist_msg
|
||||
bind msg * autoadd ::cmgmt::autoban_msg
|
||||
bind msg * opcmds ::cmgmt::opcmds_msg
|
||||
bind msg * addop ::cmgmt::addop_msg
|
||||
bind msg * delop ::cmgmt::delop_msg
|
||||
bind msg * ops ::cmgmt::chanops_msg
|
||||
|
||||
# ----------
|
||||
# Auto add bans
|
||||
@@ -509,6 +519,100 @@ namespace eval cmgmt {
|
||||
return 0
|
||||
}
|
||||
|
||||
### Pub Addop
|
||||
proc addop_pub {nick uhost hand chan text} {
|
||||
set target [lindex [split $text] 0]
|
||||
|
||||
if {![matchattr $hand n]} {
|
||||
putserv "NOTICE $nick :[format [::msgcat::mc error.no.access] $nick]"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {$target eq ""} {
|
||||
putserv "PRIVMSG $chan :[format [::msgcat::mc error.syntax] $::cmgmt::trigger]addop <nick>"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![onchan $target $chan]} {
|
||||
putserv "PRIVMSG $chan :[format [::msgcat::mc not.on.chan] $target $chan]"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {$target eq "$::botnick"} {
|
||||
return 0
|
||||
}
|
||||
|
||||
set opMask [maskhost ${target}![getchanhost $target $chan] $::cmgmt::addOpMask]
|
||||
|
||||
if {[validuser $target]} {
|
||||
if {[matchattr [nick2hand $target] mno|o $chan]} {
|
||||
putserv "PRIVMSG $chan :[format [::msgcat::mc got.oflag] $target $chan]"
|
||||
return 0
|
||||
} else {
|
||||
chattr $target |+o $chan
|
||||
putserv "PRIVMSG $chan :[format [::msgcat::mc added.chanop] $target $chan]"
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
adduser $target $opMask
|
||||
chattr $target |+o $chan
|
||||
putserv "PRIVMSG $chan :[format [::msgcat::mc added.chanop] $target $chan]"
|
||||
return 0
|
||||
}
|
||||
|
||||
### Pub Delop
|
||||
proc delop_pub {nick uhost hand chan text} {
|
||||
set visop 0
|
||||
|
||||
if {![matchattr $hand n]} {
|
||||
putserv "NOTICE $nick :[format [::msgcat::mc error.no.access] $nick]"
|
||||
return 0
|
||||
}
|
||||
|
||||
set target [lindex [split $text] 0]
|
||||
|
||||
if {$target eq ""} {
|
||||
putserv "PRIVMSG $chan :[format [::msgcat::mc error.syntax] $::cmgmt::trigger]delop <nick>"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![validuser $target]} {
|
||||
putserv "PRIVMSG $chan :[format [::msgcat::mc inexistent.user] $target]"
|
||||
return 0
|
||||
}
|
||||
|
||||
set user [nick2hand $target]
|
||||
chattr $user |-o $chan
|
||||
|
||||
foreach tc [channels] {
|
||||
if {[matchattr $user |o $tc]} {
|
||||
incr visop
|
||||
}
|
||||
}
|
||||
|
||||
if {$visop == 0 && ![matchattr $user mno]} {
|
||||
deluser $user
|
||||
putserv "PRIVMSG $chan :[format [::msgcat::mc op.deleted] $target $chan]"
|
||||
putserv "NOTICE $nick :[format [::msgcat::mc db.user.deleted] $target]"
|
||||
return 0
|
||||
} else {
|
||||
putserv "PRIVMSG $chan :[format [::msgcat::mc op.deleted] $target $chan]"
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
# Pub Ops
|
||||
proc chanops_pub {nick uhost hand chan text} {
|
||||
if {![matchattr $hand n]} {
|
||||
putserv "NOTICE $nick :[format [::msgcat::mc error.no.access] $nick]"
|
||||
return 0
|
||||
}
|
||||
|
||||
putserv "PRIVMSG $chan :[format [::msgcat::mc chanop.list] $chan] [join [userlist |o $chan] {, }]"
|
||||
return 0
|
||||
}
|
||||
|
||||
# ----------
|
||||
# Private procs
|
||||
# ----------
|
||||
@@ -999,6 +1103,135 @@ namespace eval cmgmt {
|
||||
return 0
|
||||
}
|
||||
|
||||
### PM Addop
|
||||
proc addop_msg {nick uhost hand text} {
|
||||
set chan [lindex [split $text] 0]
|
||||
|
||||
if {![matchstr "#*" $chan]} {
|
||||
putserv "PRIVMSG $nick :[::msgcat::mc pm.error.syntax] addop <#chan> <nick>"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![validchan $chan]} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc bot.not.onchan] $chan]"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![matchattr $hand n]} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc error.no.access] $nick]"
|
||||
return 0
|
||||
}
|
||||
|
||||
set target [lindex [split $text] 1]
|
||||
|
||||
if {$target eq ""} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc error.syntax] $::cmgmt::trigger]addop <#chan> <nick>"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![onchan $target $chan]} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc not.on.chan] $target $chan]"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {$target eq "$::botnick"} {
|
||||
return 0
|
||||
}
|
||||
|
||||
set opMask [maskhost ${target}![getchanhost $target $chan] $::cmgmt::addOpMask]
|
||||
|
||||
if {[validuser $target]} {
|
||||
if {[matchattr [nick2hand $target] mno|o $chan]} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc got.oflag] $target $chan]"
|
||||
return 0
|
||||
} else {
|
||||
chattr $target |+o $chan
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc added.chanop] $target $chan]"
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
adduser $target $opMask
|
||||
chattr $target |+o $chan
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc added.chanop] $target $chan]"
|
||||
return 0
|
||||
}
|
||||
|
||||
### PM Delop
|
||||
proc delop_msg {nick uhost hand text} {
|
||||
set chan [lindex [split $text] 0]
|
||||
set visop 0
|
||||
|
||||
if {![matchstr "#*" $chan]} {
|
||||
putserv "PRIVMSG $nick :[::msgcat::mc pm.error.syntax] delop <#chan> <nick>"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![validchan $chan]} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc bot.not.onchan] $chan]"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![matchattr $hand n]} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc error.no.access] $nick]"
|
||||
return 0
|
||||
}
|
||||
|
||||
set target [lindex [split $text] 1]
|
||||
|
||||
if {$target eq ""} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc error.syntax] $::cmgmt::trigger]delop <#chan> <nick>"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![validuser $target]} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc inexistent.user] $target]"
|
||||
return 0
|
||||
}
|
||||
|
||||
set user [nick2hand $target]
|
||||
chattr $user |-o $chan
|
||||
|
||||
foreach tc [channels] {
|
||||
if {[matchattr $user |o $tc]} {
|
||||
incr visop
|
||||
}
|
||||
}
|
||||
|
||||
if {$visop == 0 && ![matchattr $user mno]} {
|
||||
deluser $user
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc op.deleted] $target $chan]"
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc db.user.deleted] $target]"
|
||||
return 0
|
||||
} else {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc op.deleted] $target $chan]"
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
# PM Ops
|
||||
proc chanops_msg {nick uhost hand text} {
|
||||
set chan [lindex [split $text] 0]
|
||||
|
||||
if {![matchstr "#*" $chan]} {
|
||||
putserv "PRIVMSG $nick :[::msgcat::mc pm.error.syntax] ops <#chan>"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![validchan $chan]} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc bot.not.onchan] $chan]"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![matchattr $hand n]} {
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc error.no.access] $nick]"
|
||||
return 0
|
||||
}
|
||||
|
||||
putserv "PRIVMSG $nick :[format [::msgcat::mc chanop.list] $chan] [join [userlist |o $chan] {, }]"
|
||||
return 0
|
||||
}
|
||||
|
||||
# ---------- DON'T TOUCH UNLESS YOU KNOW WHAT YOU'RE DOING ---------- #
|
||||
# ----------
|
||||
# Auto add bans
|
||||
|
||||
Reference in New Issue
Block a user