Peace & Protection 4.00 — File Browser
PeaceProtection4.00v4.0 / PeaceProtection4.00v4.0 / SCRIPT / BANLIST.MRC
BANLIST.MRC — 17.17 KB — Download this file
; #= P&P -rs
; ########################################
; Peace & Protection
; Banlist / etc. editing, and blacklist
; ########################################
;
; Banlist/etc. editing
;
alias -l _openlist if ($window($1)) clear $1 | else _window 2.6 -nhl -t3,30,39,50 $1 -1 -1 -1 -1 @banlist | _windowreg $1 _closebanlist
alias -l _addlist if ($3) aline $1 $+ $2 $+ $_round($calc(($ctime - $4) / 86400),2) $+ $+ $3 | else aline $1 $+ $2 $+
alias -l _finlist {
.disable #- $+ $1list
if ($window(@ [ $+ [ $1 ] $+ -list- $+ [ $2 ] ] ) == $null) {
if ($halted) return
<empty.list> $2 $1
halt
}
iline @ $+ $1 $+ -list- $+ $2 1 Double-click to toggle an entry. (right-click for other options)
iline @ $+ $1 $+ -list- $+ $2 2 Any changes will $:b(not) be made until you close the window.
iline @ $+ $1 $+ -list- $+ $2 3
iline @ $+ $1 $+ -list- $+ $2 4 $+ $1 $+ Days old Set by
iline @ $+ $1 $+ -list- $+ $2 5 $+ $_ultab(6,8,6)
window -awb @ $+ $1 $+ -list- $+ $2
_banupd @ $+ $1 $+ -list- $+ $2
halt
}
#-banlist off
raw &367:*:if ($window(@Ban-list- [ $+ [ $2 ] ] ) == $null) _openlist @Ban-list- $+ $2 | _addlist @Ban-list- $+ $2- | halt
#-banlist end
raw 367:*:{
if ($2 == %-scanchan) {
var %num = $numtok(%-scanunban,32)
:loop
if (($gettok(%-scanunban,%num,32) iswm $3) || ($3 iswm $gettok(%-scanunban,%num,32))) %-scanhit = %-scanhit $3
if (%num > 1) { dec %num | goto loop }
}
else {
if ($halted) return | .enable #-banlist | _openlist @Ban-list- $+ $2 | _addlist @Ban-list- $+ $2-
}
halt
}
raw 368:*:{
if ($2 == %-scanchan) { _scanu4 $2 | halt }
else _finlist Ban $2
}
#-invitelist off
raw &346:*:if ($window(@Invite-list- [ $+ [ $2 ] ] ) == $null) _openlist @Invite-list- $+ $2 | _addlist @Invite-list- $+ $2- | halt
#-invitelist end
raw &346:*:.enable #-invitelist | _openlist @Invite-list- $+ $2 | _addlist @Invite-list- $+ $2- | halt
raw 347:*:_finlist Invite $2
#-exceptionlist off
raw &348:*:if ($window(@Exception-list- [ $+ [ $2 ] ] ) == $null) _openlist @Exception-list- $+ $2 | _addlist @Exception-list- $+ $2- | halt
#-exceptionlist end
raw &348:*:.enable #-exceptionlist | _openlist @Exception-list- $+ $2 | _addlist @Exception-list- $+ $2- | halt
raw 349:*:_finlist Exception $2
menu @Banlist {
dclick:_bangroup $active _bantog
$iif($sline($active,1).ln > 5,Toggle):_bangroup $active _bantog
$iif($sline($active,1).ln > 5,Remove):_bangroup $active _banrem
Add...:_banadd $active $mid(beI,$pos(bei,$mid($active,2,1),1),1) $_entry(-1,$null,$remove($gettok($active,1,45),@),to add to, [ [ $gettok($active,3-,45) ] $+ ] ?,(You must enter a mask, not a nickname.)) +
$iif($sline($active,1).ln > 5,Modify...):_bangroup $active _banmod
-
Remove
.Entries matching...:{
var %whom = $_entry(-1,$null,Nickname address or wildcard mask to clear matches for?)
if ($_ppmask(%whom,1,1,1)) _bancln $active * $ifmatch
else _Q.userhost _bancln $+ $active $+ *&n!&a dispsUser $+ $:t(%whom) $+ notfoundtocleanentries %whom
}
.Nick-based entries:_bancln $active n
.Single IP entries:_bancln $active i
.-
.Entries set by servers:_bancln $active s
.Entries set by...:_bancln $active b $_entry(-1,$me,Remove all entries set by whom? (wildcards OK))
.-
.Entries newer than...:_bancln $active <= $_entry(-2,0.1,Remove all entries younger than how many days?)
.Entries older than...:_bancln $active >= $_entry(-2,5,Remove all entries older than how many days?)
.-
.All entries:_banall $active _banrem
Backup
.Export...:var %export = $$dir="File to export to?" *.txt | if ($exists(%export)) _fileopt 1 %export | _banexp $active %export
.-
.Import, adding to list...:_banimp $active 0 $$dir="Banlist to import?" *.txt
.Import, replacing list...:_banimp $active 1 $$dir="Banlist to import?" *.txt
.-
.$iif($sline($active,1).ln > 5,Copy to blacklist...):black $active
.$iif($sline($active,1).ln > 5,Move to blacklist...):var %win = $active | black %win | _bangroup %win _banrem
-
$iif($count($window($active).title,-) > 1,Changes)
.Perform changes:_closebanlist $active
.-
.Cancel changes:_banall $active _banok
.Close and cancel:_windowreg $active | _dowclose $active | window -c $active
}
alias -l _bangroup var %blip = $mid(beI,$pos(bei,$mid($1,2,1),1),1),%num = $sline($1,0) | :loop | if (%num) { if ($sline($1,%num).ln > 5) $2 $1 $ifmatch %blip | dec %num | goto loop } | _banupd $1
alias -l _banall var %blip = $mid(beI,$pos(bei,$mid($1,2,1),1),1),%num = $line($1,0) | :loop | if (%num > 5) { $2 $1 $ifmatch %blip | dec %num | goto loop } | _banupd $1
alias _bancln {
var %blip = $mid(beI,$pos(bei,$mid($1,2,1),1),1),%num = $line($1,0)
:loop
if (%num > 5) {
var %kill
goto $2
:* | var %ban = $gettok($line($1,%num),2,9) | if ((%ban iswm $3) || ($3 iswm %ban)) %kill = 1 | goto next
:n | if ($remove($gettok($gettok($line($1,%num),2,9),1,33),*,?) != $null) %kill = 1 | goto next
:i | var %ban = $gettok($gettok($line($1,%num),2,9),2-,64) | if ((* !isin %ban) && (? !isin %ban)) %kill = 1 | goto next
:b | if ($3 iswm $gettok($line($1,%num),4,9)) %kill = 1 | goto next
:s | var %whom = $gettok($line($1,%num),4,9) | if ((. isin %whom) && (@ !isin %whom)) %kill = 1 | goto next
:<= | :>= | if ($gettok($line($1,%num),3,9) $2 $3) %kill = 1
:next
if (%kill) _banrem $1 %num %blip
dec %num | goto loop
}
_banupd $1
}
alias -l _bantog {
if (+ isin $gettok($line($1,$2),1,9)) dline $1 $2
elseif (- isin $gettok($line($1,$2),1,9)) rline $1 $2 $+ $gettok($line($1,$2),2-4,9)
else rline $1 $2 - $+ $3 $+ $+ $gettok($line($1,$2),2-4,9) $+ (removing $remove($gettok($1,1,45),@) $+ )
}
alias -l _banok {
if (+ isin $gettok($line($1,$2),1,9)) dline $1 $2
elseif (- isin $gettok($line($1,$2),1,9)) rline $1 $2 $+ $gettok($line($1,$2),2-4,9)
}
alias _banrem {
if (+ isin $gettok($line($1,$2),1,9)) dline $1 $2
else rline $1 $2 - $+ $3 $+ $+ $gettok($line($1,$2),2-4,9) $+ (removing $remove($gettok($1,1,45),@) $+ )
}
alias _banadd {
var %num = $line($1,0)
:loop
if ($gettok($line($1,%num),2,9) == $3) {
if (- isin $gettok($line($1,%num),1,9)) rline $1 %num $+ $gettok($line($1,%num),2-4,9)
goto done
}
if (%num > 5) { dec %num | goto loop }
aline $1 + $+ $2 $+ $+ $3 $+ 0 $+ $+ $me $+ (adding $remove($gettok($1,1,45),@) $+ )
:done
if ($4) _banupd $1
}
alias -l _banmake {
var %num = $line($1,0)
:loop
if ($gettok($line($1,%num),2,9) == $2) {
rline $1 %num $+ $gettok($line($1,%num),2-4,9)
goto done
}
if (%num > 5) { dec %num | goto loop }
aline $1 $+ $2 $+ 0 $+ $+ $3
:done
_banupd $1
}
alias -l _bankill {
var %num = $line($1,0)
:loop
if ($gettok($line($1,%num),2,9) == $2) dline $1 %num
if (%num > 5) { dec %num | goto loop }
_banupd $1
}
alias -l _banmod {
var %newban = $_entry(-1,$gettok($line($1,$2),2,9),New mask for,$remove($gettok($1,1,45),@),?)) +
_banrem $1-
_banadd $1 $3 %newban
}
alias -l _banupd {
if ($line($1,0) < 6) { titlebar $1 | return }
var %title = -
if ($fline($1,+*,0,0)) %title = %title Adding $ifmatch $remove($gettok($1,1,45),@) $+ $iif($ifmatch != 1,s) -
if ($fline($1,-*,0,0)) %title = %title Removing $ifmatch $remove($gettok($1,1,45),@) $+ $iif($ifmatch != 1,s) -
var %cur = $calc($line($1,0) - $fline($1,-*,0,0) - 5)
if (%title == -) %title = - %cur total $remove($gettok($1,1,45),@) $+ $iif(%cur != 1,s)
else %title = %title Resulting in %cur total $remove($gettok($1,1,45),@) $+ $iif(%cur != 1,s)
titlebar $1 %title
}
alias _closebanlist {
var %channel = $mid($1,$calc($pos($1,-,2) + 1),$len($1))
_init.mass %channel
if (($fline($1,-*,1,0)) || ($fline($1,+*,1,0))) {
if ($me !isop %channel) { disprs %channel $:cl(%channel) Changes to $remove($gettok($1,1,45),@) $+ list canceled- You are not opped | return }
}
:loopu
if ($fline($1,-*,1,0)) {
_add.mass - $mid($line($1,$ifmatch),3,1) $gettok($line($1,$ifmatch),2,9)
dline $1 $fline($1,-*,1,0)
goto loopu
}
:loopb
if ($fline($1,+*,1,0)) {
_add.mass + $mid($line($1,$ifmatch),3,1) $gettok($line($1,$ifmatch),2,9)
dline $1 $fline($1,+*,1,0)
goto loopb
}
_flush.mass
}
alias -l _banimp {
if ($2) _banall $1 _banrem
var %read,%num = 1,%last = $lines($3-),%type = $mid(beI,$pos(bei,$mid($1,2,1),1),1)
:loop
%read = $read -nl [ $+ [ %num ] ] $3-
if ($matchtok($matchtok(%read,*,1,9),*,1,32)) _banadd $1 %type $ifmatch
if (%num < %last) { inc %num | goto loop }
_banupd $1
}
alias _banexp {
write " $+ $2- $+ " $remove($gettok($1,1,45),@) $+ list from $mid($1,$calc($pos($1,-,2) + 1),$len($1)) / %!net / $me ( $+ $_datetime $+ )
var %line,%num = 6
:loop
%line = $line($1,%num)
if (%line) {
if (- !isin $gettok(%line,1,9)) {
if ($gettok(%line,3,9)) write " $+ $2- $+ " $gettok(%line,2,9) set by $gettok(%line,4,9) $gettok(%line,3,9) days ago
else write " $+ $2- $+ " $gettok(%line,2,9)
}
inc %num | goto loop
}
}
on *:BAN:#:if ($window(@Ban-list- [ $+ [ $chan ] ] )) _banmake @Ban-list- $+ $chan $banmask $nick
on *:UNBAN:#:if ($window(@Ban-list- [ $+ [ $chan ] ] )) _bankill @Ban-list- $+ $chan $banmask
;
; Blacklist
;
alias blacklist blackedit
alias blackedit {
if ($window(@Blacklist)) clear @Blacklist
else _window 2.7 -sl -t10,25,40 @Blacklist $_winpos(8,12,10,10) @Blacklist
var %file,%num,%line,%nick,%chan,%note
%file = $_cfg(userinfo.ini)
%num = $ulist(*,black,0)
:loop
if (%num) {
%line = $ulist(*,black,%num)
%nick = $readini -n %file %line nick
%chan = $readini -n %file %line chan
%note = $readini -n %file %line note
aline @Blacklist $iif(%nick == $null,-,%nick) $+ $+ %line $+ $+ ( $+ $iif(%chan == $null,all,%chan) $+ ) $+ $+ $_readprep(%note)
dec %num | goto loop
}
iline @Blacklist 1 The following addresses will be banned and kicked where you are op.
iline @Blacklist 2 You will also ignore private messages and CTCPs from them.
iline @Blacklist 3 Double-click to edit a user, or right-click for options.
iline @Blacklist 4
iline @Blacklist 5 Nickname Address Channel Reason
iline @Blacklist 6 $_ultab(8,7,7,7)
window -b @Blacklist
}
menu @Blacklist {
dclick:if ($sline($active,1).ln > 6) black $gettok($sline($active,1),2,9)
Add user...:black $_entry(-1,$null,Nickname or address to blacklist?)
$iif($sline($active,1).ln > 6,Remove)::loop | black -r $gettok($sline($active,1),2,9) | if ($sline($active,1).ln) goto loop
-
$iif($sline($active,1).ln > 6,Edit...):black $gettok($sline($active,1),2,9)
}
dialog blackedit {
title "Blacklist"
size -1 -1 300 260
box "Blacklisting:", 101, 10 10 280 79
text "&Nick:", 106, 20 34 25 20
edit "", 1, 50 30 120 22
text "(for reference only)", 107, 175 34 100 20
text "&Mask:", 108, 20 59 30 20
combo 2, 51 56 230 120, edit drop
box "Where:", 102, 10 93 280 86
radio "&All channels", 5, 20 113 80 16
radio "&Only in:", 6, 20 133 55 16
edit "", 7, 75 130 205 22, disable
text "(multiple channels OK)", 103, 79 156 205 20
text "&Reason:", 104, 20 191 40 20
combo 8, 65 187 215 140, edit drop
button "&Blacklist", 201, 10 225 80 25, OK default
button "&Cancel", 202, 110 225 80 25, cancel
button "R&emove", 203, 210 225 80 25, disable
edit "", 241, 1 1 1 1, hide autohs
edit "", 242, 1 1 1 1, hide autohs result
}
on *:DIALOG:blackedit:sclick:5:did -b $dname 7
on *:DIALOG:blackedit:sclick:6:did -e $dname 7
on *:DIALOG:blackedit:init:*:{
var %reason
if (@* iswm %.who) {
did -ae $dname 7 $gettok(%.who,3-,45)
did -cf $dname 6
did -abc $dname 2 (banlist transfer from $gettok(%.who,3-,45) $+ )
did -a $dname 242 %.who
}
else {
if ($istok($level(%.addr),=black,44)) {
; saves original address
did -a $dname 241 %.addr
did -e $dname 203
var %file = $_cfg(userinfo.ini)
did -a $dname 1 $readini -n %file %.addr nick
%reason = $readini -n %file %.addr note
var %chan = $readini -n %file %.addr chan
if (%chan) { did -ae $dname 7 %chan | did -c $dname 6 }
else did -c $dname 5
}
else {
did -c $dname 5
if ($gettok(%.who,1,33) != *) did -a $dname 1 $ifmatch
}
if ($did(7) == $null) {
if ($active ischan) did -a $dname 7 $active
elseif ($comchan($did(1),1)) did -a $dname 7 $ifmatch
}
did -ac $dname 2 %.addr
if (* !isin %.who) {
if (*!*@* iswm %.who) _ddaddm $dname 2 %.who 022 030 100 002 001 111
elseif ($address(%.who,5)) _ddaddm $dname 2 $ifmatch 022 030 100 002 001 111
}
}
_fillrec $dname 8 0 $_cfg(black.lis) 0 $_readprep(%reason)
if (%reason == $null) did -u $dname 8
unset %.who %.addr
}
on *:DIALOG:blackedit:sclick:201:{
if ($did(8) == $null) { _juryrig2 _blackconfirm | halt }
; remove old?
if (($did(241) != $did(2)) && ($did(241) != $null)) .black -r $did(241)
; add new
if ($did(8) == -) did -r $dname 8
; (transfer?)
if ($did(242) != $null) {
var %num = 1
if (($did(6).state) && ($left($did(7),1) isin &#)) var %where = $_s2c($did(7))
else var %where = *
var %other = = $+ $gettok($did(1),1,32) $did(8)
:loop
if ($sline($did(242),%num)) {
black %where $gettok($ifmatch,2,9) %other
inc %num | goto loop
}
}
else {
if (($did(6).state) && ($left($did(7),1) isin &#)) black $_s2c($did(7)) $did(2) = $+ $gettok($did(1),1,32) $did(8)
else black * $did(2) = $+ $gettok($did(1),1,32) $did(8)
}
}
on *:DIALOG:blackedit:sclick:203:black -r $did(241) | dialog -c $dname
alias _blackconfirm if ($_okcancel(1,You have not entered a blacklist reason- Continue?)) { did -ca blackedit 8 - | dialog -k blackedit }
; /black [-r|#channel(s)|*] nick|addr|@window [=nick] [reason]
; pops up dialog only if just nick/addr is given
alias black {
var %num,%nick,%line,%line2
if (($left($1,1) isin -&#) || ($1 == *)) { var %where = $1,%who = $2,%why = $3- }
else { var %where,%who = $1,%why = $2- }
if (%who == $null) _qhelp /black $1-
if (@* iswm %who) { set %.who %who | return $$dialog(blackedit,blackedit,-4) }
var %dialog = $iif($1- == %who,1,0)
%who = $_nc(%who)
var %addr = $_ppmask(%who,$_stmask(3),1)
if (%addr == $null) {
disp Looking up address of $:t(%who) $+ ...
_Q.userhost black $+ %where $+ &n!&a $+ $iif(%why != $null,$_s2p(%why)) dispNouser $+ $:t(%who) $+ foundtoblacklist. %who
halt
}
; dialog
if (%dialog) { set %.who %who | set %.addr %addr | _dialog -ma blackedit blackedit | return }
var %file = $_cfg(userinfo.ini)
if (%where == -r) {
if ($window(@Blacklist)) {
%num = 7 | :loop1 | if ($line(@Blacklist,%num)) { if ($gettok($ifmatch,2,9) == %addr) dline @Blacklist %num | else inc %num | goto loop1 }
}
else {
if ($istok($level(%addr),=black,44)) dispa Removing $:s(%addr) from blacklist.
else dispa $:s(%addr) is not in blacklist.
}
.ruser black %addr
if ($level(%addr) == $dlevel) .ruser %addr
upd.nick.nickbit %addr
remini %file %addr
}
else {
if (=* iswm $gettok(%why,1,32)) { %nick = $right($gettok(%why,1,32),-1) | %why = $gettok(%why,2-,32) }
elseif ((* !isin $gettok(%who,1,33)) && ($gettok(%who,1,33) != $null)) %nick = $ifmatch
else %nick = $readini -n %file %addr nick
if (%why == $null) { %why = $readini -n %file %addr note | %why = $_readprep(%why) }
if (%where == $null) %where = $readini -n %file %addr chan
if (%where == *) var %where
if ($window(@Blacklist)) {
%line = $iif(%nick == $null,-,%nick) $+ $+ %addr $+ $+ ( $+ $iif(%where == $null,all,%where) $+ ) $+ $+ %why
%num = 7 | :loop2
if ($line(@Blacklist,%num)) {
if ($gettok($ifmatch,2,9) == %addr) _ridline @Blacklist %num %line
else { inc %num | goto loop2 }
}
else iline @Blacklist $calc($line(@Blacklist,0) + 1) %line
}
else {
if (%nick) %line = $:t(%nick) ( $+ $:s(%addr) $+ ) | else %line = $:s(%addr)
if (%where == $null) %line2 = $:s(all channels) | else %line2 = $:s(%where)
dispa $iif($istok($level(%addr),=black,44),Modifying,Adding) blacklist entry- %line in %line2 (reason- $iif(%why == $null,none,$:s(%why)) $+ )
}
if ($level(%addr) == $dlevel) .auser -a $dlevel %addr
.auser -a black %addr
if (%nick) writeini %file %addr nick %nick | else remini %file %addr nick
if (%why) { writeini %file %addr note $_writeprep(%why) | _recent2 black 9 %why } | else remini %file %addr note
if (%where) writeini %file %addr chan %where | else remini %file %addr chan
upd.nick.nickbit %addr
set -u %.punishwait 1
%num = $chan(0)
:loopC
if (($me isop $chan(%num)) && ($ialchan(%addr,$chan(%num),0))) {
if ((%where == $null) || ($istok(%where,$chan(%num),44))) {
disprs $chan(%num) $:cl($chan(%num)) Blacklisted $:s(%addr) $+ - Kickbanning...
%line = $_msg(black) | if (&reason !isin %line) %line = %line &reason&
kb $chan(%num) %addr $replace(%line,&reason&,%why,&addr&,%addr)
}
}
if (%num > 1) { dec %num | goto loopC }
}
}