@prog cmd-@banguest
1 9999 d
1 i
( cmd-@banguest v1.0 Jessy@FurryMUCK 7/01
This modified version of cmd-@bansite only applies to guests.
INSTALLATION:
Set the program Wizard. Create a global action, with a name such as
@banguest, and link it to the program.
cmd-@banguest uses a property to identify guest chars. To ensure
proper use, edit the $def GUEST_PROP statement below this header comment
to match a property that is set on each of the Guest chars on your MUCK.
Set a property on the Guest chars if needed.
Set the program Link_OK, and set a property in the global _connect/
queue to call the program at logon:
@propset #0=dbref:_connect/banguest:<#dbref of program>
USAGE:
Same as the conventional @bansite command, but the results will be
ignored for non-guest players.
This program may be freely ported.
)
$def GUEST_PROP "@guest/player?"
$def BannedPropdir "@banned/"
$def BannedPropdirLoc #0
: site-is-banned? (iDescr -- iTrue?)
conhost BannedPropdir swap strcat
BannedPropdirLoc BannedPropdir
begin
over swap nextprop dup
while
3 pick over smatch if
pop pop pop 1 exit
then
repeat
pop pop pop 0
;
: boot-banned-connects ( -- )
me @ descriptors
begin
dup
while
1 - swap descrcon dup
site-is-banned? if
dup "Sorry, but connections from that site are not allowed."
connotify conboot
else pop
then
repeat
;
: list-banned-sites ( -- )
me @ "Banned sites:" notify
BannedPropdirLoc BannedPropdir
begin
over swap nextprop dup
while
" " over strcat
me @ swap notify
repeat
pop pop
me @ "Done." notify
;
$def .tell me @ swap notify
: show-help ( -- )
"@bansite v1.0 Written 11/11/93 by Foxen" .tell
"----------------------------------------------------------------" .tell
"@bansite SITENAME Prevents logins from the given site." .tell
"@bansite !SITENAME Re-allows logins from the given site." .tell
"@bansite #list Lists all the sites that are banned." .tell
"@bansite #help Displays this screen." .tell
"----------------------------------------------------------------" .tell
"NOTE: Sitenames can be wildcard patterns. ie: *.uloser.edu" .tell
;
: main
"me" match me !
me @ GUEST_PROP getprop not if exit then
preempt
command @ "Queued event." stringcmp not if
pop boot-banned-connects exit
then
me @ "wizard" flag? not if
me @ "Permission denied." notify
pop exit
then
strip
dup "#list" stringcmp not if
pop list-banned-sites exit
then
dup "#help" stringcmp not if
pop show-help exit
then
dup "!" 1 strncmp not if
1 strcut swap pop
BannedPropdirLoc BannedPropdir rot strcat
over over getpropstr if
remove_prop "Site unbanned."
else
pop pop "That site was not banned."
then
me @ swap notify
else
BannedPropdirLoc BannedPropdir rot strcat
over over getpropstr if
pop pop "That site is already banned."
else
"banned" 0 addprop "Site banned."
then
me @ swap notify
then
;
.
c
q
@register #me cmd-@bansite=tmp/prog1
@register #prop #0:_connect/ cmd-@bansite=bansite
@set $tmp/prog1=W
@set $tmp/prog1=L
@set $tmp/prog1=3
@action @bansite=#0=tmp/exit1
@link $tmp/exit1=$tmp/prog1