Actually added WOPO changes.
This commit is contained in:
parent
468ec84a9e
commit
fbbc7068eb
1 changed files with 147 additions and 18 deletions
165
WOPO.COB
165
WOPO.COB
|
@ -52,14 +52,28 @@
|
|||
05 REST PIC X(480).
|
||||
01 WAITING-COMMAND PIC X(16).
|
||||
01 PARAMS.
|
||||
03 WORK PIC X(50).
|
||||
03 WORK PIC X(480).
|
||||
03 WORK-PREFIX REDEFINES WORK PIC X.
|
||||
88 IS-COMMAND VALUE "$".
|
||||
03 PARAM PIC X(50) OCCURS 5 TIMES.
|
||||
03 REG PIC X(50) OCCURS 5 TIMES.
|
||||
03 PARAM PIC X(480) OCCURS 5 TIMES.
|
||||
03 REG PIC X(480) OCCURS 5 TIMES.
|
||||
|
||||
01 BF-I-O.
|
||||
03 BF-INPUT PIC X(512)
|
||||
VALUE "$NUL$".
|
||||
03 BF-CODE PIC X(512)
|
||||
VALUE ",(.,).$".
|
||||
03 BF-OUTPUT PIC X(512)
|
||||
VALUE SPACES.
|
||||
03 CYCLE-LIMIT PIC 9(5)
|
||||
VALUE 0.
|
||||
|
||||
01 BF-STATE.
|
||||
03 MAYBE-CYCLE-LIMIT PIC 9(5)
|
||||
VALUE 0.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
DISPLAY "CONFIGURATION FOLLOWS:".
|
||||
DISPLAY "CONFIGURATION FOLLOWS.".
|
||||
CALL "PRINT-CONFIG".
|
||||
MOVE LENGTH OF MSG-BODY TO MSG-LENGTH.
|
||||
CALL "CHANNEL-INIT"
|
||||
|
@ -113,7 +127,7 @@
|
|||
ADD 1 TO MSG-LENGTH.
|
||||
MOVE "REAL-NAME" TO CONFIG-KEY.
|
||||
PERFORM READ-CONFIG-ENTRY.
|
||||
STRING "BOGUS HOST :" DELIMITED BY SIZE,
|
||||
STRING "BOGUS HOST; " DELIMITED BY SIZE,
|
||||
CONFIG-VALUE DELIMITED BY " ",
|
||||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH.
|
||||
|
@ -141,7 +155,7 @@
|
|||
|
||||
READ-CONFIG-ENTRY.
|
||||
READ CONFIG RECORD
|
||||
INVALID KEY DISPLAY "REQUIRED KEY UNSPECIFIED:"
|
||||
INVALID KEY DISPLAY "REQUIRED KEY UNSPECIFIED."
|
||||
DISPLAY CONFIG-KEY
|
||||
GO TO DIE.
|
||||
|
||||
|
@ -169,13 +183,15 @@
|
|||
MOVE PARAM(1) TO WORK.
|
||||
|
||||
VALIDATE-USER.
|
||||
D DISPLAY "ENTERED VALIDATE-USER".
|
||||
MOVE NICK TO USER-NAME.
|
||||
READ USERS RECORD
|
||||
INVALID KEY MOVE 0 TO USER-LEVEL.
|
||||
D DISPLAY "SUPPOSED USER LEVEL ", USER-LEVEL.
|
||||
IF USER-LEVEL IS GREATER THAN 0 THEN
|
||||
MOVE SPACES TO MSG-BODY.
|
||||
MOVE SPACES TO MSG-BODY
|
||||
MOVE 1 TO MSG-LENGTH
|
||||
STRING "PRIVMSG NICKSERV :ACC"
|
||||
STRING "PRIVMSG NICKSERV ;ACC"
|
||||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH
|
||||
ADD 1 TO MSG-LENGTH
|
||||
|
@ -185,7 +201,12 @@
|
|||
PERFORM SEND-LINE
|
||||
MOVE "NOTICE" TO WAITING-COMMAND
|
||||
MOVE 0 TO STATE
|
||||
PERFORM WAIT-FOR-ACC UNTIL DONE.
|
||||
D DISPLAY "WAITING FOR ACC."
|
||||
PERFORM WAIT-FOR-ACC UNTIL DONE
|
||||
D DISPLAY "USER VALIDATED."
|
||||
D ELSE
|
||||
D DISPLAY "USER NOT VALIDATED."
|
||||
.
|
||||
|
||||
WAIT-FOR-ACC.
|
||||
PERFORM WAIT-FOR-COMMAND.
|
||||
|
@ -199,12 +220,13 @@
|
|||
|
||||
MAIN.
|
||||
PERFORM RECEIVE-LINE.
|
||||
MOVE 1 TO MSG-LENGTH.
|
||||
IF PING THEN
|
||||
PERFORM PONG
|
||||
ELSE IF PRIVMSG THEN
|
||||
D DISPLAY "PROCESSING PRIVMSG"
|
||||
PERFORM HANDLE-MESSAGE
|
||||
ELSE IF NOTICE THEN
|
||||
D DISPLAY "PROCESSING NOTICE"
|
||||
PERFORM HANDLE-MESSAGE.
|
||||
|
||||
*THE REPLY FUNCTIONS NEED NICK, COMMAND, AND TARGET PRESERVED.
|
||||
|
@ -224,12 +246,12 @@
|
|||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH.
|
||||
ADD 1 TO MSG-LENGTH.
|
||||
STRING ":"
|
||||
STRING ";"
|
||||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH.
|
||||
IF TARGET IS NOT EQUAL TO WOPO-NICK THEN
|
||||
STRING NICK DELIMITED BY SPACES
|
||||
": " DELIMITED BY SIZE
|
||||
". " DELIMITED BY SIZE
|
||||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH.
|
||||
|
||||
|
@ -248,13 +270,24 @@
|
|||
|
||||
HANDLE-MESSAGE.
|
||||
PERFORM GET-PARAMS.
|
||||
MOVE PARAM(1) TO WORK.
|
||||
IF IS-COMMAND THEN
|
||||
UNSTRING WORK DELIMITED BY "$" INTO PARAM(1), PARAM(1)
|
||||
MOVE 2 TO MSG-LENGTH
|
||||
UNSTRING WORK INTO PARAM(1)
|
||||
WITH POINTER MSG-LENGTH
|
||||
D DISPLAY "COMMAND BODY ", PARAM(1)
|
||||
IF PARAM(1) IS EQUAL TO "HELP" THEN
|
||||
PERFORM HANDLE-HELP
|
||||
ELSE IF PARAM(1) IS EQUAL TO "SOURCE" THEN
|
||||
PERFORM HANDLE-SOURCE
|
||||
ELSE IF PARAM(1) IS EQUAL TO "BF-INPUT" THEN
|
||||
PERFORM HANDLE-BF-INPUT
|
||||
ELSE IF PARAM(1) IS EQUAL TO "BF-CODE" THEN
|
||||
PERFORM HANDLE-BF-CODE
|
||||
ELSE IF PARAM(1) IS EQUAL TO "BF-OUTPUT" THEN
|
||||
PERFORM HANDLE-BF-OUTPUT
|
||||
ELSE IF PARAM(1) IS EQUAL TO "BF-RUN" THEN
|
||||
D DISPLAY "BF-RUN"
|
||||
PERFORM HANDLE-BF-RUN
|
||||
ELSE IF PARAM(1) IS EQUAL TO "SHITFED" THEN
|
||||
PERFORM HANDLE-SHITFED
|
||||
ELSE IF PARAM(1) IS EQUAL TO "LEVEL" THEN
|
||||
|
@ -270,7 +303,8 @@
|
|||
|
||||
HANDLE-HELP.
|
||||
PERFORM BEGIN-REPLY.
|
||||
STRING "$HELP $LEVEL $JOIN $PART $QUIT $RELEVEL $SHITFED "
|
||||
STRING "$BF-INPUT $BF-CODE $BF-OUTPUT $BF-RUN "
|
||||
- "$HELP $LEVEL $JOIN $PART $QUIT $RELEVEL $SHITFED "
|
||||
- "$SOURCE"
|
||||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH.
|
||||
|
@ -285,7 +319,7 @@
|
|||
|
||||
HANDLE-SOURCE.
|
||||
PERFORM BEGIN-REPLY.
|
||||
STRING "HTTPS://GITHUB.COM/HEDDWCH/WOPO"
|
||||
STRING "HTTPS;//GITHUB.COM/HEDDWCH/WOPO"
|
||||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH.
|
||||
PERFORM SEND-LINE.
|
||||
|
@ -362,7 +396,7 @@
|
|||
PERFORM REPLY-ACK
|
||||
MOVE SPACES TO MSG-BODY
|
||||
MOVE 1 TO MSG-LENGTH
|
||||
STRING "QUIT :", CONFIG-VALUE
|
||||
STRING "QUIT ;", CONFIG-VALUE
|
||||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH
|
||||
PERFORM SEND-LINE
|
||||
|
@ -393,9 +427,104 @@
|
|||
WITH POINTER MSG-LENGTH.
|
||||
PERFORM SEND-LINE.
|
||||
|
||||
HANDLE-BF-CODE.
|
||||
IF PARAM(2) IS EQUAL TO SPACES THEN
|
||||
PERFORM BEGIN-REPLY
|
||||
STRING "CODE. " DELIMITED BY SIZE,
|
||||
BF-CODE DELIMITED BY " "
|
||||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH
|
||||
PERFORM SEND-LINE
|
||||
ELSE
|
||||
MOVE PARAM(2) TO REG(1)
|
||||
* PRESERVE VARIABLES FOR REPLY.
|
||||
MOVE NICK TO REG(2)
|
||||
MOVE COMMAND TO REG(3)
|
||||
MOVE TARGET TO REG(4)
|
||||
PERFORM VALIDATE-USER
|
||||
IF USER-LEVEL > 60 THEN
|
||||
* RESTORE NICK AND TARGET, THEN REPLY.
|
||||
MOVE REG(2) TO NICK
|
||||
MOVE REG(3) TO COMMAND
|
||||
MOVE REG(4) TO TARGET
|
||||
MOVE SPACES TO BF-CODE
|
||||
MOVE REG(1) TO BF-CODE
|
||||
PERFORM REPLY-ACK.
|
||||
|
||||
HANDLE-BF-INPUT.
|
||||
IF PARAM(2) IS EQUAL TO SPACES THEN
|
||||
PERFORM BEGIN-REPLY
|
||||
STRING "INPUT. " DELIMITED BY SIZE,
|
||||
BF-INPUT DELIMITED BY " "
|
||||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH
|
||||
PERFORM SEND-LINE
|
||||
ELSE
|
||||
MOVE PARAM(2) TO REG(1)
|
||||
* PRESERVE VARIABLES FOR REPL
|
||||
MOVE NICK TO REG(2)
|
||||
MOVE COMMAND TO REG(3)
|
||||
MOVE TARGET TO REG(4)
|
||||
PERFORM VALIDATE-USER
|
||||
IF USER-LEVEL > 50 THEN
|
||||
* RESTORE NICK AND TARGET, THEN REPLY
|
||||
MOVE REG(2) TO NICK
|
||||
MOVE REG(3) TO COMMAND
|
||||
MOVE REG(4) TO TARGET
|
||||
MOVE SPACES TO BF-INPUT
|
||||
MOVE REG(1) TO BF-INPUT
|
||||
PERFORM REPLY-ACK.
|
||||
|
||||
HANDLE-BF-OUTPUT.
|
||||
PERFORM BEGIN-REPLY.
|
||||
D DISPLAY "STRINGING BF OUTPUT".
|
||||
STRING "OUTPUT. " DELIMITED BY SIZE,
|
||||
BF-OUTPUT DELIMITED BY "$NUL$"
|
||||
DELIMITED BY "$LF$"
|
||||
DELIMITED BY "$SUB$"
|
||||
INTO MSG-BODY
|
||||
WITH POINTER MSG-LENGTH.
|
||||
D DISPLAY "SENDING LINE".
|
||||
PERFORM SEND-LINE.
|
||||
D DISPLAY "SENT LINE".
|
||||
|
||||
HANDLE-BF-RUN.
|
||||
D DISPLAY "HANDLING BF-RUN".
|
||||
MOVE PARAM(2) TO REG(1).
|
||||
* PRESERVE VARIABLES FOR REPLY
|
||||
MOVE NICK TO REG(2).
|
||||
MOVE COMMAND TO REG(3).
|
||||
MOVE TARGET TO REG(4).
|
||||
PERFORM VALIDATE-USER.
|
||||
IF REG(1) IS EQUAL TO SPACES THEN
|
||||
MOVE 999 TO MAYBE-CYCLE-LIMIT
|
||||
ELSE
|
||||
UNSTRING REG(1) INTO
|
||||
MAYBE-CYCLE-LIMIT.
|
||||
D DISPLAY "CYCLE LIMIT. ", CYCLE-LIMIT.
|
||||
* RESTORE NICK AND TARGET, THEN REPLY.
|
||||
MOVE REG(2) TO NICK
|
||||
MOVE REG(3) TO COMMAND
|
||||
MOVE REG(4) TO TARGET
|
||||
IF USER-LEVEL > 50 THEN
|
||||
MOVE 1 TO MSG-LENGTH
|
||||
PERFORM REPLY-ACK
|
||||
MOVE MAYBE-CYCLE-LIMIT TO CYCLE-LIMIT
|
||||
PERFORM BF-LIMIT-CYCLES
|
||||
CALL "BF-RUN" USING BF-I-O
|
||||
D DISPLAY "BF RAN"
|
||||
PERFORM HANDLE-BF-OUTPUT.
|
||||
|
||||
BF-LIMIT-CYCLES.
|
||||
IF CYCLE-LIMIT > 999 THEN
|
||||
IF USER-LEVEL < 90 THEN
|
||||
IF USER-LEVEL < 70 THEN
|
||||
MOVE 999 TO CYCLE-LIMIT
|
||||
ELSE IF CYCLE-LIMIT > 9999 THEN
|
||||
MOVE 9999 TO CYCLE-LIMIT.
|
||||
|
||||
QUIT.
|
||||
CALL "CHANNEL-CLOSE".
|
||||
CLOSE CONFIG.
|
||||
CLOSE USERS.
|
||||
STOP RUN.
|
||||
|
||||
|
|
Loading…
Reference in a new issue