| | 
 
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 | 
Am using this to check version on join...Is it possible to store bad script names in text file instaed of var? %CTCP MurderScript stealth.Inviter echoX inviter ozinviter echoxinviter VirusScript 
ON !@*:JOIN:#: {
if (%CTCPREPLY == off) || !%CTCPREPLY || ($nick isop $chan) { return }
if !$($+(%,version.check,.,$fulladdress),2) {
.ctcp $nick VERSION 
set -e $+(%,version.check,.,$fulladdress) 1
}
}
on *:CTCPREPLY:VERSION*: {
var %i = 0
while (%i < $numtok(%ctcp,32)) {
inc %i
var %ctcpreply = $gettok(%ctcp,%i,32)
if ($istok($strip($1-),%ctcpreply,32) == $true) {
VAR %c = 0
while (%c < $comchan($nick,0)) { 
inc %c
if ($me isop $comchan($nick,%c)) {
ban -ku3600 $comchan($nick,%c) $nick 2 14Inviter Script Detected 
}
}
}
}
}
 |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2004 Posts: 7,168 Hoopy frood |  
|   Hoopy frood Joined:  Aug 2004 Posts: 7,168 | 
Sure, you'll just have to do your comparison to read from the text file, rather than checking the token, which, for something like this would actually be better, since you'd also be able to allow for version names that include spaces.
 |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 | 
Can this also be codes so that I dont see or get the version reply in a pm window and just kick ban when it finds a bad script?? |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2004 Posts: 7,168 Hoopy frood |  
|   Hoopy frood Joined:  Aug 2004 Posts: 7,168 | 
Create a file in the mIRC installation directory called CTCP.txt Have each line in the file contain one version reply that you want the ban for. Ops can turn the CTCP check on/off via a message to the bot using !ctcp on (or !ctcp off) in either the channel or pm.  If the command is sent via pm, then the ctcp checking is turned on/off for all channels in which the person has ops. on $*:text:!ctcp[onoff]:*:{
  if $nick isop $chan {
    set $+(%,ctcp,.,$chan) $iif($2 == on,$true,$false)
  }
  elseif !$chan {
    var %a = 1, %b = $comchan($nick,0)
    while %a <= %b {
      if $nick isop $comchan($nick,%a) {
        set $+(%,ctcp,.,$comchan($nick,%a)) $iif($2 == on,$true,$false)
      }
      inc %a
    }
  }
}
on @*:join:#:{
  if $($+(%,ctcp,.,$chan),2) && !$($+(%,version.check,.,$fulladdress),2) {
    .ctcp $nick VERSION 
    set -e $+(%,version.check,.,$fulladdress) $chan
  }
}
on ^*:ctcpreply:version*:{
  if $read(ctcp.txt,nwt,$2-) {
    .ban -ku3600 $($+(%,version.check,.,$fulladdress),2) $nick
  }
}
 |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 | 
How can I check if its working? Will i see %ctcp On in var? Because its not kicking or its not working. 
Last edited by Garou; 26/05/07 08:46 PM.
 |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2004 Posts: 7,168 Hoopy frood |  
|   Hoopy frood Joined:  Aug 2004 Posts: 7,168 | 
on $*:text:!ctcp[onoff]:*:{
  if $nick isop $chan {
    set $+(%,ctcp,.,$chan) $iif($2 == on,$true,$false)
    .notice $nick CTCP Version check for $chan is now $iif($($+(%,ctcp,.,$chan),2),On,Off)
  }
  elseif !$chan {
    var %a = 1, %b = $comchan($nick,0)
    while %a <= %b {
      if $nick isop $comchan($nick,%a) {
        set $+(%,ctcp,.,$comchan($nick,%a)) $iif($2 == on,$true,$false)
        .notice $nick CTCP Version check for $comchan($nick,%a) is now $iif($($+(%,ctcp,.,$comchan($nick,%a)),2),On,Off)
      }
      inc %a
    }
  }
}
on @*:join:#:{
  if $($+(%,ctcp,.,$chan),2) && !$($+(%,version.check,.,$fulladdress),2) {
    .ctcp $nick VERSION 
    set -e $+(%,version.check,.,$fulladdress) $chan
  }
}
on ^*:ctcpreply:version*:{
  if $read(ctcp.txt,nwt,$2-) {
    .ban -ku3600 $($+(%,version.check,.,$fulladdress),2) $nick
  }
}Added a message to show to the person that turns the checking on/off the status of the CTCP checking for the relative channel. Please note the the version check must match whst's in the text file exactly (case insensitive). Eg: RusselB's Alias Tracker  won't match RusselB's Alias Tracker v2.0 |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 |  |  |  |  
| 
| 
|  |  
| 
Joined:  Jun 2006 Posts: 506 Fjord artisan |  
|   Fjord artisan Joined:  Jun 2006 Posts: 506 | 
At a glance I'd suggest changing this line on $*:text:!ctcp[onoff]:*:{
 to this on $*:text:/^!ctcp (on|off)/Si:*:{Edit: Plus the version reply... on ^*:ctcpreply:version*:{
  if $($+(%,version.check,.,$fulladdress),2) {
    if $read(ctcp.txt,nwt,$2-) { ban -ku3600 $($+(%,version.check,.,$fulladdress),2) $nick 2 Bad script! }
    unset $+(%,version.check,.,$fulladdress),
    halt
  }
}
Last edited by deegee; 29/05/07 05:00 PM.
 |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 | 
Ok the on anf off is working but its not kicking. 
Last edited by Garou; 30/05/07 01:10 PM.
 |  |  |  
| 
| 
|  |  
| 
Joined:  Jun 2006 Posts: 506 Fjord artisan |  
|   Fjord artisan Joined:  Jun 2006 Posts: 506 | 
Remove the ^ from this line: on [color:red]^*:ctcpreply:version*:{[/color]It should be: on *:ctcpreply:version*:{
 |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 | 
Thx its working fine now. Is it possible not to version someone that just login a few minutes ago like antispam bots that cycle channels? 
Last edited by Garou; 30/05/07 04:59 PM.
 |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 | 
Can this be change to check any matching word on the line not just the exact word from the CTCP.txt ? My ctcp.txt reads like this: oz3 stealth.Inviter  echoX  inviter ozinviter   
on $*:text:/^!ctcp (on|off)/Si:*:{ 
  if $nick isop $chan {
    set $+(%,ctcp,.,$chan) $iif($2 == on,$true,$false)
    .notice $nick CTCP Version check for $chan is now $iif($($+(%,ctcp,.,$chan),2),On,Off)
  }
  elseif !$chan {
    var %a = 1, %b = $comchan($nick,0)
    while %a <= %b {
      if $nick isop $comchan($nick,%a) {
        set $+(%,ctcp,.,$comchan($nick,%a)) $iif($2 == on,$true,$false)
        notice $nick CTCP Version check for $comchan($nick,%a) is now $iif($($+(%,ctcp,.,$comchan($nick,%a)),2),On,Off)
      }
      inc %a
    }
  }
}
on @*:join:#:{
  if $($+(%,ctcp,.,$chan),2) && !$($+(%,version.check,.,$fulladdress),2) {
    .ctcp $nick VERSION 
    set -e $+(%,version.check,.,$fulladdress) $chan
  }
}
on *:ctcpreply:version*:{ 
  if $($+(%,version.check,.,$fulladdress),2) {
    if $read(ctcp.txt,nwt,$2-) { ban -k $($+(%,version.check,.,$fulladdress),2) $nick 2 14Bad Script Detected }
    unset $+(%,version.check,.,$fulladdress),
    halt
  }
}
Last edited by Garou; 05/06/07 06:45 PM.
 |  |  |  
| 
| 
|  |  
| 
Joined:  Jun 2006 Posts: 506 Fjord artisan |  
|   Fjord artisan Joined:  Jun 2006 Posts: 506 | 
If you mean if one of the lines in  ctcp.txt is a wildmatch to the version reply, try this  on *:ctcpreply:version*:{
  if $($+(%,version.check,.,$fulladdress),2) {
    if !$hget(vercheck) { hmake vercheck 10 | hload -n vercheck CTCP.txt }
    if $hfind(vercheck,$strip($2-),1,R).data { ban -k $($+(%,version.check,.,$fulladdress),2) $nick 2 14Bad Script Detected }
    unset $+(%,version.check,.,$fulladdress),
    halt
  }
}It will, for  instance, match "echoX" to  echoXscript echoX echoXetc
 |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 |  |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 | 
Not working, exemple: i want to ban #Music-Central or any single word from this version reply:  Central MP3 Script v6.137d beta (get it in #Music-Central  on DALnet or from www.jalyn.com/mco/index.html )
Last edited by Garou; 07/06/07 03:18 PM.
 |  |  |  
| 
| 
|  |  
| 
Joined:  Jun 2006 Posts: 506 Fjord artisan |  
|   Fjord artisan Joined:  Jun 2006 Posts: 506 | 
What I didn't give you was a way to update the table from the textfile, sorry. Replace if !$hget(vercheck) { hmake vercheck 10 | hload -n vercheck CTCP.txt }with 
    if !$hget(vercheck) { hmake vercheck 10 }
    if $lines(CTCP.txt) { hdel -w vercheck * | hload -n vercheck CTCP.txt }
Also be aware, that this method is case-sensitive. ("#music-central" won't match "#Music-Central") |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 | 
Not working, no ban on join. 
 on $*:text:/^!ctcp (on|off)/Si:*:{
 if $nick isop $chan {
 set $+(%,ctcp,.,$chan) $iif($2 == on,$true,$false)
 }
 elseif !$chan {
 var %a = 1, %b = $comchan($nick,0)
 while %a <= %b {
 if $nick isop $comchan($nick,%a) {
 set $+(%,ctcp,.,$comchan($nick,%a)) $iif($2 == on,$true,$false)
 
 }
 inc %a
 }
 }
 }
 on @*:join:#:{
 if $($+(%,ctcp,.,$chan),2) && !$($+(%,version.check,.,$address),2) {
 .ctcp $nick VERSION
 set -e $+(%,version.check,.,$address) $chan
 }
 }
 }
 
 on *:ctcpreply:version*:{
 if $($+(%,version.check,.,$fulladdress),2) {
 if !$hget(vercheck) { hmake vercheck 10 }
 if $lines(CTCP.txt) { hdel -w vercheck * | hload -n vercheck CTCP.txt }
 if $hfind(vercheck,$strip($2-),1,R).data { ban -k $($+(%,version.check,.,$fulladdress),2) $nick 2 14Bad Script Detected }
 unset $+(%,version.check,.,$fulladdress),
 halt
 }
 }
 
 
 
 |  |  |  
| 
| 
|  |  
| 
Joined:  Jun 2006 Posts: 506 Fjord artisan |  
|   Fjord artisan Joined:  Jun 2006 Posts: 506 | 
Look at the variables being set, and checked. Somewhere along the line you changed some to $address instead of $fulladdress, but left others.   In the join event it is!$($+(%,version.check,.,[color:red]$address ),2)[/color] $+(%,version.check,.,[color:red]$address )[/color]  while in the ctcpreply event it is$($+(%,version.check,.,[color:red]$fulladdress ),2)[/color]$+(%,version.check,.,[color:red]$fulladdress )[/color] They should all  be the same.PLUS:  There is an extra closing brace in the join event, so the ctcp event won't even be triggered. |  |  |  
| 
| 
|  |  
| 
Joined:  Aug 2006 Posts: 469 Fjord artisan |  
| OP   Fjord artisan Joined:  Aug 2006 Posts: 469 | 
This is wat I have now, where is the error?  
 on $*:text:/^!ctcp (on|off)/Si:*:{
 if $nick isop $chan {
 set $+(%,ctcp,.,$chan) $iif($2 == on,$true,$false)
 }
 elseif !$chan {
 var %a = 1, %b = $comchan($nick,0)
 while %a <= %b {
 if $nick isop $comchan($nick,%a) {
 set $+(%,ctcp,.,$comchan($nick,%a)) $iif($2 == on,$true,$false)
 
 }
 inc %a
 }
 }
 }
 on @*:join:#:{
 if $($+(%,ctcp,.,$chan),2) && !$($+(%,version.check,.,$fulladdress),2) {
 .ctcp $nick VERSION
 set -e $+(%,version.check,.,$fulladdress),2) $chan
 }
 }
 }
 
 on *:ctcpreply:version*:{
 if !$($+(%,version.check,.,$fulladdress),2) {
 if !$hget(vercheck) { hmake vercheck 10 }
 if $lines(CTCP.txt) { hdel -w vercheck * | hload -n vercheck CTCP.txt }
 if $hfind(vercheck,$strip($2-),1,R).data { ban -k $($+(%,version.check,.,$fulladdress),2) $nick 2 14Bad Script Detected }
 unset $+(%,version.check,.,$fulladdress),
 halt
 }
 }
 
 
 |  |  |  
| 
| 
|  |  
| 
Joined:  Jun 2006 Posts: 506 Fjord artisan |  
|   Fjord artisan Joined:  Jun 2006 Posts: 506 | 
PLUS: There is an extra closing brace in the join event, so the ctcp event won't even be triggered. ^ There is the error. Check that your opening/closing braces are matched. You can use the {} button in the script editor to check them. on @*:join:#:{
  if $($+(%,ctcp,.,$chan),2) && !$($+(%,version.check,.,$fulladdress),2) {
    .ctcp $nick VERSION
    set -e $+(%,version.check,.,$fulladdress),2) $chan
  }
}
} <----  This one should not be here! |  |  |  
 | 
 |