egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Blacklist

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    egghelp.org community Forum Index -> Archive
View previous topic :: View next topic  
Author Message
Skipper
Voice


Joined: 21 Aug 2005
Posts: 29

PostPosted: Mon Aug 29, 2005 11:51 am    Post subject: Blacklist Reply with quote

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 Smile Also help me how to make this script kick for specified channels only.
Back to top
View user's profile Send private message
De Kus
Revered One


Joined: 15 Dec 2002
Posts: 1361
Location: Germany

PostPosted: Mon Aug 29, 2005 2:16 pm    Post subject: Reply with quote

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
View user's profile Send private message MSN Messenger
Skipper
Voice


Joined: 21 Aug 2005
Posts: 29

PostPosted: Tue Aug 30, 2005 1:27 am    Post subject: Reply with quote

Hello,

Hey thanks.. it works Smile 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
View user's profile Send private message
Sir_Fz
Revered One


Joined: 27 Apr 2003
Posts: 3793
Location: Lebanon

PostPosted: Tue Aug 30, 2005 1:24 pm    Post subject: Reply with quote

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
View user's profile Send private message Visit poster's website
Dizzle
Op


Joined: 28 Apr 2005
Posts: 109

PostPosted: Tue Aug 30, 2005 4:07 pm    Post subject: Reply with quote

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
View user's profile Send private message Visit poster's website MSN Messenger
Alchera
Revered One


Joined: 11 Aug 2003
Posts: 3344
Location: Ballarat Victoria, Australia

PostPosted: Tue Aug 30, 2005 6:25 pm    Post subject: Reply with quote

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. Razz

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
View user's profile Send private message Visit poster's website
demond
Revered One


Joined: 12 Jun 2004
Posts: 3073
Location: San Francisco, CA

PostPosted: Tue Aug 30, 2005 8:59 pm    Post subject: Reply with quote

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
View user's profile Send private message Visit poster's website
Skipper
Voice


Joined: 21 Aug 2005
Posts: 29

PostPosted: Wed Aug 31, 2005 2:54 am    Post subject: Reply with quote

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.. Smile

Rgds

Skipper
Back to top
View user's profile Send private message
CrazyEgg
Halfop


Joined: 28 Jul 2005
Posts: 47

PostPosted: Wed Aug 31, 2005 3:44 am    Post subject: Reply with quote

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
View user's profile Send private message
Skipper
Voice


Joined: 21 Aug 2005
Posts: 29

PostPosted: Tue Sep 13, 2005 1:39 am    Post subject: Reply with quote

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. Smile

Rgds

Skipper
Back to top
View user's profile Send private message
demond
Revered One


Joined: 12 Jun 2004
Posts: 3073
Location: San Francisco, CA

PostPosted: Tue Sep 13, 2005 2:29 am    Post subject: Reply with quote

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. Smile


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
View user's profile Send private message Visit poster's website
Skipper
Voice


Joined: 21 Aug 2005
Posts: 29

PostPosted: Tue Sep 13, 2005 1:19 pm    Post subject: Reply with quote

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 Smile


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
View user's profile Send private message
demond
Revered One


Joined: 12 Jun 2004
Posts: 3073
Location: San Francisco, CA

PostPosted: Tue Sep 13, 2005 2:05 pm    Post subject: Reply with quote

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
View user's profile Send private message Visit poster's website
Skipper
Voice


Joined: 21 Aug 2005
Posts: 29

PostPosted: Fri Sep 16, 2005 1:30 am    Post subject: Reply with quote

Hello,

I have figured out the error and corrected it myself.. Smile

Thanks for the help.

Rgds

Skipper
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    egghelp.org community Forum Index -> Archive All times are GMT - 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber