; –––––––––––––––––––––––––––––––––––––––– ; Query Blocker 0.81 for NNScript ; © 2003-2004 by Phreak ; –––––––––––––––––––––––––––––––––––––––– ; The core functions were found in some ; scripting forum, so I can't take credit ; for them. They are heavily modified and ; extended though (originally they had ; about 15 lines of code). ; –––––––––––––––––––––––––––––––––––––––– ; Check this site for updates: ; http://www.gerald-online.de ; –––––––––––––––––––––––––––––––––––––––– on 1:START:{ hmake qb.authlist 300 hmake qb.blocklist 300 if ($exists(qb_auths.dat)) hload -ob qb.authlist qb_auths.dat if ($exists(qb_blocks.dat)) hload -ob qb.blocklist qb_blocks.dat kte_echo -s Query Blocker %qb.version © 2003-2004 by Phreak loaded, blocker: $sd($iif(%qb.disabled == 0,enabled,disabled)) $+ , notify: $sd($iif(%qb.notify == 1,enabled,disabled)) $+ , allowed hostmasks: $sd($hget(qb.authlist,0).item) $+ , blocked/unknown hostmasks: $sd($hget(qb.blocklist,0).item) $+ , blocked queries: $sd(%qb.blocked) } on 1:LOAD:{ if (%version < 3.8) { if ($input(NoNameScript is required to run this script. Download it from http://www.nnscript.com,o)) { unload -rs $script } } set %qb.disabled 0 set %qb.notify 1 set %qb.notadd 1 set %qb.messages 1 set %qb.status 1 set %qb.awaylog 1 set %qb.balloon 1 set %qb.showmsg 1 set %qb.version 0.81 set %qb.message Your Query has been blocked! Only authorized users may send private messages to set %qb.addmsg You have been added to the allow query list of with '
' hmake qb.authlist 300 hmake qb.blocklist 300 if ($exists(qb_auths.dat)) hload -ob qb.authlist qb_auths.dat if ($exists(qb_blocks.dat)) hload -ob qb.blocklist qb_blocks.dat kte_echo -a Query Blocker %qb.version loaded. © 2003-2004 by Phreak if ($input(This is the first time you run the query blocker. Do you want to set it up now?)) qbsetup } on 1:unload:{ unset %qb.disabled unset %qb.notify unset %qb.notadd unset %qb.messages unset %qb.status unset %qb.awaylog unset %qb.balloon unset %qb.message unset %qb.showmsg unset %qb.addmsg kte_echo -a Query Blocker %qb.version unloaded. © 2003-2004 by Phreak unset %qb.version } on 1:exit: { $iif($hget(qb.authlist,0).item > 0,hsave -ob qb.authlist qb_auths.dat, $iif($isfile(qb_auths.dat),remove qb_auths.dat)) $iif($hget(qb.blocklist,0).item > 0,hsave -ob qb.blocklist qb_blocks.dat, $iif($isfile(qb_blocks.dat),remove qb_blocks.dat)) } ctcp 1:version:*:{ if (%qb.notify == 1) .ctcpreply $nick VERSION 12( Query Blocker %qb.version for NNScript © 2003-2004 by Phreak 12) } ; here comes the core script on ^*:open:?:*:{ if (%qb.disabled == 1) { return } ; don't block messages from psybnc and from bnc internal chat if ($nick iswm -psyBNC) { return } if (mavine isin $nick) { return } if (int~ isin $nick) { return } if ($nick iswm $me) { return } var %i $comchan($nick,0) while (%i) { var %chans = %chans $iif($nick isop $comchan($nick,%i),@) $+ $iif($nick isvoice $comchan($nick,%i),+) $+ $comchan($nick,%i) dec %i } if ($address($nick,3) == $null) { .msg $nick I'm unable to determine your hostmask. Please join a channel I'm on or wait a few seconds until my IAL is updated. qbmessage Unable to determine hostmask of $sd($nick) $+ , blocking the message $iif(%qb.showmsg,$sd($1-)) $+ . Common channels: $sd($iif(%chans,%chans,none)) halt } var %j 10 while (%j) { dec %j if ($hfind(qb.authlist,$address($nick,%j)) iswm $address($nick,%j)) { return } } haltdef .ignore -pntiu120 $address($nick,3) if (%qb.notify == 1) .msg $nick $replace(%qb.message,,$me,,$nick) inc %qb.blocked if ($hfind(qb.blocklist,$address($nick,3)) !iswm $address($nick,3)) { hadd -m qb.blocklist $address($nick,3) qbmessage $iif(%qb.showmsg,message $sd($1-),A message) from $sd($nick) was blocked. $sd($comchan($nick,0) comchan $+ $iif($comchan($nick,0) > 1,s) $+ : %chans)) if ($away) && (%qb.awaylog == 1) kte_echo $away.logwin $gtd(Query Blocker) A query from $sd($nick) was blocked. Common channels: $sd(%chans) $iif(%qb.showmsg == 0,message: $sd($1-)) if ($balloon.trig) && (q isin %nntray) && (%qb.balloon == 1) { stdll Balloon 1 1 > Queryblocker > query from $puform($nbr($nick) was blocked!) } } else { qbmessage -s $iif(%qb.showmsg,message $sd($1-),A message) from $sd($nick) was blocked. $sd($comchan($nick,0) comchan $+ $iif($comchan($nick,0) > 1,s) $+ : %chans)) } halt } ; menus menu nicklist,query { $iif($1,Query Blocker) .$iif(%qb.notadd == 1,$style(1)) Notify enquirer: %qb.notadd = $iif(%qb.notadd,0,1) .- .$iif(($checkqueryauth($1,0)==1),$style(1)) $+ allow Queries $address($1,0):qb_edit $1 0 .$iif(($checkqueryauth($1,1)==1),$style(1)) $+ allow Queries $address($1,1):qb_edit $1 1 .$iif(($checkqueryauth($1,2)==1),$style(1)) $+ allow Queries $address($1,2):qb_edit $1 2 .$iif(($checkqueryauth($1,3)==1),$style(1)) $+ allow Queries $address($1,3):qb_edit $1 3 .$iif(($checkqueryauth($1,4)==1),$style(1)) $+ allow Queries $address($1,4):qb_edit $1 4 .$iif(($checkqueryauth($1,5)==1),$style(1)) $+ allow Queries $address($1,5):qb_edit $1 5 .$iif(($checkqueryauth($1,6)==1),$style(1)) $+ allow Queries $address($1,6):qb_edit $1 6 .$iif(($checkqueryauth($1,7)==1),$style(1)) $+ allow Queries $address($1,7):qb_edit $1 7 .$iif(($checkqueryauth($1,8)==1),$style(1)) $+ allow Queries $address($1,8):qb_edit $1 8 .$iif(($checkqueryauth($1,9)==1),$style(1)) $+ allow Queries $address($1,9):qb_edit $1 9 } menu menubar { - Query Blocker .$iif(%qb.disabled != 1,$style(1)) Enabled:%qb.disabled = $iif(%qb.disabled != 1,1,0) .$iif(%qb.notadd == 1,$style(1)) Notify enquirer: %qb.notadd = $iif(%qb.notadd,0,1) .- .Setup:qbsetup .Readme:qbreadme - } menu @QueryBlocker { $style(2) [QueryBlocker]:x - clear:qbclwnd clear and close:qbclwnd -c } ; the dialogs dialog -l qbsetup { title "Query Blocker [/qbsetup]" size -1 -1 179 122 option dbu tab "Settings", 1, 0 -2 178 110 box "show messages", 6, 2 11 174 45, tab 1 radio "in active Window", 7, 5 19 54 10, tab 1 radio "in own window", 9, 5 27 51 10, tab 1 radio "never", 10, 5 35 50 10, tab 1 check "log in status window", 11, 71 35 60 10, tab 1 box "Messages", 12, 2 56 175 51, tab 1 check "enable", 16, 139 62 29 10, tab 1 check "show balloon tips", 28, 71 19 50 10, tab 1 check "show in away log", 36, 71 27 50 10, tab 1 box "", 38, 61 14 1 39, tab 1 edit "", 13, 7 72 139 10, tab 1 autohs text "block message (, )", 14, 7 63 79 8, tab 1 button "set", 15, 148 72 21 10, tab 1 edit "", 43, 7 93 139 10, tab 1 autohs text "add message (, ,
)", 42, 7 84 104 8, tab 1 check "enable", 44, 139 83 29 10, tab 1 button "set", 45, 148 93 21 10, tab 1 check "hide query messages", 35, 71 43 68 10, tab 1 tab "Authed", 2 list 17, 3 14 174 80, tab 2 sort size button "Add", 18, 62 95 37 12, tab 2 button "Remove", 19, 101 95 37 12, disable tab 2 button "Clear all", 20, 140 95 37 12, disable tab 2 text "Total:", 23, 3 97 15 8, tab 2 edit "0", 24, 20 96 25 10, tab 2 read tab "Blocked", 3 list 25, 3 14 174 80, tab 3 sort size button "Clear all", 26, 140 95 37 12, disable tab 3 button "Remove", 27, 101 95 37 12, disable tab 3 edit "0", 29, 20 96 25 10, tab 3 read text "Total:", 30, 3 97 15 8, tab 3 tab "Readme", 4 edit "", 34, 3 14 173 92, tab 4 read multi autovs vsbar tab "About", 5 text Query Blocker %qb.version, 31, 102 19 75 8, tab 5 center text "© 2003-2004 by Phreak", 32, 108 30 62 8, tab 5 link "http://www.gerald-online.de/", 33, 53 93 76 8, tab 5 box "Statistics", 21, 3 13 96 42, tab 5 text "$num queries blocked", 39, 8 21 84 8, tab 5 text "$num hostmasks allowed", 41, 8 41 84 8, tab 5 text "$num hostmasks blocked", 40, 8 31 84 8, tab 5 button "Close", 22, 142 110 37 12, ok check "disable blocker", 37, 1 110 52 10 } on *:dialog:qbsetup:*:*:{ if ($devent == init) { mdx MarkDialog $dname $dialog($dname).hwnd mdx SetControlMDX $dname 17,25 ListView report showsel single rowselect > script\mdx\views.mdx did -i $dname 17,25 1 headerdims 200:1 100:2 did -i $dname 17,25 1 headertext + 0 Hostmask + 0 nick mdx SetFont $dname 2 11 300 Tahoma var %i 0 while (%i < $hget(qb.authlist,0).item) { inc %i var %j 0 while (%j < $ial($hget(qb.authlist,%i).item,0)) { inc %j var %authnicks = %authnicks $+ $iif(%j > 1,$chr(44)) $+ $ial($hget(qb.authlist,%i).item,%j).nick } did -a $dname 17 $hget(qb.authlist,%i).item + 0 $iif(%authnicks,%authnicks,unknown) unset %authnicks unset %j } if (%i isnum) { did -ra $dname 24 %i did -e $dname 20 } var %i 0 while (%i < $hget(qb.blocklist,0).item) { inc %i var %j 0 while (%j < $ial($hget(qb.blocklist,%i).item,0)) { inc %j var %authnicks = %authnicks $+ $iif(%j > 1,$chr(44)) $+ $ial($hget(qb.blocklist,%i).item,%j).nick } did -a $dname 25 $hget(qb.blocklist,%i).item + 0 $iif(%authnicks,%authnicks,unknown) unset %authnicks unset %j } if (%i isnum) { did -ra $dname 29 %i did -e $dname 26 } unset %i did $iif(%qb.disabled == 1,-c,-u) $dname 37 did -ra $dname 39 $iif(%qb.blocked,%qb.blocked,0) queries blocked did -ra $dname 40 $hget(qb.blocklist,0).item hostmasks blocked did -ra $dname 41 $hget(qb.authlist,0).item hostmasks allowed did $iif(%qb.messages == 0,-c,-u) $dname 10 did $iif(%qb.messages == 1,-c,-u) $dname 9 did $iif(%qb.messages == 2,-c,-u) $dname 7 did $iif(%qb.balloon == 1,-c,-u) $dname 28 did $iif(%qb.status == 1,-c,-u) $dname 11 did $iif(%qb.notify == 1,-e,-b) $dname 13 did $iif(%qb.notify == 1,-e,-b) $dname 15 did $iif(%qb.notify == 1,-c,-u) $dname 16 did $iif(%qb.showmsg == 1,-u,-c) $dname 35 did $iif(%qb.awaylog == 1,-c,-u) $dname 36 did $iif(%qb.notadd == 1,-e,-b) $dname 43 did $iif(%qb.notadd == 1,-c,-u) $dname 44 did $iif(%qb.notadd == 1,-e,-b) $dname 45 if (!$balloon.trig) did -ub $dname 28 did -ra $dname 13 %qb.message did -ra $dname 43 %qb.addmsg var %i 1 var %rm $read(qblocker.txt,1) while (%rm) { did -a $dname 34 %rm $+ $crlf inc %i %rm = $read(qblocker.txt,%i) } } elseif ($devent == sclick) { if ($did == 1) { } elseif ($did == 7) { %qb.messages = 2 } elseif ($did == 9) { %qb.messages = 1 } elseif ($did == 10) { %qb.messages = 0 } elseif ($did == 11) { %qb.status = $did($dname,11).state if (%qb.status == 0) { kte_echo -s $gtd(Query Blocker) stopped logging to the status window } else { qbmessage -s now logging to the status window } } elseif ($did == 15) { %qb.message = $did($dname,13).text } elseif ($did == 16) { %qb.notify = $did($dname,16).state did $iif($did($dname,16).state == 1,-e,-b) $dname 13 did $iif($did($dname,16).state == 1,-e,-b) $dname 15 } elseif ($did == 17) { did $iif($did($did).sel,-e,-b) $dname 19 } elseif ($did == 18) { dialog -m qbadd qbadd } elseif ($did == 19) { if ($did(17).sel) { if ($input(do yo really want to remove $+(',$gettok($gettok($did(17).seltext,1,9),6,32),',?),y)) { hdel qb.authlist $gettok($gettok($did(17).seltext,1,9),6,32) did -d $dname 17 $did(17).sel did -ra $dname 24 $calc($did(24).text - 1) } } } elseif ($did == 20) { if ($?!="Are you sure you want to remove all hostmasks?") { $iif($hget(qb.authlist,0).item > 0,hfree qb.authlist) did -r $dname 17 did -ra $dname 24 0 qbmessage -s Removed all entries from auth list. } } elseif ($did == 25) { did $iif($did($did).sel,-e,-b) $dname 27 } elseif ($did == 26) { if ($?!="Are you sure you want to remove all hostmasks?") { $iif($hget(qb.blocklist,0).item > 0,hfree qb.blocklist) did -r $dname 25 did -ra $dname 29 0 qbmessage -s Removed all entries from blocked list. } } elseif ($did == 27) { if ($did(25).sel) { if ($input(do yo really want to remove $+(',$gettok($gettok($did(25).seltext,1,9),6,32),',?),y)) { hdel qb.blocklist $gettok($gettok($did(25).seltext,1,9),6,32) did -d $dname 25 $did(25).sel did -ra $dname 29 $calc($did(29).text - 1) } } } elseif ($did == 28) { %qb.balloon = $did($dname,28).state qbmessage -s balloon tips are now $sd($iif(%qb.balloon == 1,enabled,disabled)) } elseif ($did == 33) { run http://www.gerald-online.de } elseif ($did == 35) { %qb.showmsg = $iif($did($dname,35).state,0,1) } elseif ($did == 36) { %qb.awaylog = $did($dname,36).state qbmessage -s away log is now $sd($iif(%qb.awaylog == 1,enabled,disabled)) } elseif ($did == 37) { %qb.disabled = $did($dname,37).state qbmessage -s Blocker is now $sd($iif($did($dname,37).state == 0,enabled,disabled)) } elseif ($did == 44) { %qb.notadd = $did($dname,44).state did $iif($did($dname,44).state == 1,-e,-b) $dname 43 did $iif($did($dname,44).state == 1,-e,-b) $dname 45 } elseif ($did == 45) { %qb.addmsg = $did($dname,43).text } } } dialog -l qbadd { title "Add Hostmask" size -1 -1 189 117 option dbu box "Channel and Nick", 1, 1 1 67 114 combo 2, 4 9 62 50, sort size drop list 3, 3 20 63 83, sort size box "Hostmask", 4, 69 1 118 100 list 5, 71 8 114 80, size button "Add", 6, 150 103 37 12 button "Cancel", 7, 111 103 37 12, cancel edit "", 8, 71 88 114 10 edit "", 9, 18 103 48 10 text "Filter:", 10, 4 104 14 8 } on *:dialog:qbadd:*:*:{ if ($devent == init) { mdx MarkDialog $dname $dialog($dname).hwnd var %i $chan(0) while (%i) { did -a $dname 2 $chan(%i) dec %i } unset %i } elseif ($devent == sclick) { if ($did == 2) { if ($did(2).sel) { did -r $dname 3 var %i $nick($did(2).seltext,0) while (%i) { if ($isauthed($nick($did(2).seltext,%i)) == 0) did -a $dname 3 $iif($nick($did(2).seltext,%i) isop $did(2).seltext,@) $+ $iif($nick($did(2).seltext,%i) isvoice $did(2).seltext,+) $+ $nick($did(2).seltext,%i) dec %i } unset %i } } elseif ($did == 3) { if ($did(3).sel) { did -r $dname 5 var %i 0 while (%i < 10) { did -a $dname 5 $address($iif($left($did(3).seltext,1) isin @ +,$right($did(3).seltext,-1),$did(3).seltext),%i) inc %i } did -c $dname 5 4 did -ra $dname 8 $did(5).seltext unset %i } } elseif ($did == 5) { if ($did(5).sel) { did -ra $dname 8 $did(5).seltext } } elseif ($did == 6) { if ($did(5).sel) { did -a qbsetup 17 $did(8).text + 0 $iif($ial($did(8).text,1).nick,$ial($did(8).text,1).nick,unknown) hadd -m qb.authlist $did(8).text did -ra qbsetup 24 $calc($did(24).text + 1) qbmessage -s Added $sd($iif($ial($did(8).text,1).nick,$ial($did(8).text,1).nick,unknown)) to allow query list with $sd($did(8).text) } } } elseif ($devent == edit) { if ($did == 9) { if ($did(2).sel) { did -r $dname 3 var %i $nick($did(2).seltext,0) while (%i) { if ($isauthed($nick($did(2).seltext,%i)) == 0) && (($did(9).text isin $nick($did(2).seltext,%i)) || ($did(9).text == $null)) did -a $dname 3 $nick($did(2).seltext,%i) dec %i } unset %i } } } } ; some usefull aliases alias qbsetup { dialog -m qbsetup qbsetup } alias -l qb.openwin { if ($window(@QueryBlocker) == $null) { window -znk0 +betns @QueryBlocker } } alias -l qbmessage { if (%qb.status == 1) kte_echo -s $gtd(Query Blocker) $iif($1 iswm -s,$2-,$1-) if (%qb.messages == 1) { qb.openwin aline $iif($1 iswm -s,-p,-hp) @QueryBlocker $sd($time) $iif($1 iswm -s,$2-,$1-) } elseif (%qb.messages == 2) { kte_echo -a $gtd(Query Blocker) $iif($1 iswm -s,$2-,$1-) } return } alias -l isauthed { var %j 0 while (%j < 10) { if ($hfind(qb.authlist,$address($1,%j)) iswm $address($1,%j)) return 1 inc %j } return 0 } alias -l qb_edit { if ($address($1,$2) != $null) { if ($hfind(qb.authlist,$address($1,$2)) iswm $address($1,$2)) { hdel qb.authlist $address($1,$2) qbmessage -s Removed $sd($1) from allow query list with $sd($address($1,$2)) } else { hadd -m qb.authlist $address($1,$2) qbmessage -s Added $sd($1) to allow query list with $sd($address($1,$2)) $iif(%qb.notadd == 0,$sd(without notify)) if (%qb.notadd == 1) .notice $1 $replace(%qb.addmsg,,$me,,$1,
,$address($1,$2)) .ignore -r $address($1,3) } } else { kte_error -a unknown user. Please wait for the IAL to update. } } alias -l qbclwnd { dline @QueryBlocker $line(@QueryBlocker,0) if ($1 iswm -c) { window -c @QueryBlocker } } alias -l checkqueryauth { if ($hfind(qb.authlist,$address($1,$2)) iswm $address($1,$2)) return 1 return 0 } alias qbreadme { if (!$isfile(qblocker.txt)) return window -kf +betl @QBReadme -1 -1 376 392 Lucida Console 12 titlebar @QBReadme loadbuf @QBReadme " $+ qblocker.txt $+ " sline @QBReadme 25 } ; –––––––––––––––––––––––––––––––––––––––– ; End of file ; ––––––––––––––––––––––––––––––––––––––––