AutoOp Mode (+w) List (Access List)

By Merbo on Jul 30, 2011

Screenshots

This will list all the autoop (+w) modes in your channel. Useful for networks without services or making an autoop list services-independant. This mode is only on InspIRCd with the module m_autoop module loaded, to my knowledge.
Right click a channel and click Access List.

raw 910:*: {
  if (%wlist.open == true) {
    if ($left($right($3,- $+ $pos($3,:,1)),2) === R:) {
      did -a WList 1 + $+ $left($left($3,$pos($3,:,1)),1) on nickserv account $right($right($3,- $+ $pos($3,:,1)),-2) set by $4 at $asctime($5) 
    }
    elseif ($left($right($3,- $+ $pos($3,:,1)),2) === j:) {
      if ($right($left($3,5),1) !isin ~&@%+) {
        did -a WList 1 + $+ $left($left($3,$pos($3,:,1)),1) on user in channel $right($3,7) set by $4 at $asctime($5) 
      }
      elseif ($right($left($3,5),1) == +) {
        did -a WList 1 + $+ $left($left($3,$pos($3,:,1)),1) on user in channel $right($3,7) with mode +v (+) set by $4 at $asctime($5)
      }
      elseif ($right($left($3,5),1) == %) {
        did -a WList 1 + $+ $left($left($3,$pos($3,:,1)),1) on user in channel $right($3,7) with mode +h (%) set by $4 at $asctime($5)
      }
      elseif ($right($left($3,5),1) == @) {
        did -a WList 1 + $+ $left($left($3,$pos($3,:,1)),1) on user in channel $right($3,7) with mode +o (@) set by $4 at $asctime($5)
      }
      elseif ($right($left($3,5),1) == &) {
        did -a WList 1 + $+ $left($left($3,$pos($3,:,1)),1) on user in channel $right($3,7) with mode +a (&) set by $4 at $asctime($5)
      }
      elseif ($right($left($3,5),1) == ~) {
        did -a WList 1 + $+ $left($left($3,$pos($3,:,1)),1) on user in channel $right($3,7) with mode +q (~) set by $4 at $asctime($5)
      }
    }
    elseif ($left($right($3,- $+ $pos($3,:,1)),2) === z:) {
      did -a WList 1 + $+ $left($left($3,$pos($3,:,1)),1) on ssl fingerprint $right($3,-4) set by $4 at $asctime($5)
    }
    else {
      did -a WList 1 + $+ $left($left($3,$pos($3,:,1)),1) on hostmask $right($3,- $+ $pos($3,:,1)) set by $4 at $asctime($5)
    }
    halt
  }
}
raw 911:*: {
  if (%wlist.open == true) {
    halt
  }
}
on 1:dialog:WList:sclick:3: {
  if ($did(Wlist,1).seltext != $null) {
    if ($?!="Are you sure you want to delete this entry?" == $true) {
      tokenize 32 $did(WList,1).seltext
      if ($3 == ssl) {
        /mode %wlist.chan -w $+($right($1,1),:z:,$5)
      }
      elseif ($3 == user) {
        if ($left($mid($10,2),1) isin +%@&~) {
          /mode %wlist.chan -w $+($right($1,1),:j:,$left($mid($10,2),1),$6)
        }
        else {
          /mode %wlist.chan -w $+($right($1,1),:j:,$6)
        }
      }
      elseif ($3 == nickserv) {
        /mode %wlist.chan -w $+($right($1,1),:R:,$5)
      }
      elseif ($3 == hostmask) {
        /mode %wlist.chan -w $+($right($1,1),:,$4)
      }
    }
  }
}
dialog WList {
  title "mIRC Access Mode (+w) List"
  size -1 -1 302 188
  option dbu
  tab "List", 4, 4 -2 296 184
  button "Refresh", 2, 5 12 37 12, tab 4
  button "Delete selected access entry", 3, 205 12 85 12, tab 4
  list 1, 4 24 296 159, tab 4 size autovs
  tab "Add", 5
  radio "+v", 6, 12 18 21 10, tab 5, group
  radio "+h", 7, 12 29 23 10, tab 5
  radio "+o", 8, 12 40 20 10, tab 5
  radio "+a", 9, 12 51 22 10, tab 5
  radio "+q", 10, 12 62 22 10, tab 5
  radio "+q", 18, 63 39 50 10, tab 5, group
  radio "+a", 19, 63 47 50 10, tab 5
  radio "+o", 20, 63 55 50 10, tab 5
  radio "+h", 21, 63 63 50 10, tab 5
  radio "+v", 22, 63 71 50 10, tab 5
  radio "ison channnel", 16, 62 20 45 10, tab 5, group
  radio "Hostmask", 24, 160 52 50 10, tab 5
  radio "Is SSL Fingerprint", 27, 160 19 59 10, tab 5
  radio "Is NickServ Account", 29, 225 49 63 10, tab 5
  edit "nickserv account", 30, 226 59 50 10, tab 5 autohs
  edit "hostmask", 13, 159 62 60 10, tab 5 autohs
  button "Add", 15, 263 170 37 12, tab 5
  box "Mode", 14, 11 12 50 63, tab 5
  box "Ison", 11, 60 12 98 71, tab 5
  edit "#channel", 23, 105 20 50 10, tab 5 autohs
  check "With state:", 17, 63 29 50 10, tab 5
  box "ssl Fingerprint", 25, 157 12 107 30, tab 5
  edit "Fingerprint", 26, 160 29 101 10, tab 5 autohs
  box "is Hostmask", 12, 157 41 65 34, tab 5
}
on 1:dialog:WList:sclick:16: {
  did -eu WList 17
}
on 1:dialog:WList:sclick:17: {
  if ($did(WList,17).state == 1) {
    did -eu WList 18-22
  }
  else {
    did -bu WList 18-22
  }
}
on 1:dialog:WList:sclick:24,27: {
  did -bu WList 18-22
  did -bu WList 17
}
on 1:dialog:WList:sclick:15: {
  if ($did(WList,6).state == 1) {
    if ($did(WList,16).state == 1) {
      if ($did(WList,18).state == 1) {
        /mode %wlist.chan +w v:j:~ $+ $did(WList,23).text
      }
      elseif ($did(WList,19).state == 1) {
        /mode %wlist.chan +w v:j:& $+ $did(WList,23).text
      }
      elseif ($did(WList,20).state == 1) {
        /mode %wlist.chan +w v:j:@ $+ $did(WList,23).text
      }
      elseif ($did(WList,21).state == 1) {
        /mode %wlist.chan +w v:j:% $+ $did(WList,23).text
      }
      elseif ($did(WList,22).state == 1) {
        /mode %wlist.chan +w v:j:+ $+ $did(WList,23).text
      }
      else {
        /mode %wlist.chan +w v:j: $+ $did(WList,23).text
      }
    }
    elseif ($did(WList,24).state == 1) {
      /mode %wlist.chan +w v: $+ $did(WList,13).text
    }
    elseif ($did(WList,27).state == 1) {
      /mode %wlist.chan +w v:z: $+ $did(WList,26).text
    }
    elseif ($did(WList,29).state == 1) {
      /mode %wlist.chan +w v:R: $+ $did(WList,30).text
    }
  }
  elseif ($did(WList,7).state == 1) {
    if ($did(WList,16).state == 1) {
      if ($did(WList,18).state == 1) {
        /mode %wlist.chan +w h:j:~ $+ $did(WList,23).text
      }
      elseif ($did(WList,19).state == 1) {
        /mode %wlist.chan +w h:j:& $+ $did(WList,23).text
      }
      elseif ($did(WList,20).state == 1) {
        /mode %wlist.chan +w h:j:@ $+ $did(WList,23).text
      }
      elseif ($did(WList,21).state == 1) {
        /mode %wlist.chan +w h:j:% $+ $did(WList,23).text
      }
      elseif ($did(WList,22).state == 1) {
        /mode %wlist.chan +w h:j:+ $+ $did(WList,23).text
      }
      else {
        /mode %wlist.chan +w h:j: $+ $did(WList,23).text
      }
    }
    elseif ($did(WList,24).state == 1) {
      /mode %wlist.chan +w h: $+ $did(WList,13).text
    }
    elseif ($did(WList,27).state == 1) {
      /mode %wlist.chan +w h:z: $+ $did(WList,26).text
    }
    elseif ($did(WList,29).state == 1) {
      /mode %wlist.chan +w h:R: $+ $did(WList,30).text
    }
  }
  elseif ($did(WList,8).state == 1) {
    if ($did(WList,16).state == 1) {
      if ($did(WList,18).state == 1) {
        /mode %wlist.chan +w o:j:~ $+ $did(WList,23).text
      }
      elseif ($did(WList,19).state == 1) {
        /mode %wlist.chan +w o:j:& $+ $did(WList,23).text
      }
      elseif ($did(WList,20).state == 1) {
        /mode %wlist.chan +w o:j:@ $+ $did(WList,23).text
      }
      elseif ($did(WList,21).state == 1) {
        /mode %wlist.chan +w o:j:% $+ $did(WList,23).text
      }
      elseif ($did(WList,22).state == 1) {
        /mode %wlist.chan +w o:j:+ $+ $did(WList,23).text
      }
      else {
        /mode %wlist.chan +w o:j: $+ $did(WList,23).text
      }
    }
    elseif ($did(WList,24).state == 1) {
      /mode %wlist.chan +w o: $+ $did(WList,13).text
    }
    elseif ($did(WList,27).state == 1) {
      /mode %wlist.chan +w o:z: $+ $did(WList,26).text
    }
    elseif ($did(WList,29).state == 1) {
      /mode %wlist.chan +w o:R: $+ $did(WList,30).text
    }
  }
  elseif ($did(WList,9).state == 1) {
    if ($did(WList,16).state == 1) {
      if ($did(WList,18).state == 1) {
        /mode %wlist.chan +w a:j:~ $+ $did(WList,23).text
      }
      elseif ($did(WList,19).state == 1) {
        /mode %wlist.chan +w a:j:& $+ $did(WList,23).text
      }
      elseif ($did(WList,20).state == 1) {
        /mode %wlist.chan +w a:j:@ $+ $did(WList,23).text
      }
      elseif ($did(WList,21).state == 1) {
        /mode %wlist.chan +w a:j:% $+ $did(WList,23).text
      }
      elseif ($did(WList,22).state == 1) {
        /mode %wlist.chan +w a:j:+ $+ $did(WList,23).text
      }
      else {
        /mode %wlist.chan +w a:j: $+ $did(WList,23).text
      }
    }
    elseif ($did(WList,24).state == 1) {
      /mode %wlist.chan +w a: $+ $did(WList,13).text
    }
    elseif ($did(WList,27).state == 1) {
      /mode %wlist.chan +w a:z: $+ $did(WList,26).text
    }
    elseif ($did(WList,29).state == 1) {
      /mode %wlist.chan +w a:R: $+ $did(WList,30).text
    }
  }
  elseif ($did(WList,10).state == 1) {
    if ($did(WList,16).state == 1) {
      if ($did(WList,18).state == 1) {
        /mode %wlist.chan +w q:j:~ $+ $did(WList,23).text
      }
      elseif ($did(WList,19).state == 1) {
        /mode %wlist.chan +w q:j:& $+ $did(WList,23).text
      }
      elseif ($did(WList,20).state == 1) {
        /mode %wlist.chan +w q:j:@ $+ $did(WList,23).text
      }
      elseif ($did(WList,21).state == 1) {
        /mode %wlist.chan +w q:j:% $+ $did(WList,23).text
      }
      elseif ($did(WList,22).state == 1) {
        /mode %wlist.chan +w q:j:+ $+ $did(WList,23).text
      }
      else {
        /mode %wlist.chan +w q:j: $+ $did(WList,23).text
      }
    }
    elseif ($did(WList,24).state == 1) {
      /mode %wlist.chan +w q: $+ $did(WList,13).text
    }
    elseif ($did(WList,27).state == 1) {
      /mode %wlist.chan +w q:z: $+ $did(WList,26).text
    }
    elseif ($did(WList,29).state == 1) {
      /mode %wlist.chan +w q:R: $+ $did(WList,30).text
    }
  }
}
on 1:dialog:WList:init:0: {
  .set %wlist.open True
  did -bu WList 18-22
}
on 1:dialog:WList:close:0: {
  .set %wlist.open False
}
alias wlist {
  if ($1) && (!$2) {
    .dialog -m WList WList
    .mode $1 w
  }
  else {
    echo -a Invalid syntax. Use '/wlist <chan>' to see the +w list for <chan>
  }
}
menu channel {
  .Access List:set %wlist.chan $chan | /wlist %wlist.chan
}
on 1:dialog:WList:sclick:2: {
  .did -r WList 1
  .mode %wlist.chan w
}
on 1:RAWMODE:%wlist.chan: {
  if (?w iswm $1) && (%wlist.open == true) {
    .did -r WList 1
    .mode %wlist.chan w
  }
}

Comments

Sign in to comment.
Merbo   -  Aug 04, 2011

Got it done myself, as well as it got updated for other types of ExtAccess

 Respond  
Jethro   -  Jul 31, 2011

Right on, jaytea, and thanks for your ever so enlightening input.

 Respond  
jaytea   -  Jul 31, 2011

(radio buttons are automatically grouped)

meaning you need no extra code to control radio button unchecking ;)

 Respond  
Jethro   -  Jul 31, 2011

What the...there's nothing in the code tag below. I sure hope this is not a teaser.

 Respond  
jaytea   -  Jul 31, 2011

guys..

on *:dialog:wlist:sclick:6-10:{
  did -u wlist 6-10
  did -c wlist $did
}

in fact, now that i look at the dialog definition, you can actually shorten it to this:

(radio buttons are automatically grouped)

 Respond  
Jethro   -  Jul 30, 2011

il look at it more later...;xIs this some sort of a TV episode called "Napa Takes it Up a Notch?" lol
Might as well say, "To Be Continued..." :P

You can shorten it further as such:

on *:dialog:wlist:sclick:6-10:{
  var %a = 6,8-10 , %b = 6,7,9,10 , %c = 6-8,10
  did -u wlist $replacex($did,6,7-10,7,%a,8,%b,9,%c,10,6-9)
}
 Respond  
napa182   -  Jul 30, 2011

A lot of unused space on the dialog. Maybe make it smaller an incorporate hsbar in the list box for the addys so you don't have to make the dialog so dang big. But to each their own I guess.

just on a fast look at your snippet you can take this:

on 1:dialog:WList:sclick:6: {
  did -u WList 7
  did -u WList 8
  did -u WList 9
  did -u WList 10
}
on 1:dialog:WList:sclick:7: {
  did -u WList 6
  did -u WList 8
  did -u WList 9
  did -u WList 10
}
on 1:dialog:WList:sclick:8: {
  did -u WList 6
  did -u WList 7
  did -u WList 9
  did -u WList 10
}
on 1:dialog:WList:sclick:9: {
  did -u WList 6
  did -u WList 7
  did -u WList 8
  did -u WList 10
}
on 1:dialog:WList:sclick:10: {
  did -u WList 6
  did -u WList 7
  did -u WList 8
  did -u WList 9
}

and do this:

on 1:dialog:WList:sclick:6: {
  did -u WList 7-10
}
on 1:dialog:WList:sclick:7: {
  did -u WList 6,8-10
}
on 1:dialog:WList:sclick:8: {
  did -u WList 6,7,9,10
}
on 1:dialog:WList:sclick:9: {
  did -u WList 6-8,10
}
on 1:dialog:WList:sclick:10: {
  did -u WList 6-9
}

Or even this way..

on 1:dialog:WList:sclick:*: {
  if ($did = 6) { did -u WList 7-10 }
  elseif ($did = 7) { did -u WList 6,8-10 }
  elseif ($did = 8) { did -u WList 6,7,9,10 }
  elseif ($did = 9) { did -u WList 6-8,10 }
  elseif ($did = 10) { did -u WList 6-9 }
}

il look at it more later...;x

 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.