midrange.com code scratchpad
Name:
Chris Bipes
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
05/02/2016 04:26:19 pm
IP:
Logged
Description:
reset user profile on iSeries with logging of password changes (password not included). Cannot reset *SECOFR or *SECADM profiles.
Code:
  1. qcmdsrc:
  2. CMD        PROMPT('Reset User Profile')                   
  3.                                                           
  4. PARM       KWD(USRPRF) TYPE(*NAME) LEN(10) +              
  5.              CHOICE(*NONE) PROMPT('User Profile' 1)       
  6.                                                           
  7. PARM       KWD(PASSWORD) TYPE(*CHAR) LEN(10) +            
  8.              DFT(*SAME) SPCVAL((*SAME *SAME)) +           
  9.              ALWUNPRT(*NO) ALWVAR(*NO) PROMPT('Password') 
  10.  
  11. qclsrc:
  12. /******************************************************************************/
  13. /* Re-enable user profiles and optionally reset the password to the user      */
  14. /*  profile.                                                                  */
  15. /*                                                                            */
  16. /* By Chris Bipes                                            04/12/01         */
  17. /******************************************************************************/
  18.              PGM        PARM(&usrprf &password)                                 
  19.                                                                                 
  20.              DCL        VAR(&usrprf  ) TYPE(*CHAR) LEN(10)                      
  21.              DCL        VAR(&password) TYPE(*CHAR) LEN(10)                      
  22.              DCL        VAR(&pwdchg)   TYPE(*CHAR) LEN(1)                       
  23.              DCL        VAR(&CHAR    ) TYPE(*CHAR) LEN(1)                       
  24.              DCL        VAR(&SPCAUT  ) TYPE(*CHAR) LEN(100)                     
  25.              DCL        VAR(&USRCLS  ) TYPE(*CHAR) LEN(10)                      
  26.              DCL        VAR(&SPCAUT01) TYPE(*CHAR) LEN(10)                      
  27.              DCL        VAR(&SPCAUT02) TYPE(*CHAR) LEN(10)                      
  28.              DCL        VAR(&SPCAUT03) TYPE(*CHAR) LEN(10)                      
  29.              DCL        VAR(&SPCAUT04) TYPE(*CHAR) LEN(10)                      
  30.              DCL        VAR(&SPCAUT05) TYPE(*CHAR) LEN(10)                      
  31.              DCL        VAR(&SPCAUT06) TYPE(*CHAR) LEN(10)                      
  32.              DCL        VAR(&SPCAUT07) TYPE(*CHAR) LEN(10)                      
  33.              DCL        VAR(&SPCAUT08) TYPE(*CHAR) LEN(10)                      
  34.              DCL        VAR(&SPCAUT09) TYPE(*CHAR) LEN(10)                      
  35.              DCL        VAR(&SPCAUT10) TYPE(*CHAR) LEN(10)                      
  36.              DCL        VAR(&CURUSER ) TYPE(*CHAR) LEN(10)                      
  37.                                                                                 
  38.              RTVJOBA    USER(&CURUSER)                                          
  39. /* DO NOT ALLOW CHANGES TO IBM PROFILES                                       */
  40.              CHGVAR     VAR(&CHAR) VALUE(%SST(&USRPRF 1 1))                     
  41.                                                                                 
  42.              IF         COND(&CHAR = 'Q') THEN(DO)                              
  43.              SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Cannot +           
  44.                           change IBM profiles') TOPGMQ(*EXT)                    
  45.              GOTO       CMDLBL(ENDPGM)                                          
  46.              ENDDO                                                              
  47.                                                                                 
  48. /* DO NOT ALLOW CHANGES SECURITY PROFILES                                     */
  49.              RTVUSRPRF  USRPRF(&USRPRF) SPCAUT(&SPCAUT) USRCLS(&USRCLS)         
  50.              IF         COND((&USRCLS = '*SECOFR') *OR (&USRCLS = +    
  51.                           '*SECADM')) THEN(DO)                         
  52.              SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Cannot +  
  53.                           change SECURITY profiles') TOPGMQ(*EXT)      
  54.              GOTO       CMDLBL(ENDPGM)                                 
  55.              ENDDO                                                     
  56.                                                                        
  57.              CHGVAR &SPCAUT01 %SST(&SPCAUT 01 10)                      
  58.              CHGVAR &SPCAUT02 %SST(&SPCAUT 11 10)                      
  59.              CHGVAR &SPCAUT03 %SST(&SPCAUT 21 10)                      
  60.              CHGVAR &SPCAUT04 %SST(&SPCAUT 31 10)                      
  61.              CHGVAR &SPCAUT05 %SST(&SPCAUT 41 10)                      
  62.              CHGVAR &SPCAUT06 %SST(&SPCAUT 51 10)                      
  63.              CHGVAR &SPCAUT07 %SST(&SPCAUT 61 10)                      
  64.              CHGVAR &SPCAUT08 %SST(&SPCAUT 71 10)                      
  65.              CHGVAR &SPCAUT09 %SST(&SPCAUT 81 10)                      
  66.              CHGVAR &SPCAUT10 %SST(&SPCAUT 91 10)                      
  67.                                                                        
  68.              IF         COND((&SPCAUT01 = '*SECADM') +                 
  69.                          *OR (&SPCAUT01 = '*SECOFR') +                 
  70.                          *OR (&SPCAUT02 = '*SECADM') + 
  71.                          *OR (&SPCAUT02 = '*SECOFR') + 
  72.                          *OR (&SPCAUT03 = '*SECADM') + 
  73.                          *OR (&SPCAUT03 = '*SECOFR') + 
  74.                          *OR (&SPCAUT04 = '*SECADM') + 
  75.                          *OR (&SPCAUT04 = '*SECOFR') + 
  76.                          *OR (&SPCAUT05 = '*SECADM') + 
  77.                          *OR (&SPCAUT05 = '*SECOFR') + 
  78.                          *OR (&SPCAUT06 = '*SECADM') + 
  79.                          *OR (&SPCAUT06 = '*SECOFR') + 
  80.                          *OR (&SPCAUT07 = '*SECADM') + 
  81.                          *OR (&SPCAUT07 = '*SECOFR') + 
  82.                          *OR (&SPCAUT08 = '*SECADM') + 
  83.                          *OR (&SPCAUT08 = '*SECOFR') + 
  84.                          *OR (&SPCAUT09 = '*SECADM') + 
  85.                          *OR (&SPCAUT09 = '*SECOFR') + 
  86.                          *OR (&SPCAUT10 = '*SECADM') + 
  87.                          *OR (&SPCAUT10 = '*SECOFR') + 
  88.                          ) THEN(DO)                    
  89.                                                                     SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Cannot +           
  90.                           change SECURITY profiles') TOPGMQ(*EXT)               
  91.              GOTO       CMDLBL(ENDPGM)                                          
  92.              ENDDO                                                              
  93.                                                                                 
  94. /* RE-ENABLE Netserver side                                                   */
  95.              CALL       PGM(RSTNETPWD) PARM(&USRPRF)                            
  96.              MONMSG     MSGID(CPF0000)                                          
  97.                                                                                 
  98. /* RE-ENABLE PROFILE IF NO PASSWORD GIVEN                                     */
  99.              IF         COND(&PASSWORD = ' ') THEN(DO)                          
  100.                CHGUSRPRF  USRPRF(&USRPRF) STATUS(*ENABLED)                      
  101.                CHGVAR     VAR(&PWDCHG) VALUE('N')                               
  102.                GOTO       CMDLBL(LOGPGM)                                        
  103.              ENDDO                                                              
  104.                                                                                 
  105. /* JUST RE-ENABLE PROFILE IF PASSWORD IS NOT CHANGED                          */
  106.              IF         COND(&PASSWORD = '*SAME') THEN(DO)                      
  107.                CHGUSRPRF  USRPRF(&USRPRF) STATUS(*ENABLED)                      
  108.                CHGVAR     VAR(&PWDCHG) VALUE('N')                               
  109.                GOTO       CMDLBL(LOGPGM)                                        
  110.              ENDDO                                                              
  111.                                                                                 
  112.              CHGUSRPRF  USRPRF(&USRPRF) PASSWORD(&PASSWORD) +                   
  113.                           PWDEXP(*YES) STATUS(*ENABLED)                         
  114.                CHGVAR     VAR(&PWDCHG) VALUE('Y')                               
  115.                                                                                 
  116. /* Log the change made                                                        */
  117.  LOGPGM:     CALL       PGM(GBRSECLOG) PARM(&USRPRF &PWDCHG)                    
  118.                                                                                 
  119.  ENDPGM:     ENDPGM                                                             
  120.              RETURN                               
  121.  
  122. qddssrc:
  123.       **************************************************************************
  124.       *                                                                         
  125.       * USER PROFILE'S RESET LOG                                                
  126.       *                                                                         
  127.       **************************************************************************
  128.      A          R GBRSECLOG                 TEXT('RESET USER SECURITY LOG')     
  129.       *                                                                         
  130.      A            CHGUSR        10A         TEXT('USER PROFILE RESET')          
  131.      A                                      COLHDG('User ID' 'Reset')           
  132.      A            CHGPWD         1A         TEXT('PASSWORD CHANGED (Y/N)')      
  133.      A                                      COLHDG('PWD' 'CHG')                 
  134.      A            CHGBY         10A         TEXT('CHANGED BY USER')             
  135.      A                                      COLHDG('Changed' 'By User ID')      
  136.      A            CHGTMSTMP       Z         TEXT('TIME STAMP CHANGED')          
  137.      A                                      COLHDG('Time Stamp' 'Change Made')  
  138.  
  139. qrpglesrc.gbrseclog:
  140.  ****************************************************************
  141.  * Log resetuser command to file                                 
  142.  * 12/12/05 Chris Bipes                                          
  143.  ****************************************************************
  144. HEXPROPTS(*MAXDIGITS)                                            
  145.                                                                  
  146. Fgbpseclog o    e             disk                               
  147.                                                                  
  148.  * PROGRAM STATUS DATA STRUCTURE                                 
  149. D                SDS                                             
  150. D  PGMID                  1     10                               
  151. D  ERRID                 40     46                               
  152. D  ERRDTA                91    170                               
  153. D  JOBID                244    253                               
  154. D  curusr               254    263                               
  155. D  JOB#                 264    269  0                            
  156.                                                                  
  157. c     *entry        Plist                                        
  158. c                   parm                    ChgUsr               
  159. c                   parm                    ChgPwd   
  160. c                                                    
  161. c                   eval      chgby = curusr         
  162. c                                                    
  163. c                   time                    chgtmstmp
  164. c                                                    
  165. c                   write     gbrseclog              
  166. c                                                    
  167. c                   eval      *inlr = *on            
  168. qrpglesrc.rstnetpwd
  169. h Option(*SrcStmt:*NoDebugIO)                                       
  170. h DFTACTGRP(*NO) ACTGRP('QILE')                                     
  171. h BNDDIR('QC2LE')                                                   
  172.                                                                     
  173.  * -----------------------------------------------------------------
  174.  * Data Structures                                                  
  175.  * -----------------------------------------------------------------
  176.  * To pass to API QZLSCHSI format ZLSS0200                          
  177. D dsZLSS0200      DS                                                
  178. D  QNbrUsers              1      4B 0 inz(1)                        
  179. D  QUserIDs               5     14A                                 
  180.                                                                     
  181.                                                                     
  182. d QusEC           DS                                                
  183. d  QusBPrv                1      4B 0          inz(%size(QusEC))    
  184. d  QusBAvl                5      8B 0                               
  185. d  QusEID                 9     15A                                 
  186. d  QusRESERVED           16     16A                                 
  187. D* QusEDATA                       *                                 
  188.                                                                     
  189.                                                                     
  190.  * -----------------------------------------------------------------
  191.  * Local Variables                                                  
  192.  * -----------------------------------------------------------------
  193. d FmtCode         s              8a   inz('ZLSS0200')               
  194. d Pzlss0200       s               *   inz(%addr(dsZLSS0200))        
  195. d Lzlss0200       s              4B 0 inz(%size(dsZLSS0200))        
  196. d PQusEC          s               *   inz(%addr(QUSEC))             
  197. d userid          s             10a                                 
  198.                                                                     
  199.  * -----------------------------------------------------------------
  200.  * Main Line                                                        
  201.  * -----------------------------------------------------------------
  202. c     *entry        plist                                           
  203. c     quserids      parm                    userid                  
  204.                                                                     
  205. c                   call      'QZLSCHSI'                            
  206. c                   parm                    dsZLSS0200              
  207. c                   parm                    Lzlss0200               
  208. c                   parm                    FmtCode
  209. c                   parm                    QusEC  
  210.                                                    
  211. c                   eval      *inlr = *on          
  212.  
  213.  
  214.                                                                                 
© 2004-2019 by midrange.com generated in 0.009s valid xhtml & css