| View previous topic :: View next topic |
| Author |
Message |
Skipper Voice
Joined: 21 Aug 2005 Posts: 29
|
Posted: Mon Aug 29, 2005 11:51 am Post subject: Blacklist |
|
|
| Code: |
set blacklist_file "scripts/dbase/blacklist"
bind MSG m|- \$blacklist blacklist:list
bind MSG m|- \$blackadd blacklist:add
bind MSG m|- \$blackdel blacklist:del
bind TIME -|- "0* * * * *" blacklist:sentry
bind JOIN -|- * blacklist:join
proc blacklist:list {nickname hostname handle channel arguments} {
global blacklist
set entrys 0
puthelp "NOTICE $nickname :Blacklist entrys"
puthelp "NOTICE $nickname :Nr. Owner Hostmask"
foreach entry [array names blacklist] {
incr entrys
set owner [lindex $blacklist($entry) 0]
while {[string length $owner] < 15} {
set owner "$owner "
}
if {[string length $entrys] < 2} {
set target "$entrys "
} else {
set target $entrys
}
puthelp "NOTICE $nickname :#$target $owner $entry"
}
puthelp "NOTICE $nickname :End of list."
}
proc blacklist:add {nickname hostname handle channel arguments} {
global blacklist
set arguments [blacklist:clean $arguments]
set banmask [blacklist:validate:host [lindex $arguments 0]]
if {([regexp -all -- {!} $banmask] > 1) || ([regexp -all -- {@} $banmask] > 1)} {
puthelp "NOTICE $nickname :Sorry, couldn't add that hostmask."
return
}
set owner $handle
if {[regexp {^(\d{1,2}|[0-3][0-6][0-5])$} [lindex $arguments 1]]} {
set expire [expr ([lindex $arguments 1] * 86400) + [unixtime]]
set reason [join [lrange $arguments 2 end]]
} else {
set expire 0
set reason [join [lrange $arguments 1 end]]
}
if {[llength $reason] >= 1} {
if {![info exists blacklist($banmask)]} {
set blacklist($banmask) "$owner $expire $reason"
puthelp "NOTICE $nickname :Done. $banmask blacklisted successfully (reason: $reason)."
blacklist:sentry
} else {
puthelp "NOTICE $nickname :Sorry, couldn't add that hostmask."
}
} else {
puthelp "NOTICE $nickname :You forgot to type a blacklist reason."
}
}
proc blacklist:del {nickname hostname handle channel arguments} {
global blacklist
set arguments [blacklist:clean $arguments]
set banmask [lindex $arguments 0]
set success 0
if {[regexp {^#([0-9]+)$} $banmask tmp number]} {
set item 0
foreach entry [array names blacklist] {
incr item
if {$item == $number} {
unset blacklist($entry)
set success 1
}
}
} else {
if {[info exists blacklist($banmask)]} {
unset blacklist($banmask)
set success 1
}
}
if {$success == 0} {
puthelp "NOTICE $nickname :Couldn't delete the requested ban. Use \$blacklist to view them."
} else {
puthelp "NOTICE $nickname :Done."
}
}
proc blacklist:sentry {{minute "0"} {hour "0"} {day "0"} {week "0"} {year "0"}} {
global blacklist
foreach channel [channels] {
if {![botisop $channel]} {continue}
foreach target [chanlist $channel] {
set userhost [blacklist:weirdclean "$target![getchanhost $target]"]
foreach entry [array names blacklist] {
set expire [lindex $blacklist($entry) 1]
if {$expire >= [unixtime] || ($expire == 0)} {
set reason [lrange [blacklist:clean $blacklist($entry)] 2 end]
set blackhost [blacklist:weirdclean $entry]
if {[string match -nocase $blackhost $userhost]} {
putquick "MODE $channel -o+b $target $entry"
putquick "KICK $channel $target :[join $reason]"
}
} else {
unset blacklist($entry)
}
}
}
}
blacklist:save
}
proc blacklist:join {nickname hostname handle channel} {
global blacklist
if {![botisop $channel]} {return}
set userhost [blacklist:weirdclean "$nickname![getchanhost $nickname]"]
foreach entry [array names blacklist] {
set reason [lrange [blacklist:clean $blacklist($entry)] 2 end]
set blackhost [blacklist:weirdclean $entry]
if {[string match -nocase $blackhost $userhost]} {
putquick "MODE $channel -o+b $nickname $entry"
putquick "KICK $channel $nickname :[join $reason]"
}
}
}
proc blacklist:validate:host {i} {
regsub -all {\*+} $i {*} i
array set ban {
ident *
host *
}
set ban(nick) $i
if {[regexp -- {!} $i]} {
regexp -- {^(.+?)!(.*?)(@(.*))?$} $i tmp ban(nick) ban(ident) tmp ban(host)
} elseif {[regexp -- {@} $i]} {
regexp -- {^(.+!)?(.*?)(@(.*))?$} $i tmp ban(nick) ban(ident) tmp ban(host)
}
foreach item [array names ban] {
if {[string length $ban($item)] < 1} {
set ban($item) *
}
}
return $ban(nick)!$ban(ident)@$ban(host)
}
proc blacklist:load {} {
global blacklist blacklist_file
regexp {(\S+/)?} $blacklist_file tmp blacklist_dir
if {$blacklist_dir != ""} {
if {![file isdirectory $blacklist_dir]} {
file mkdir $blacklist_dir
putlog "Created directory: $blacklist_dir"
}
}
if {![file exists $blacklist_file]} {
array set blacklist {}
return
}
if {[array exists blacklist]} {
array unset blacklist
}
set file [open $blacklist_file r]
while {![eof $file]} {
gets $file line
if {[regexp -- {(\S+)\s(\S+)\s(\S+)\s(.+)} $line tmp banmask owner expire reason]} {
if {$expire >= [unixtime] || ($expire == 0)} {
set blacklist($banmask) "$owner $expire $reason"
}
}
}
close $file
}
proc blacklist:save {} {
global blacklist blacklist_file
set file "[open $blacklist_file w]"
foreach entry [array names blacklist] {
puts $file "$entry $blacklist($entry)"
}
close $file
}
proc blacklist:weirdclean {i} {
regsub -all -- \\\\ $i \001 i
regsub -all -- \\\[ $i \002 i
regsub -all -- \\\] $i \003 i
regsub -all -- \\\} $i \004 i
regsub -all -- \\\{ $i \005 i
return $i
}
proc blacklist:clean {i} {
regsub -all -- \\\\ $i \\\\\\\\ i
regsub -all -- \\\[ $i \\\\\[ i
regsub -all -- \\\] $i \\\\\] i
regsub -all -- \\\} $i \\\\\} i
regsub -all -- \\\{ $i \\\\\{ i
regsub -all -- \\\" $i \\\\\" i
return $i
}
blacklist:load
|
I tried with the MSG bind that is.. to add the blacklist entried using a query window.. but am getting an error as
| Code: | | <(Yammi> [15:50] Tcl error [blacklist:add]: wrong # args: should be "blacklist:add nickname hostname handle channel arguments" |
Help me to fix this Also help me how to make this script kick for specified channels only. |
|
| Back to top |
|
 |
De Kus Revered One

Joined: 15 Dec 2002 Posts: 1361 Location: Germany
|
Posted: Mon Aug 29, 2005 2:16 pm Post subject: |
|
|
remove "channel" from var list within proc declaration when using msg instead of pub. _________________ De Kus
StarZ|De_Kus, De_Kus or DeKus on IRC
Copyright © 2005-2009 by De Kus - published under The MIT License
Love hurts, love strengthens... |
|
| Back to top |
|
 |
Skipper Voice
Joined: 21 Aug 2005 Posts: 29
|
Posted: Tue Aug 30, 2005 1:27 am Post subject: |
|
|
Hello,
Hey thanks.. it works But as i said earlier the bans are getting added globally. I just want to make the bans for specific channels only..
what i should alter in it now?
And How do i set the same reason for all the bans.. instead of typing reason for everytime .. can i make a perm reason to be added in the tcl itself. ?
Rgds
Skipper |
|
| Back to top |
|
 |
Sir_Fz Revered One

Joined: 27 Apr 2003 Posts: 3793 Location: Lebanon
|
Posted: Tue Aug 30, 2005 1:24 pm Post subject: |
|
|
Why not use the .+ban dcc command instead, this way you can make it channel specific. _________________ Follow me on GitHub
- Opposing
Public Tcl scripts |
|
| Back to top |
|
 |
Dizzle Op
Joined: 28 Apr 2005 Posts: 109
|
Posted: Tue Aug 30, 2005 4:07 pm Post subject: |
|
|
if you want it channel specified, it aint a blacklist anymore imo _________________ What's this real life ppl keep talking about ??? And where can I download it ??? |
|
| Back to top |
|
 |
Alchera Revered One

Joined: 11 Aug 2003 Posts: 3344 Location: Ballarat Victoria, Australia
|
Posted: Tue Aug 30, 2005 6:25 pm Post subject: |
|
|
| Dizzle wrote: | | if you want it channel specified, it aint a blacklist anymore imo |
Since when? A blacklist is a blacklist, channel specific or otherwise.
Skipper:
| Code: | | newchanban <channel> <ban> <creator> <comment> [lifetime] [options] |
<comment> = your reason. _________________ Add [SOLVED] to the thread title if your issue has been.
Search | FAQ | RTM |
|
| Back to top |
|
 |
demond Revered One

Joined: 12 Jun 2004 Posts: 3073 Location: San Francisco, CA
|
Posted: Tue Aug 30, 2005 8:59 pm Post subject: |
|
|
I've said that already, but I still hope Skipper will finally get a clue and will start using eggdrop in some sane way:
Skipper, you keep requesting feature scripts that simply don't make sense - either duplicating already existing eggdrop feature (eggdrop already has a built-in "blacklist", it's called banlist) or using eggdrop as a proxy for doing human op chores manually where such proxy isn't needed (your ops that you don't want added to bot's userlist should kick/ban/police a channel themselves, not using the bot); amazingly enough, you managed to find whole script that does the former (or did you write it yourself? a complete waste of time) |
|
| Back to top |
|
 |
Skipper Voice
Joined: 21 Aug 2005 Posts: 29
|
Posted: Wed Aug 31, 2005 2:54 am Post subject: |
|
|
Hello,
Thanks for the help ppl.. i have done the channel specific one.. but left with the reason part alone.. Just that am lazy to add the blacklist reason everytime.. so wanted to put a reason permanently in the tcl itself.. wonder how to do it.. if someone can help pls do.. else stop commenting..
Rgds
Skipper |
|
| Back to top |
|
 |
CrazyEgg Halfop
Joined: 28 Jul 2005 Posts: 47
|
Posted: Wed Aug 31, 2005 3:44 am Post subject: |
|
|
make the modifications as you want
| Code: |
if {$reason == ""} {
newchanban $chan $banmask $hand " Requested by $hand" [lifetime] [options]
} else {
newchanban $chan $banmask $hand " $reason" [lifetime] [options] |
|
|
| Back to top |
|
 |
Skipper Voice
Joined: 21 Aug 2005 Posts: 29
|
Posted: Tue Sep 13, 2005 1:39 am Post subject: |
|
|
| Code: | set blacklist_file "scripts/dbase/blacklist"
setudef flag black
bind MSG m|- \$blacklist blacklist:list
bind MSG m|- \$blackadd blacklist:add
bind MSG m|- \$blackdel blacklist:del
bind JOIN -|- * blacklist:join
proc blacklist:list {nickname hostname handle arguments} {
global blacklist
set entrys 0
puthelp "PRIVMSG $nickname :BlackList Entrys"
puthelp "PRIVMSG $nickname :Nr. Owner HostMask"
foreach entry [array names blacklist] {
incr entrys
set owner [lindex $blacklist($entry) 0]
while {[string length $owner] < 15} {
set owner "$owner "
}
if {[string length $entrys] < 2} {
set target "$entrys "
} else {
set target $entrys
}
puthelp "PRIVMSG $nickname :#$target $owner $entry"
}
puthelp "PRIVMSG $nickname :End of list."
}
proc blacklist:add {nickname hostname handle arguments} {
global blacklist
set arguments [blacklist:clean $arguments]
set banmask [blacklist:validate:host [lindex $arguments 0]]
if {([regexp -all -- {!} $banmask] > 1) || ([regexp -all -- {@} $banmask] > 1)} {
puthelp "PRIVMSG $nickname :Sorry, Couldn't Add That HostMask."
return
}
set owner $handle
if {[regexp {^(\d{1,2}|[0-3][0-6][0-5])$} [lindex $arguments 1]]} {
set expire [expr ([lindex $arguments 1] * 86400) + [unixtime]]
set reason [join [lrange $arguments 2 end]]
} else {
set expire 0
set reason [join [lrange $arguments 1 end]]
}
if {[llength $reason] >= 1} {
if {![info exists blacklist($banmask)]} {
set blacklist($banmask) "$owner $expire $reason"
puthelp "PRIVMSG $nickname :Done. $banmask BlackListed Successfully (Reason: $reason)."
} else {
puthelp "PRIVMSG $nickname :Sorry, Couldn't Add That HostMask."
}
} else {
puthelp "PRIVMSG $nickname :You Forgot To Type A BlackList Reason."
}
}
proc blacklist:del {nickname hostname handle arguments} {
global blacklist
set arguments [blacklist:clean $arguments]
set banmask [lindex $arguments 0]
set success 0
if {[regexp {^#([0-9]+)$} $banmask tmp number]} {
set item 0
foreach entry [array names blacklist] {
incr item
if {$item == $number} {
unset blacklist($entry)
set success 1
}
}
} else {
if {[info exists blacklist($banmask)]} {
unset blacklist($banmask)
set success 1
}
}
if {$success == 0} {
puthelp "PRIVMSG $nickname :Couldn't Delete The Requested Ban. Use \$blacklist To View Them."
} else {
puthelp "PRIVMSG $nickname :Done."
}
}
proc blacklist:join {nickname hostname handle chan} {
global blacklist
if {![botisop $chan]} {return}
if {[lsearch -exact [channel info $chan] +black] == -1} {return 0}
set userhost [blacklist:weirdclean "$nickname![getchanhost $nickname]"]
foreach entry [array names blacklist] {
set reason [lrange [blacklist:clean $blacklist($entry)] 2 end]
set blackhost [blacklist:weirdclean $entry]
if {[string match -nocase $blackhost $userhost]} {
putquick "MODE $chan -o+b $nickname $entry"
putquick "KICK $chan $nickname :[join $reason]"
}
}
}
proc blacklist:validate:host {i} {
regsub -all {\*+} $i {*} i
array set ban {
ident *
host *
}
set ban(nick) $i
if {[regexp -- {!} $i]} {
regexp -- {^(.+?)!(.*?)(@(.*))?$} $i tmp ban(nick) ban(ident) tmp ban(host)
} elseif {[regexp -- {@} $i]} {
regexp -- {^(.+!)?(.*?)(@(.*))?$} $i tmp ban(nick) ban(ident) tmp ban(host)
}
foreach item [array names ban] {
if {[string length $ban($item)] < 1} {
set ban($item) *
}
}
return $ban(nick)!$ban(ident)@$ban(host)
}
proc blacklist:load {} {
global blacklist blacklist_file
regexp {(\S+/)?} $blacklist_file tmp blacklist_dir
if {$blacklist_dir != ""} {
if {![file isdirectory $blacklist_dir]} {
file mkdir $blacklist_dir
putlog "Created directory: $blacklist_dir"
}
}
if {![file exists $blacklist_file]} {
array set blacklist {}
return
}
if {[array exists blacklist]} {
array unset blacklist
}
set file [open $blacklist_file r]
while {![eof $file]} {
gets $file line
if {[regexp -- {(\S+)\s(\S+)\s(\S+)\s(.+)} $line tmp banmask owner expire reason]} {
if {$expire >= [unixtime] || ($expire == 0)} {
set blacklist($banmask) "$owner $expire $reason"
}
}
}
close $file
}
proc blacklist:save {} {
global blacklist blacklist_file
set file "[open $blacklist_file w]"
foreach entry [array names blacklist] {
puts $file "$entry $blacklist($entry)"
}
close $file
}
proc blacklist:weirdclean {i} {
regsub -all -- \\\\ $i \001 i
regsub -all -- \\\[ $i \002 i
regsub -all -- \\\] $i \003 i
regsub -all -- \\\} $i \004 i
regsub -all -- \\\{ $i \005 i
return $i
}
proc blacklist:clean {i} {
regsub -all -- \\\\ $i \\\\\\\\ i
regsub -all -- \\\[ $i \\\\\[ i
regsub -all -- \\\] $i \\\\\] i
regsub -all -- \\\} $i \\\\\} i
regsub -all -- \\\{ $i \\\\\{ i
regsub -all -- \\\" $i \\\\\" i
return $i
}
blacklist:load
|
Tcl is working perfect.
But theres a small bug.. which am unable to trace it out.. When i delete the blacklist.. its getting deleted.. but when i restart the bot.. the one which i deleted stays there still. How to fix it?
There is something to do with the delete part of the tcl.. i wonder what i should do there.
Rgds
Skipper |
|
| Back to top |
|
 |
demond Revered One

Joined: 12 Jun 2004 Posts: 3073 Location: San Francisco, CA
|
Posted: Tue Sep 13, 2005 2:29 am Post subject: |
|
|
| Skipper wrote: | | But theres a small bug.. which am unable to trace it out.. When i delete the blacklist.. its getting deleted.. but when i restart the bot.. the one which i deleted stays there still. How to fix it? |
save your data after modifying it
| Quote: | There is something to do with the delete part of the tcl.. i wonder what i should do there. |
you should ditch that useless & bloated thing and learn HOW TO USE EGGDROP'S BUILT-IN BAN SUPPORT, which is zillion times better than your lame stuff |
|
| Back to top |
|
 |
Skipper Voice
Joined: 21 Aug 2005 Posts: 29
|
Posted: Tue Sep 13, 2005 1:19 pm Post subject: |
|
|
Hello,
I know abt the eggdrops ban stuff as well. When i use this script there is some reason behind it.. Coz of the firewall probs i cant dcc the bot in my workplace.. thats the reason i have opted for this script..
Genuine helpers only reply pls
Rgds
Skipper.
P.S: Those who want to increase their post count.. kindly poke in some other topic.. and dont be a spoilsport. |
|
| Back to top |
|
 |
demond Revered One

Joined: 12 Jun 2004 Posts: 3073 Location: San Francisco, CA
|
Posted: Tue Sep 13, 2005 2:05 pm Post subject: |
|
|
| then you should learn how to enable DCC - read the top sticky post in Eggdrop Help forum (and yes, this is a genuine advice) |
|
| Back to top |
|
 |
Skipper Voice
Joined: 21 Aug 2005 Posts: 29
|
Posted: Fri Sep 16, 2005 1:30 am Post subject: |
|
|
Hello,
I have figured out the error and corrected it myself..
Thanks for the help.
Rgds
Skipper |
|
| Back to top |
|
 |
|