bobovski

bobovski

Joined
Sep 28, 2014

Activity Stream

bobovski   -  Nov 23, 2015

Need Help , i will pay if someone wrote me this tcl because i cant . :)
Features: support ip, host, resolve , CIDR

  • blacklist file
    example: set blacklist(file) "scripts/blacklist.txt"
  • special flag
    example: only user with flag +B can use commands addban, remban and banlist ( this flag can be settable only from perm owner )
  1. Procedures:

    • addban
      example: partyline command .addban !@10.1.1.1 reason time
      example CIDR: partyline command: addban !@10.1.1.1/8 reason time
    • remban
      example: partyline command .remban !@10.1.1.1
    • banlist
      example: partyline command: .banlist ( show the current list with all bans )
      if is possible to order bans a-z after adding or removing some ban ( but if that load the bot better not )
  2. bantype:

    • IP: all users join from host/ip will be ban with mask !@10.1.1.1 or !@some.host.com ( example: use set ipban [maskhost $host 2] )
    • HEX: all users join from type: !@.html.chat, !@.xs4all.nl, !@.kiwiirc.com or !@.mibbit.com will be ban with the banmask !ident@*.html.chat ( example: use set hexban [maskhost $host 3] )
  3. exempt:

    • by default eggdrop don't check other eggdrops/bots
    • flag I gives user exempt and he wouldn't be checked
  4. Putidx

    • addban example: putidx $idx "SYNTAX: \003.addban \002nick>\002!\002\002@\002\002 [reason] [bantime]\003"
    • addban check for existing ban: putidx $idx "[string map {! \002!\002 @ \002@\002} \002$blnick\002] has been \002added\002 to the blacklist."
    • remban example: putidx $idx "SYNTAX: \003.remban \002nick>\002!\002\002@\002\002\003"
    • remban message: putidx $idx "[string map {! \002!\002 @ \002@\002} \002$blnick\002] was \002deleted\002 from the blacklist."
    • remban check: putidx $idx "[string map {! \002!\002 @ \002@\002} \002$blnick\002] was \002not\002 found in the blacklist."
    • banlist example: putidx $idx "SYNTAX: \003.Showing the banlist!\003" , putidx $idx "SYNTAX: \003.End of the banlist!\003"
    • ban is added: putidx $idx "[string map {! \002!\002 @ \002@\002} \002$blnick\002] has been \002added\002 to the blacklist.
    • ban already exist: putidx $idx "[string map {! \002!\002 @ \002@\002} \002$blnick\002] already \002exists\002 in the blacklist."
    • Empty banlist: putidx $idx "There are \002no\002 bans in the blacklist."
  5. Handle
    • Showing handle of user set the ban ( if is possible to show and date like )
    • example reason: (Violation of the rules section 2 of regulation! 13/04/2014 Kiril@Valhalla)

Note:
if user join with host eggdrop resolve host to ip and check in database ( blacklist ).
if blacklist file does not exist than create one!
Check if IP is already added in blacklist!

Legend:

  • Time: .addban !@10.1.1.1 [censored] ya 60 ( that means ban is for 60 min )
  • Time: .addban !@10.1.1.1/16 [censored] ya 0 ( that means ban is permanent )

Logic:
user join for example from host [05:20:36] * ShakeIT46982 (d4059ee1@elitsat.html.chat) has joined #gyuvetch
TO DO Procedures:

  1. Convert HEX to IP ( d4059ee1 -> 212.5.158.225 )
  2. Convert HOST to IP ( Resolve ) if is need it like linux.com -> 140.211.167.50 ( for users join via IRC client not webchat )
  3. Compare IP with banlist using matchcidr or whatever is need it!
  4. Set Channel ban depends from that is it from !@*.html.chat or it is host/ip see 2. bantype

HELP materials:

  • hex2ip Procedure:

proc bl:h2d {hex} {

Simple check to validate proper hex string

if {[regexp {^[a-fA-F0-9]{8}$} $hex]} {
set dec [expr 0x$hex]
set o1 [expr {($dec >> 24) & 0xff}]
set o2 [expr {($dec >> 16) & 0xff}]
set o3 [expr {($dec >> Cool & 0xff}]
set o4 [expr {$dec & 0xff}]

return "$o1.$o2.$o3.$o4"
}
return 0
}

  • Checking for perm owner

proc ispermowner {hand} {
global owner
regsub -all -- , [string tolower $owner] "" owners
if {([matchattr $hand n]) && \
([lsearch -exact $owners [string tolower $hand]] != -1)} then {
return 1
}
return 0
}

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.