Guardian Programmer's Guide

Table Of Contents
Writing a Command-Interpreter Monitor ($CMON)
Guardian Programmer’s Guide 421922-014
23 - 32
Refusing Command-Interpreter Requests
In the $CMON process:
CALL READUPDATEX(RECV^NUM,SBUFFER,RCOUNT,BYTES^READ);
IF BUFFER[0] = 61 THEN
BEGIN
! Find out if sender is in group 255:
CALL FILE_GETRECEIVEINFO_(INFO);
P^HANDLE ':=' INFO[6] FOR 10;
ERROR := PROCESS_GETINFO_(P^HANDLE,
!file^name:maxlen!,
!file^name^len!,
!priority!,
!moms^processhandle!,
!hometerm:maxlen!,
!hometerm^len!,
!process^time!,
!caid!,
PAID);
IF PAID.<0:7> = 255 THEN
! If request from operations group, process message:
BEGIN
REFUSE^ALL := YES;
SHUTDOWN^TEXT ':=' SBUFFER[2] FOR (BYTES^READ - 2);
SHUTDOWN^TEXT^LEN := BYTES^READ -2;
END;
CALL REPLYX;
END;
.
.
IF BUFFER[0] = -50 THEN !logon request
BEGIN
IF REFUSE^ALL = YES THEN
BEGIN
! Reject if not operator group:
REQUESTING^GROUP^ID := LOGON^MSG.USERID.<0:7>;
IF REQUESTING^GROUP^ID <> 255 THEN
BEGIN
LOGON^REPLY.REPLYCODE := 1;
LOGON^REPLY.REPLYTEXT ':=' SHUTDOWN^TEXT FOR
SHUTDOWN^TEXT^LEN;
END
ELSE