This is an empty page.

 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 \002<nick>\002!\002<user>\002@\002<host>\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 \002<nick>\002!\002<user>\002@\002<host>\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 ([email protected]) 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 }