rendered paste bodymenu Channel {
Check Access: CheckAccess
}
alias CheckAccess {
CheckAccess.GetData
}
#CheckAccess off
on ^*:NOTICE:*:*:{
if ($nick == ChanServ) {
haltdef
if ($1- == Access denied.) {
echo 4 -a Your access level for this channel is not high enough.
.timer 1 5 .disable #CheckAccess
}
elseif ((*access list* !iswm $1-) && (*Num* !iswm $1-) && (*Lev* !iswm $1-)) {
write AccessChecker_temp.txt $regsubex($1-,/ *\d+ +(-?\d+ +.+)/,\1)
}
elseif (*End of access list* iswm $1-) {
CheckAccess.HandleEnd
}
elseif ($regex($1-,/Access list for (.+):/i)) {
set %CheckAccess.channel $regml(1)
echo 3 -a Access list for $regml(1) is being processed...
}
}
}
#CheckAccess end
alias -l CheckAccess.HandleEnd {
CheckAccess.Sortfile
if ($dialog(CheckAccess.dialog) == $null) {
CheckAccess.OpenDialog
}
else {
loadbuf $lines(AccessChecker_temp2.txt) -or CheckAccess.dialog 1 AccessChecker_temp_sorted.txt
did -ra CheckAccess.dialog 8 Entries: $lines(AccessChecker_temp2.txt)
}
.disable #CheckAccess
}
alias -l CheckAccess.GetData {
.enable #CheckAccess
.remove AccessChecker_temp.txt
.remove AccessChecker_temp_sorted.txt
.msg chanserv access $iif(%CheckAccess.channel,$v1,#) list
}
alias -l CheckAccess.Sortfile {
.remove AccessChecker_temp_sorted.txt
filter -ffa AccessChecker_temp.txt AccessChecker_temp_sorted.txt $iif($1 == Name,CheckAccess.Sortfile.ByName,CheckAccess.Sortfile.ByAccess)
}
alias -l CheckAccess.Sortfile.ByAccess {
var %line1 = $regsubex($1,/(-?\d+) .*/,\1)
var %line2 = $regsubex($2,/(-?\d+) .*/,\1)
if (%line1 < %line2) {
return 1
}
elseif (%line1 == %line2) {
var %line1text = $regsubex($1,/-?\d+ (.*)/,\1)
var %line2text = $regsubex($2,/-?\d+ (.*)/,\1)
if (%line1text < %line2text) {
return -1
}
else {
return 1
}
}
else {
return -1
}
}
alias -l CheckAccess.Sortfile.ByName {
var %line1text = $regsubex($1,/-?\d+ (.*)/,\1)
var %line2text = $regsubex($2,/-?\d+ (.*)/,\1)
if (%line1text < %line2text) {
return -1
}
else {
return 1
}
}
alias -l CheckAccess.OpenDialog {
dialog -md CheckAccess.dialog CheckAccess.dialog
}
dialog -l CheckAccess.dialog {
title Check Access - %CheckAccess.channel
size -1 -1 205 210
option dbu
list 1, 5 10 110 190
button "Update", 2, 130 10 70 20
button "Sort by Name", 3, 130 35 70 20
button "Sort by Access", 4, 130 60 70 20
button "Add", 5, 130 85 70 20
button "Edit", 6, 130 110 70 20
button "Remove", 7, 130 135 70 20
text "Entries:", 8, 5 200 40 10
}
on *:DIALOG:CheckAccess.dialog:init:0:{
loadbuf $lines(AccessChecker_temp2.txt) -or $dname 1 AccessChecker_temp_sorted.txt
did -ra CheckAccess.dialog 8 Entries: $lines(AccessChecker_temp_sorted.txt)
}
on *:DIALOG:CheckAccess.dialog:sclick:2:{
CheckAccess.GetData
}
on *:DIALOG:CheckAccess.dialog:sclick:3:{
CheckAccess.Sortfile Name
loadbuf $lines(AccessChecker_temp_sorted.txt) -or $dname 1 AccessChecker_temp_sorted.txt
}
on *:DIALOG:CheckAccess.dialog:sclick:4:{
CheckAccess.Sortfile
loadbuf $lines(AccessChecker_temp_sorted.txt) -or $dname 1 AccessChecker_temp_sorted.txt
}
on *:DIALOG:CheckAccess.dialog:sclick:5:{
cs access %CheckAccess.channel add $$?="Nick?" $$?="Access?"
CheckAccess.GetData
dialog -v $dname
}
on *:DIALOG:CheckAccess.dialog:sclick:6:{
if ($did(1).seltext) {
cs access %CheckAccess.channel add $regsubex($v1,/-?\d+ (.*)/,\1) $$?="New Access Level?"
CheckAccess.GetData
}
else {
noop $input(You did not select any name.,ow,Selection Empty)
}
dialog -v $dname
}
on *:DIALOG:CheckAccess.dialog:sclick:7:{
if ($did(1).seltext && $input(Are you sure you want to delete $did(1).seltext $+ ?,w,Confirm)) {
cs access %CheckAccess.channel del $regsubex($did(1).seltext,/-?\d+ (.*)/,\1)
CheckAccess.GetData
}
else {
noop $input(You did not select any name.,ow,Selection Empty)
}
dialog -v $dname
}
on *:DIALOG:CheckAccess.dialog:close:*:{
.remove AccessChecker_temp.txt
.remove AccessChecker_temp_sorted.txt
unset %CheckAccess.channel
}