Acknowledge command receipt more quickly; Notify of access denial.

Also fix a bug in $PART that prevented it from working with an argument,
and add some more debug output just to make it that much slower and
noisier.
This commit is contained in:
Quinn Evans 2017-02-19 19:58:57 -07:00
parent 36387a435f
commit 9e25f1c525
1 changed files with 91 additions and 30 deletions

121
WOPO.COB
View File

@ -59,6 +59,7 @@
03 WOPO-PARAMS PIC 9. 03 WOPO-PARAMS PIC 9.
03 WOPO-COUNTER PIC 9. 03 WOPO-COUNTER PIC 9.
03 MSG-BODY-TMP PIC X(999). 03 MSG-BODY-TMP PIC X(999).
D 03 DEBUG-PTR PIC 9.
01 USERS-HEADER. 01 USERS-HEADER.
03 FILLER PIC X(40) VALUE "USER NAME.". 03 FILLER PIC X(40) VALUE "USER NAME.".
@ -255,10 +256,15 @@
BLANK-PARAM. BLANK-PARAM.
MOVE SPACES TO PARAM(WORK-PTR). MOVE SPACES TO PARAM(WORK-PTR).
PRESERVE-MESSAGE.
MOVE MSG-BODY TO MSG-BODY-TMP.
RESTORE-MESSAGE.
MOVE MSG-BODY-TMP TO MSG-BODY.
VALIDATE-USER. VALIDATE-USER.
D DISPLAY "ENTERED VALIDATE-USER". D DISPLAY "ENTERED VALIDATE-USER".
* SAVE MESSAGE. PERFORM PRESERVE-MESSAGE.
MOVE MSG-BODY TO MSG-BODY-TMP.
MOVE NICK TO USER-NAME. MOVE NICK TO USER-NAME.
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
STRING "PRIVMSG NICKSERV $COLN$ACC " DELIMITED BY SIZE STRING "PRIVMSG NICKSERV $COLN$ACC " DELIMITED BY SIZE
@ -271,7 +277,7 @@
D DISPLAY "WAITING FOR ACC." D DISPLAY "WAITING FOR ACC."
PERFORM WAIT-FOR-ACC UNTIL DONE PERFORM WAIT-FOR-ACC UNTIL DONE
* RESTORE AND REPARSE MESSAGE. * RESTORE AND REPARSE MESSAGE.
MOVE MSG-BODY-TMP TO MSG-BODY. PERFORM RESTORE-MESSAGE
PERFORM GET-IRC-STATE. PERFORM GET-IRC-STATE.
PERFORM GET-PARAMS. PERFORM GET-PARAMS.
@ -336,11 +342,20 @@
WITH POINTER WORK-PTR. WITH POINTER WORK-PTR.
REPLY-ACK. REPLY-ACK.
PERFORM PRESERVE-MESSAGE.
PERFORM BEGIN-STANDARD-REPLY. PERFORM BEGIN-STANDARD-REPLY.
STRING "OK.$NUL$" STRING "OK.$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER WORK-PTR. WITH POINTER WORK-PTR.
PERFORM SEND-LINE. PERFORM SEND-LINE.
PERFORM RESTORE-MESSAGE.
REPLY-NAK.
PERFORM BEGIN-STANDARD-REPLY.
STRING "ACCESS DENIED.$NUL$"
INTO MSG-BODY
WITH POINTER WORK-PTR.
PERFORM SEND-LINE.
PONG. PONG.
STRING "PONG$NUL$" STRING "PONG$NUL$"
@ -379,7 +394,15 @@
INTO MSG-BODY INTO MSG-BODY
PERFORM SEND-LINE. PERFORM SEND-LINE.
DDEBUG-PARAMS.
D DISPLAY "PARAMETER ", DEBUG-PTR, ": ", PARAM(DEBUG-PTR).
HANDLE-MESSAGE. HANDLE-MESSAGE.
D DISPLAY "HANDLING MESSAGE."
D PERFORM DEBUG-PARAMS
D VARYING DEBUG-PTR
D FROM 1, BY 1
D UNTIL DEBUG-PTR IS GREATER THAN WOPO-PARAMS
IF IS-CTCP THEN IF IS-CTCP THEN
PERFORM HANDLE-CTCP PERFORM HANDLE-CTCP
ELSE IF IS-COMMAND THEN ELSE IF IS-COMMAND THEN
@ -532,6 +555,7 @@
PERFORM SEND-LINE. PERFORM SEND-LINE.
HANDLE-JOIN. HANDLE-JOIN.
PERFORM REPLY-ACK.
PERFORM VALIDATE-USER. PERFORM VALIDATE-USER.
IF USER-LEVEL IS NOT LESS THAN 80 AND IF USER-LEVEL IS NOT LESS THAN 80 AND
PARAM(2) IS NOT EQUAL TO "0" THEN PARAM(2) IS NOT EQUAL TO "0" THEN
@ -541,22 +565,25 @@
"$NUL$" "$NUL$"
INTO MSG-BODY INTO MSG-BODY
PERFORM SEND-LINE PERFORM SEND-LINE
PERFORM REPLY-ACK. ELSE
PERFORM REPLY-NAK.
HANDLE-PART. HANDLE-PART.
PERFORM REPLY-ACK.
PERFORM VALIDATE-USER.
IF WOPO-PARAMS IS LESS THAN 2 THEN IF WOPO-PARAMS IS LESS THAN 2 THEN
MOVE TARGET TO WORK MOVE TARGET TO WORK
ELSE ELSE
MOVE PARAM(2) TO WORK MOVE PARAM(2) TO WORK
PERFORM VALIDATE-USER.
IF USER-LEVEL IS NOT LESS THAN 80 THEN IF USER-LEVEL IS NOT LESS THAN 80 THEN
PERFORM REPLY-ACK
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
STRING "PART " DELIMITED BY SIZE, STRING "PART " DELIMITED BY SIZE,
WORK DELIMITED BY SPACES, WORK DELIMITED BY SPACES,
"$NUL$" "$NUL$"
INTO MSG-BODY INTO MSG-BODY
PERFORM SEND-LINE. PERFORM SEND-LINE
ELSE
PERFORM REPLY-NAK.
STRING-LOWVS. STRING-LOWVS.
STRING "$LOWV$" INTO MSG-BODY WITH POINTER WORK-PTR. STRING "$LOWV$" INTO MSG-BODY WITH POINTER WORK-PTR.
@ -571,12 +598,12 @@
ADD 1 TO WORK-PTR. ADD 1 TO WORK-PTR.
HANDLE-VOICE. HANDLE-VOICE.
PERFORM REPLY-ACK.
PERFORM VALIDATE-USER. PERFORM VALIDATE-USER.
IF WOPO-PARAMS IS LESS THAN 2 THEN IF WOPO-PARAMS IS LESS THAN 2 THEN
MOVE NICK TO PARAM(2) MOVE NICK TO PARAM(2)
MOVE 2 TO WOPO-PARAMS. MOVE 2 TO WOPO-PARAMS.
IF USER-LEVEL IS NOT LESS THAN 60 THEN IF USER-LEVEL IS NOT LESS THAN 60 THEN
PERFORM REPLY-ACK
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
MOVE 1 TO WORK-PTR MOVE 1 TO WORK-PTR
STRING "MODE " DELIMITED BY SIZE, STRING "MODE " DELIMITED BY SIZE,
@ -596,15 +623,17 @@
STRING "$NUL$" STRING "$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER WORK-PTR WITH POINTER WORK-PTR
PERFORM SEND-LINE. PERFORM SEND-LINE
ELSE
PERFORM REPLY-NAK.
HANDLE-DEVOICE. HANDLE-DEVOICE.
PERFORM REPLY-ACK.
PERFORM VALIDATE-USER. PERFORM VALIDATE-USER.
IF WOPO-PARAMS IS LESS THAN 2 THEN IF WOPO-PARAMS IS LESS THAN 2 THEN
MOVE NICK TO PARAM(2) MOVE NICK TO PARAM(2)
MOVE 2 TO WOPO-PARAMS. MOVE 2 TO WOPO-PARAMS.
IF USER-LEVEL IS NOT LESS THAN 60 THEN IF USER-LEVEL IS NOT LESS THAN 60 THEN
PERFORM REPLY-ACK
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
MOVE 1 TO WORK-PTR MOVE 1 TO WORK-PTR
STRING "MODE " DELIMITED BY SIZE, STRING "MODE " DELIMITED BY SIZE,
@ -624,15 +653,17 @@
STRING "$NUL$" STRING "$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER WORK-PTR WITH POINTER WORK-PTR
PERFORM SEND-LINE. PERFORM SEND-LINE
ELSE
PERFORM REPLY-NAK.
HANDLE-OP. HANDLE-OP.
PERFORM REPLY-ACK.
PERFORM VALIDATE-USER. PERFORM VALIDATE-USER.
IF WOPO-PARAMS IS LESS THAN 2 THEN IF WOPO-PARAMS IS LESS THAN 2 THEN
MOVE NICK TO PARAM(2) MOVE NICK TO PARAM(2)
MOVE 2 TO WOPO-PARAMS. MOVE 2 TO WOPO-PARAMS.
IF USER-LEVEL IS NOT LESS THAN 70 THEN IF USER-LEVEL IS NOT LESS THAN 70 THEN
PERFORM REPLY-ACK
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
MOVE 1 TO WORK-PTR MOVE 1 TO WORK-PTR
STRING "MODE " DELIMITED BY SIZE, STRING "MODE " DELIMITED BY SIZE,
@ -652,15 +683,17 @@
STRING "$NUL$" STRING "$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER WORK-PTR WITH POINTER WORK-PTR
PERFORM SEND-LINE. PERFORM SEND-LINE
ELSE
PERFORM REPLY-NAK.
HANDLE-DEOP. HANDLE-DEOP.
PERFORM REPLY-ACK.
PERFORM VALIDATE-USER. PERFORM VALIDATE-USER.
IF WOPO-PARAMS IS LESS THAN 2 THEN IF WOPO-PARAMS IS LESS THAN 2 THEN
MOVE NICK TO PARAM(2) MOVE NICK TO PARAM(2)
MOVE 2 TO WOPO-PARAMS. MOVE 2 TO WOPO-PARAMS.
IF USER-LEVEL IS NOT LESS THAN 70 THEN IF USER-LEVEL IS NOT LESS THAN 70 THEN
PERFORM REPLY-ACK
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
MOVE 1 TO WORK-PTR MOVE 1 TO WORK-PTR
STRING "MODE " DELIMITED BY SIZE, STRING "MODE " DELIMITED BY SIZE,
@ -680,26 +713,29 @@
STRING "$NUL$" STRING "$NUL$"
INTO MSG-BODY INTO MSG-BODY
WITH POINTER WORK-PTR WITH POINTER WORK-PTR
PERFORM SEND-LINE. PERFORM SEND-LINE
ELSE
PERFORM REPLY-NAK.
HANDLE-QUIT. HANDLE-QUIT.
PERFORM REPLY-ACK.
MOVE "QUIT-MESSAGE" TO CONFIG-KEY. MOVE "QUIT-MESSAGE" TO CONFIG-KEY.
READ CONFIG RECORD READ CONFIG RECORD
INVALID KEY MOVE SPACES TO CONFIG-VALUE. INVALID KEY MOVE SPACES TO CONFIG-VALUE.
PERFORM VALIDATE-USER. PERFORM VALIDATE-USER.
IF USER-LEVEL IS NOT LESS THAN 90 THEN IF USER-LEVEL IS NOT LESS THAN 90 THEN
PERFORM REPLY-ACK
MOVE SPACES TO MSG-BODY MOVE SPACES TO MSG-BODY
STRING "QUIT $COLN$" DELIMITED BY SIZE, STRING "QUIT $COLN$" DELIMITED BY SIZE,
CONFIG-VALUE, CONFIG-VALUE,
INTO MSG-BODY INTO MSG-BODY
PERFORM SEND-LINE PERFORM SEND-LINE
GO TO QUIT. GO TO QUIT
ELSE
PERFORM REPLY-NAK.
HANDLE-SHOW-ESCAPES. HANDLE-SHOW-ESCAPES.
PERFORM REPLY-ACK.
PERFORM VALIDATE-USER. PERFORM VALIDATE-USER.
PERFORM BEGIN-STANDARD-REPLY.
STRING "SHOW-ESCAPES " INTO MSG-BODY WITH POINTER WORK-PTR.
IF USER-LEVEL IS NOT LESS THAN 90 THEN IF USER-LEVEL IS NOT LESS THAN 90 THEN
IF PARAM(2) IS NOT EQUAL TO SPACES THEN IF PARAM(2) IS NOT EQUAL TO SPACES THEN
IF PARAM(2) IS EQUAL TO "ON" THEN IF PARAM(2) IS EQUAL TO "ON" THEN
@ -709,13 +745,18 @@
ELSE NEXT SENTENCE ELSE NEXT SENTENCE
ELSE IF SHOULD-SHOW-ESCAPES THEN ELSE IF SHOULD-SHOW-ESCAPES THEN
SET SHOW-ESCAPES TO OFF SET SHOW-ESCAPES TO OFF
ELSE SET SHOW-ESCAPES TO ON. ELSE SET SHOW-ESCAPES TO ON
ELSE
PERFORM REPLY-NAK.
PERFORM BEGIN-STANDARD-REPLY.
STRING "SHOW-ESCAPES " INTO MSG-BODY WITH POINTER WORK-PTR.
IF SHOULD-SHOW-ESCAPES THEN IF SHOULD-SHOW-ESCAPES THEN
STRING "ON." INTO MSG-BODY WITH POINTER WORK-PTR STRING "ON." INTO MSG-BODY WITH POINTER WORK-PTR
ELSE STRING "OFF." INTO MSG-BODY WITH POINTER WORK-PTR. ELSE STRING "OFF." INTO MSG-BODY WITH POINTER WORK-PTR.
PERFORM SEND-LINE. PERFORM SEND-LINE.
HANDLE-RELEVEL. HANDLE-RELEVEL.
PERFORM REPLY-ACK.
PERFORM VALIDATE-USER. PERFORM VALIDATE-USER.
MOVE PARAM(2) TO USER-NAME. MOVE PARAM(2) TO USER-NAME.
IF USER-LEVEL IS NOT LESS THAN 99 THEN IF USER-LEVEL IS NOT LESS THAN 99 THEN
@ -725,7 +766,9 @@
INVALID KEY NEXT SENTENCE INVALID KEY NEXT SENTENCE
ELSE ELSE
REWRITE USER-RECORD REWRITE USER-RECORD
INVALID KEY WRITE USER-RECORD. INVALID KEY WRITE USER-RECORD
ELSE
PERFORM REPLY-NAK.
READ USERS RECORD READ USERS RECORD
INVALID KEY MOVE 0 TO USER-LEVEL. INVALID KEY MOVE 0 TO USER-LEVEL.
PERFORM BEGIN-STANDARD-REPLY. PERFORM BEGIN-STANDARD-REPLY.
@ -745,6 +788,7 @@
D DISPLAY "BF-CODE. ", BF-CODE D DISPLAY "BF-CODE. ", BF-CODE
PERFORM SEND-LINE PERFORM SEND-LINE
ELSE ELSE
PERFORM REPLY-ACK
PERFORM VALIDATE-USER PERFORM VALIDATE-USER
MOVE PARAM-PTR(NUM-PARAMS) TO WORK-PTR MOVE PARAM-PTR(NUM-PARAMS) TO WORK-PTR
UNSTRING MSG-BODY DELIMITED BY SPACE UNSTRING MSG-BODY DELIMITED BY SPACE
@ -755,7 +799,8 @@
WITH POINTER WORK-PTR WITH POINTER WORK-PTR
IF USER-LEVEL IS NOT LESS THAN 60 THEN IF USER-LEVEL IS NOT LESS THAN 60 THEN
MOVE WORK TO BF-CODE MOVE WORK TO BF-CODE
PERFORM REPLY-ACK. ELSE
PERFORM REPLY-NAK.
HANDLE-BF-INPUT. HANDLE-BF-INPUT.
IF WOPO-PARAMS IS LESS THAN 2 THEN IF WOPO-PARAMS IS LESS THAN 2 THEN
@ -768,6 +813,7 @@
D DISPLAY "MSG-BODY. ", MSG-BODY D DISPLAY "MSG-BODY. ", MSG-BODY
PERFORM SEND-LINE PERFORM SEND-LINE
ELSE ELSE
PERFORM REPLY-ACK
PERFORM VALIDATE-USER PERFORM VALIDATE-USER
MOVE PARAM-PTR(NUM-PARAMS) TO WORK-PTR MOVE PARAM-PTR(NUM-PARAMS) TO WORK-PTR
UNSTRING MSG-BODY DELIMITED BY SPACE UNSTRING MSG-BODY DELIMITED BY SPACE
@ -778,7 +824,8 @@
WITH POINTER WORK-PTR WITH POINTER WORK-PTR
IF USER-LEVEL IS NOT LESS THAN 50 THEN IF USER-LEVEL IS NOT LESS THAN 50 THEN
MOVE WORK TO BF-INPUT MOVE WORK TO BF-INPUT
PERFORM REPLY-ACK. ELSE
PERFORM REPLY-NAK.
HANDLE-BF-OUTPUT. HANDLE-BF-OUTPUT.
PERFORM BEGIN-STANDARD-REPLY. PERFORM BEGIN-STANDARD-REPLY.
@ -796,6 +843,7 @@
HANDLE-BF-RUN. HANDLE-BF-RUN.
D DISPLAY "HANDLING BF-RUN". D DISPLAY "HANDLING BF-RUN".
PERFORM REPLY-ACK
PERFORM VALIDATE-USER. PERFORM VALIDATE-USER.
IF WOPO-PARAMS IS LESS THAN 2 THEN IF WOPO-PARAMS IS LESS THAN 2 THEN
MOVE 999 TO MAYBE-CYCLE-LIMIT MOVE 999 TO MAYBE-CYCLE-LIMIT
@ -803,20 +851,33 @@
UNSTRING PARAM(2) INTO MAYBE-CYCLE-LIMIT. UNSTRING PARAM(2) INTO MAYBE-CYCLE-LIMIT.
D DISPLAY "CYCLE LIMIT. ", CYCLE-LIMIT. D DISPLAY "CYCLE LIMIT. ", CYCLE-LIMIT.
IF USER-LEVEL IS NOT LESS THAN 50 THEN IF USER-LEVEL IS NOT LESS THAN 50 THEN
PERFORM REPLY-ACK
MOVE MAYBE-CYCLE-LIMIT TO CYCLE-LIMIT MOVE MAYBE-CYCLE-LIMIT TO CYCLE-LIMIT
PERFORM BF-LIMIT-CYCLES PERFORM BF-LIMIT-CYCLES
CALL "BF-RUN" USING BF-I-O CALL "BF-RUN" USING BF-I-O
D DISPLAY "BF RAN" D DISPLAY "BF RAN"
PERFORM HANDLE-BF-OUTPUT. PERFORM HANDLE-BF-OUTPUT
ELSE
PERFORM REPLY-NAK.
BF-LIMIT-CYCLES. BF-LIMIT-CYCLES.
IF CYCLE-LIMIT > 999 THEN IF CYCLE-LIMIT > 999 THEN
IF USER-LEVEL < 90 THEN IF USER-LEVEL < 90 THEN
IF USER-LEVEL < 70 THEN IF USER-LEVEL < 70 THEN
MOVE 999 TO CYCLE-LIMIT MOVE 999 TO CYCLE-LIMIT
ELSE IF CYCLE-LIMIT > 9999 THEN PERFORM BF-CYCLES-LIMITED
MOVE 9999 TO CYCLE-LIMIT. ELSE IF CYCLE-LIMIT > 9999 THEN
MOVE 9999 TO CYCLE-LIMIT
PERFORM BF-CYCLES-LIMITED.
BF-CYCLES-LIMITED.
PERFORM BEGIN-STANDARD-REPLY.
STRING "INSUFFICIENT LEVEL FOR REQUESTED CYCLE LIMIT. "
- "ACTUAL LIMIT WILL BE "
CYCLE-LIMIT
"."
INTO MSG-BODY
WITH POINTER WORK-PTR.
PERFORM SEND-LINE.
HANDLE-CTCP. HANDLE-CTCP.
D DISPLAY "HANDLING CTCP.". D DISPLAY "HANDLING CTCP.".