Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Beispiel für ein Asynchron-Teilprogramm MSGTAC

Das MSGTAC-Teilprogramm NOHACK zählt die Anzahl der Fehlversuche in einem TLS. Wenn openUTM ein KDCSIGN akzeptiert (d.h. Meldung K008 oder K033), so wird dieser TLS wieder gelöscht.
Falls nach drei ungültigen KDCSIGN-Versuchen der 4. KDCSIGN-Versuch wieder fehlerhaft ist, so soll das entsprechende Terminal über "asynchrone Administration" diskonnektiert werden, und zwar per FPUT-Aufruf mit KCRN="KDCPTRMA". Der Nachrichtenbereich enthält die Parameter des  Administrationskommando KDCPTRMA, siehe auch openUTM-Handbuch „Anwendungen administrieren“:

PTERM=pterm, PRONAM=prozessor,ACT=DIS

Das Administrationskommando wird dann mit LPUT in der Benutzer-Protokolldatei protokolliert und der TLS gelöscht.

Die K-Meldungen werden jeweils mit FGET vom MSGTAC-Teilprogramm gelesen. Nach der "Verarbeitung" einer K-Meldung wird mit FGET sofort die nächste K-Meldung gelesen, innerhalb desselben Teilprogrammlaufs.

IDENTIFICATION DIVISION.
PROGRAM-ID.
    MSGTAC.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
    COPY KCOPC.
77  ID-HACK-TLS          PIC X(8) VALUE "TLSHACK".
77  HACK-MAX             PIC 9(4) COMP VALUE 3.
01  ADM-SATZ.
  02  ADM-TXT.
    03  F                PIC X(07) VALUE "PTERM=(".
    03  F                PIC X(08).
    03  F                PIC X(09) VALUE "),PRONAM=".
    03  F                PIC X(08).
    03  F                PIC X(11) VALUE ",ACTION=DIS".
01  UTM-FEHLER-ZEILE.
    03  F                PIC X(18) VALUE "Error in prog. unit".
    03  F-MODUL          PIC X(08) VALUE "NOHACK".
    03  F                PIC X(12) VALUE "; Vorg./TAC".
    03  F-VG             PIC X(08).
    03  F                PIC X(01) VALUE "/".
    03  F-AL             PIC X(08).
    03  F                PIC X(05) VALUE " wg.".
    03  F-OP             PIC X(04).
    03  F                PIC X(07) VALUE "  (RC:".
    03  F-RC             PIC X(08).
    03  F                PIC X(01) VALUE ")".
 LINKAGE SECTION.
     COPY KCKBC.
     05  FILLER           PIC X.
     COPY KCPAC.
     COPY KCMSGC.
     03  NB.
       05  HACKER-LTERM     PIC X(8).
       05  NB-ADM.
         07  F              PIC X(07).
         07  PTRM           PIC X(08).
         07  F              PIC X(09).
         07  PRNM           PIC X(08).
         07  F              PIC X(11).
       05  TLS-HACK.
         07  HACK-ANZ       PIC 9(4) COMP.
 PROCEDURE DIVISION USING KCKBC, KCSPAB.
 MAIN SECTION .
 INIT-ANF.
     MOVE LOW-VALUE TO KCPAC
     MOVE INIT      TO KCOP
     MOVE 0         TO KCLKBPRG
     COMPUTE KCLPAB  = FUNCTION LENGTH (KCSPAB)
     CALL "KDCS" USING KCPAC.
     IF  KCRCCC  NOT =  ZERO
     THEN  GO TO  PEND-LPUT.
 FGET-ANF.
     MOVE LOW-VALUE TO KCPAC
     MOVE FGET      TO KCOP
     COMPUTE KCLA    = FUNCTION LENGTH (KCMSGC)
     MOVE SPACE     TO KCMF
     CALL "KDCS" USING KCPAC, KCMSGC
     IF  KCRCCC  NOT =  ZERO
     THEN
        IF  KCRCCC = "10Z"
        THEN
          GO TO PEND-ANF
        ELSE
          GO TO PEND-LPUT.
     IF  MSGNR = "K004"
*                                      Invalid identification *
       MOVE  LTRM OF K004  TO HACKER-LTERM
     ELSE IF  MSGNR = "K006"
*                                            Invalid password *
       MOVE  LTRM OF K006  TO HACKER-LTERM
     ELSE IF  MSGNR = "K008"
*                                            KDCSIGN accepted *
       MOVE  LTRM OF K008  TO HACKER-LTERM
     ELSE IF  MSGNR = "K031"
*                                                 Card not ok *
       MOVE  LTRM OF K031  TO HACKER-LTERM
     ELSE IF  MSGNR = "K033"
*                                     if no K008 is generated *
      MOVE  LTRM OF K033  TO HACKER-LTERM

     ELSE
       MOVE MSGNR TO KCOP
       GO TO PEND-LPUT.
     PERFORM ARBEIT
     IF  KCRCCC  NOT =  ZERO
        GO TO  PEND-LPUT.
*                                    More messages waiting ?? *
     GO TO  FGET-ANF.
 PEND-ANF.
     MOVE LOW-VALUE TO KCPAC
     MOVE PEND      TO KCOP
     MOVE "FI"      TO KCOM
     CALL "KDCS" USING KCPAC.
 PROG-ENDE.
     EXIT PROGRAM.
 PEND-LPUT.
     MOVE KCOP             TO F-OP
     MOVE KCTACVG          TO F-VG
     MOVE KCTACAL          TO F-AL
     MOVE KCRC             TO F-RC
     MOVE LOW-VALUE TO KCPAC
     MOVE LPUT      TO KCOP
     COMPUTE KCLA    = FUNCTION LENGTH (UTM-ERROR-LINE)
     CALL "KDCS" USING KCPAC, UTM-ERROR-LINE.
     MOVE LOW-VALUE TO KCPAC
     MOVE PEND      TO KCOP
     MOVE "FI"      TO KCOM
     CALL "KDCS" USING KCPAC.
 M9.
     EXIT.
/
 ARBEIT SECTION .
 A0.
     MOVE LOW-VALUE    TO KCPAC
     MOVE GTDA         TO KCOP
     MOVE 2            TO KCLA
     MOVE ID-HACK-TLS  TO KCRN
     MOVE HACKER-LTERM TO KCLT
     CALL "KDCS" USING KCPAC, TLS-HACK
     IF   KCRCCC  NOT =  ZERO
       GO TO  A9.
     IF  KCRLM = 0
     THEN
        IF  MSGNR = "K008"
              OR  = "K033"
        THEN
*                                           Ok, no TLS exists *
           NEXT SENTENCE
        ELSE
*                                                  Create TLS *
           MOVE LOW-VALUE    TO KCPAC
           MOVE PTDA         TO KCOP
           MOVE 2            TO KCLA
           MOVE 1            TO HACK-NO
           MOVE ID-HACK-TLS  TO KCRN
           MOVE HACKER-LTERM TO KCLT
          CALL "KDCS" USING KCPAC, TLS-HACK
     ELSE
        IF  MSGNR = "K008"
              OR  = "K033"
        THEN
*                                             Ok; delete TLS *
           MOVE LOW-VALUE    TO KCPAC
           MOVE PTDA         TO KCOP
           MOVE 0            TO KCLA
           MOVE ID-HACK-TLS  TO KCRN
           MOVE HACKER-LTERM TO KCLT
           CALL "KDCS" USING KCPAC, TLS-HACK
        ELSE
           PERFORM CHECK-NO.
 A9.
     EXIT.
/
 PRUEF-ANZ SECTION .
 P0.
     ADD 1 TO HACK-NO
     IF  HACK-NO  NOT >  HACK-MAX
     THEN
*                                            Try it once more *
        MOVE LOW-VALUE    TO KCPAC
        MOVE PTDA         TO KCOP
        MOVE 2            TO KCLA
        MOVE ID-HACK-TLS  TO KCRN
        MOVE HACKER-LTERM TO KCLT
        CALL "KDCS" USING KCPAC, TLS-HACK
        GO TO  P9.
*                                               Disconnect !! *
     MOVE ADM-TXT TO NB-ADM
     IF  MSGNR = "K004"
       MOVE CORR  K004 TO NB-ADM
     ELSE IF  MSGNR = "K006"
       MOVE CORR  K006 TO NB-ADM
     ELSE
       MOVE CORR  K031 TO NB-ADM.
 P-FPUT.
     MOVE LOW-VALUE  TO KCPAC
     MOVE FPUT       TO KCOP
     MOVE "NE"       TO KCOM
     MOVE "KDCPTRMA" TO KCRN
     COMPUTE KCLM     = FUNCTION LENGTH (NB-ADM)
     MOVE SPACE      TO KCMF
     MOVE ZERO       TO KCDF
     CALL "KDCS" USING KCPAC, NB-ADM
     IF  KCRCCC  NOT =  ZERO
       GO TO  P9.
 P-LPUT.
*                                           Write to user log *
     MOVE LOW-VALUE TO KCPAC
     MOVE LPUT      TO KCOP
     COMPUTE KCLA    = FUNCTION LENGTH (NB-ADM)
     CALL "KDCS" USING KCPAC, NB-ADM
     IF  KCRCCC  NOT =  ZERO
       GO TO  P9.
 P-PTDA.
*                                                  Delete TLS *
     MOVE LOW-VALUE    TO KCPAC
    MOVE PTDA         TO KCOP
    MOVE ZERO         TO KCLA
    MOVE ID-HACK-TLS  TO KCRN
    MOVE HACKER-LTERM TO KCLT
    CALL "KDCS" USING KCPAC, TLS-HACK.
P9.
    EXIT.

Das obige Beispiel des MSGTAC-Teilprogramm zeigt lediglich die Möglichkeiten auf, wie Meldungen geeignet ausgewertet und die Anwendung administriert werden kann.

Zur Überwachung von Sicherheitsverletzungen sollte jedoch die K094-Meldung genutzt werden (SIGNON SILENT-ALARM), da hier auch UPIC- und OSI TP-Clients eingeschlossen sind. Außerdem kann die UTM-Anwendung umfassender über die programmierte Administration (ADMI-Schnittstelle) administriert werden.