Code: Select all
# http://forum.egghelp.org/viewtopic.php?t=19197
set autokick_channels "#chan1 #chan2"
set autokick_exempts "/home/spunky/bot/text/exempt_hosts_kick_out.txt"
set autokick_kickmsg "You don't have the access to be on this channel!"
bind join -|- "*" autokick:protect
bind pub o|o !addhost autokick:add
proc autokick:protect { nick uhost hand chan } {
global autokick_exempts autokick_kickmsg autokick_channels
set uhost [string tolower $uhost]
foreach autokick_channel $autokick_channels {
if {$autokick_channel == $chan} {
set file [open $autokick_exempts "r"]
set text [split [read $file] \n]
close $file
set found [lsearch -glob $text "$uhost"]
if {$found < 0} {
putserv "KICK $autokick_channel $nick :$autokick_kickmsg"
}
}
}
}
proc autokick:add { nick uhost hand chan target } {
global autokick_exempts autokick_kickmsg autokick_channels
set uhost_add [lindex [split $target] 0]
set uhost_add [string tolower $uhost_add]
foreach autokick_channel $autokick_channels {
if {$autokick_channel == $chan} {
if {$uhost_add == ""} { putserv "privmsg $autokick_channel : \002Usage:\017 !addhost ident@host.name";return }
set file [open $autokick_exempts "r"]
set text [split [read $file] \n]
close $file
set found [lsearch -glob $text "$uhost_add"]
if {$found < 0} {
set file [open $autokick_exempts "a"]
puts $file $uhost_add
close $file
putserv "privmsg $autokick_channel :$uhost_add has been added to the exempt list.. "
} else {
putserv "privmsg $autokick_channel :$uhost_add was already on the exempt list.. "
}
}
}
}
putlog "autokick:protect.tcl loaded"
Code: Select all
# Restricted TCL - istok@IRCSpeed.org
# $Id: restricted.tcl,v1 14/08/2010 02:37:42am GMT +12 (NZST) istok Exp $
# RECOMMENDED
# Please add services to your bot, if you haven't already. (via dcc)
# SYNTAX: .+user serv *!*@services.network.etc
# SYNTAX: .chattr serv +f
# and possibly add a few extra masks...
# SYNTAX: .+host serv nickserv!*@*
# SYNTAX: .+host serv chanserv!*@*
# COMMANDS
# --------
# !restricted on|off <- public command
# /msg botnick restricted #channel on|off <- private command
# Set Global trigger here.
set trig "!"
# Set Global Exempt flags here (default +of (Global Operator, Friend, and above))
set gflags of
# Set Channel Exempt flags here (default +ovfb (Channel Operator, Voice, Friend, Bot, and above))
set cflags ovfb
# Set the banmask to use in banning the IPs
# Default banmask is set to 1
# 1 - *!*@some.domain.com
# 2 - *!*@*.domain.com
# 3 - *!*ident@some.domain.com
# 4 - *!*ident@*.domain.com
# 5 - *!*ident*@some.domain.com
# 6 - *nick*!*@*.domain.com
# 7 - *nick*!*@some.domain.com
# 8 - nick!ident@some.domain.com
# 9 - nick!ident@*.host.com
# 10 - *!*ident*@*
set bantype 1
# ---------- No need to edit anything else *YAY* ----------
bind pub - ${trig}restricted restrict:pub
bind msg - restricted restrict:msg
bind join - * restrict:join
proc makeTrig {} {
global trig
return $trig
}
setudef flag restricted
proc restrict:pub {nick uhost hand chan arg} {
if {[matchattr [nick2hand $nick] o|n $chan]} {
if {[lindex [split $arg] 0] == ""} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [makeTrig]restricted on/off"; return}
if {[lindex [split $arg] 0] == "on"} {
if {[channel get $chan restricted]} {putquick "PRIVMSG $chan :ERROR: This setting is already enabled."; return}
channel set $chan +restricted
puthelp "PRIVMSG $chan :Enabled Restriction of Users for $chan"
restrict:chan $chan
}
if {[lindex [split $arg] 0] == "off"} {
if {![channel get $chan restricted]} {putquick "PRIVMSG $chan :ERROR: This setting is already disabled."; return}
channel set $chan -restricted
puthelp "PRIVMSG $chan :Disabled Restriction of Users for $chan"
}
}
}
proc restrict:msg {nick uhost hand arg} {
global botnick
set chan [strlwr [lindex $arg 0]]
if {[matchattr [nick2hand $nick] o|n $chan]} {
if {[lindex [split $arg] 0] == ""} {putquick "NOTICE $nick :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: /msg $botnick restricted #channel on/off"; return}
if {[lindex [split $arg] 1] == ""} {putquick "NOTICE $nick :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: /msg $botnick restricted $chan on/off"; return}
if {[lindex [split $arg] 1] == "on"} {
if {[channel get $chan restricted]} {putquick "NOTICE $nick :\037ERROR\037: This setting is already enabled."; return}
channel set $chan +restricted
putquick "NOTICE $nick :Enabled Restriction of Users for $chan"
restrict:chan $chan
}
if {[lindex [split $arg] 1] == "off"} {
if {![channel get $chan restricted]} {putquick "NOTICE $nick :\037ERROR\037: This setting is already disabled."; return}
channel set $chan -restricted
putquick "NOTICE $nick :Disabled Restriction of Users for $chan"
}
}
}
proc restrict:chan {chan} {
global gflags cflags
foreach nick [chanlist $chan] {
if {![isbotnick $nick] && ![matchattr [nick2hand $nick] $gflags|$cflags $chan] && [channel get $chan restricted] && [onchan $nick $chan]} {
set uhost [getchanhost $nick $chan]
set banmask [restrict:mask $uhost $nick]
pushmode $chan +b $banmask
putquick "KICK $chan $nick :This Channel has been set \002Restricted\002 - You are now Unwelcome."
}
}
flushmode $chan
}
proc restrict:join {nick uhost hand chan} {
global gflags cflags
if {![isbotnick $nick] && ![matchattr [nick2hand $nick] $gflags|$cflags $chan] && [channel get $chan restricted] && [onchan $nick $chan]} {
set banmask [restrict:mask $uhost $nick]
putquick "MODE $chan +b $banmask"
putquick "KICK $chan $nick :This is a \002Restricted\002 Channel."
}
}
proc restrict:mask {uhost nick} {
global bantype
switch -- $bantype {
1 { set mask "*!*@[lindex [split $uhost @] 1]" }
2 { set mask "*!*@[lindex [split [maskhost $uhost] "@"] 1]" }
3 { set mask "*!*$uhost" }
4 { set mask "*!*[lindex [split [maskhost $uhost] "!"] 1]" }
5 { set mask "*!*[lindex [split $uhost "@"] 0]*@[lindex [split $uhost "@"] 1]" }
6 { set mask "*$nick*!*@[lindex [split [maskhost $uhost] "@"] 1]" }
7 { set mask "*$nick*!*@[lindex [split $uhost "@"] 1]" }
8 { set mask "$nick![lindex [split $uhost "@"] 0]@[lindex [split $uhost @] 1]" }
9 { set mask "$nick![lindex [split $uhost "@"] 0]@[lindex [split [maskhost $uhost] "@"] 1]" }
10 { set mask "*!*[lindex [split $uhost "@"] 0]*@*" }
default { set mask "*!*@[lindex [split $uhost @] 1]" }
return $mask
}
}
putlog "Restricted.TCL Loaded. - istok@IRCSpeed.org"