C* DSMREV - REVOKE INTERACTIVE PRIVLEDGES C SUBROUTINE DSMREV (CHKID, UPFID, IUICV, NUICV) C C REVOKE INTERACTIVE PRIVLEDGES - C IRVMSK IS THE MASK TO REVOKE PRIVLEDGE TO RUN/LINK/FOR/MAC C C CHKID - DSMMSG.DAT ID BLOCK C UPFID - PDSUPF.DAT ID BLOCK C IUICV - VECTOR CONTAINING OFFENDING UIC'S C NUICV - # OF UIC'S IN IUICV C C THE USER PROFILE FILE (PDSUPF.DAT) IS SEARCHED FOR ALL USERS WHOSE C DEFAULT UIC IS LISTED IN IUICV. THE USERS PRIVLEDGE MASK IS UPDATED C TO REVOKE CERTAIN PRIVLEDGES. THE USER NAME AND THE OLD PRIV MASK IS C WRITTEN TO DSMMSG.DAT FOR SAFEKEEPING. DSMRES USES THE OLD MASKS TO C RESTORE PRIVLEDGES WHEN DISK USEAGE IS ONCE AGAIN WITHIN THE C SPECIFIED LIMITS. C INCLUDE 'DSMCM.COM/NOLIST' C DIMENSION IUPFV(32), ICHKV(5), IUICV(1) EQUIVALENCE (IUPFV(1),IS), (IUPFV(2),IE) DIMENSION IUNAM(6), ITUICV(1), BTUIC(2) EQUIVALENCE (ITUICV,ITUIC,BTUIC) C NRCHK = 1 CALL X1DR (CHKID, NRCHK, 1, NSUMS) NRCHK = NRCHK + NSUMS*2 NSAVE = NRCHK ! SAVE THIS RECORD NUMBER CALL X1DR (CHKID, NRCHK, 1, NUSERS) C C SEARCH THE UPF FILE FOR MATCHES ON UIC'S C NRUPF = 1 CALL X1DR (UPFID, NRUPF, 2, IS) NUSUPF = IE-IS + 1 NRUPF = (IS-1)*NWUPFR + 1 D WRITE (6,7000) NSAVE, NUSERS, NUSUPF, NRUPF D7000 FORMAT (' ->DSMREV<-',4I6) C DO 300 I=1, NUSUPF C C READ A UPF RECORD C CALL X1DR (UPFID, NRUPF, NWUPFR, IUPFV) C C CHECK IF UIC'S MATCH ON THIS ONE C DO 200 J=1,NUICV D ITUIC = IUICV(J) D WRITE (6,7002) BTUIC(2),BTUIC(1), J D7002 FORMAT (' [',O3,',',O3,']', I4) D ITUIC = IUPFV(IUPFUI) D WRITE (6, 7002) BTUIC(2), BTUIC(1) IF (IUICV(J) .NE. IUPFV(IUPFUI)) GO TO 200 C C UIC MATCH C SEE IF THIS USER HAS ALREADY BEEN FLAGGED ! C NRCHK = NSAVE + 1 IF (NUSERS .LE. 0) GO TO 150 C DO 140 I140=1, NUSERS CALL X1DR (CHKID, NRCHK, 5, ICHKV) DO 130 I130=1, 4 IF (ICHKV(I130) .NE. IUPFV(I130)) GO TO 140 ! NO MATCH 130 CONTINUE C C USERS MATCH - ALREADY LOGGED IN DSMMSG.DAT SKIP IT C GO TO 300 C 140 CONTINUE C C USER NOT YET IN DSMMSG.DAT - FILE HIM C 150 CONTINUE ITUIC = IUICV(J) CALL R50ASC(12, IUPFV, IUNAM) CALL X1DW (CHKID, NRCHK, 4, IUPFV) ! WRITE OUR USER NAME CALL X1DW (CHKID, NRCHK, 1, IUPFV(IUPFPR)) ! AND OLD MASK ITEMP = IUPFV(IUPFPR) IUPFV(IUPFPR) = IUPFV(IUPFPR) .AND. IRVMSK ! TURN OFF SOME PRIVS NRUPF = NRUPF - NWUPFR ! AND RE-WRITE THE CALL X1DW (UPFID, NRUPF, NWUPFR, IUPFV) ! THE UPF RECORD NUSERS = NUSERS + 1 ! UPDATE NUSERS IN DSMMSG WRITE (6, 510) IUNAM, ITEMP, IUPFV(IUPFPR), BTUIC(2),BTUIC(1) 510 FORMAT (' REVOKED PRIVILEGES FOR "',6A2,'", ',O6,' -> ',O6, 1 4X,'[',O3,',',O3,']') GO TO 300 ! GET NEXT USER REC C C 200 CONTINUE 300 CONTINUE C C UPDATE NUSERS IN DSMMSG C NRCHK = NSAVE CALL X1DW (CHKID, NRCHK, 1, NUSERS) C RETURN END