home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / lsmt213c.zip / setsel.cmd < prev    next >
OS/2 REXX Batch file  |  1996-10-09  |  10KB  |  306 lines

  1. /*---------------------------------------------------------------------------*\
  2. |   SET all Application-Selector from a LS 3.0 and higher                     |
  3. |   and dump it to an ASCII File                                              |
  4. |                                     (C) Alain Rykaert - IBM-Belgium - MAY96 |
  5. \*---------------------------------------------------------------------------*/
  6.  
  7.     Parse Arg Option
  8.  
  9.     Call INIT                    /* Initialisation of DLL's and other stuff*/
  10.     Call CHKOPT                          /* Check Options & display Welcome*/
  11.     Call CHKPWS                               /* Check the PWS & Admin name*/
  12.     Call MAIN                                            /* do the main job*/
  13.     Call QUIT                                                       /* Quit*/
  14.  
  15.  MAIN:/* ------------------------------------------------------ MAIN: -------*/
  16.  
  17.     Call Time('R')
  18.    'if exist' CHKF 'del' CHKF
  19.     EC = 0
  20.     ExitCode = X2D('FE00')                          /* Good CID Return code*/
  21.  
  22.     do while Lines(INPF)
  23.        LLINE = LineIN(INPF)
  24.        OLINE = LLINE
  25.        parse value LLINE with OPT ';' LLINE
  26.        select
  27.         when OPT = '',
  28.          | LLINE = '',
  29.          | Left(Strip(OPT),1) = '*' then Iterate
  30.         when Translate(OPT) = 'OPT' then Call COLUMNS
  31.         when Translate(OPT) = 'A'   then Call UPDSEL
  32.         when Translate(OPT) = 'D'   then Call DELSEL
  33.         when Translate(OPT) = 'U'   then Call UPDSEL
  34.         otherwise Iterate
  35.        end
  36.        if EC
  37.         then do
  38.                  Call LineOut CHKF, OLINE
  39.                  EC = 0
  40.                  ExitCode = X2D('1604')              /* Bad CID return code*/
  41.              end
  42.         else Nop
  43.     end
  44.     say '0909'x 'Total Time  =' Trunc(Time('E'),2)
  45.  
  46.     Return
  47.  
  48.  ADDSEL:/* ---------------------------------------------------- ADDSEL: -----*/
  49.  
  50.     /* Goto the UPDSEL section */
  51.  
  52.  DELSEL:/* ---------------------------------------------------- DELSEL: -----*/
  53.  
  54.     Parse Value LLINE with USERID ';' LLINE
  55.  
  56.     USERID = Strip(USERID)
  57.  
  58.     RC = NetDelete(32, '\\'SRVNAME, USERID)
  59.     if RC = 0
  60.      then RC = ''
  61.      else Nop
  62.  
  63.     Call LOGIT 'Delete all Applications for', USERID, RC
  64.  
  65.     Return
  66.  
  67.  UPDSEL: /*---------------------------------------------------- UPDSEL: -----*/
  68.  
  69.     EC = 0       /*  Reset the Error Check Flag  */
  70.     Parse Value LLINE with USERID ';' LLINE
  71.     USERID = Strip(USERID)
  72.     if \MUTE
  73.      then do
  74.              Call SysCurState OFF
  75.              Call SysCurPos 20,16
  76.              say ESC'[K'
  77.              Call SysCurPos 20,16
  78.           end
  79.      else Nop
  80.     say ' Update User =' USERID
  81.  
  82.     CHKAPPL = ''
  83.     RC = NetGetInfo(32, 'ApplSelInfo', '\\'SRVNAME, USERID) /* Get current Sel */
  84.     if RC = 0
  85.      then do
  86.              Call RxStemSort 'ApplSelInfo'
  87.              do i = 1 to ApplSelInfo.Count
  88.                 CHKAPPL = CHKAPPL ApplSelInfo.i.AppName
  89.              end
  90.           end
  91.      else Nop
  92. /*  say '-' USERID 'has following Application Selector :' CHKAPPL */
  93.  
  94.     i = 1
  95.     do while LLINE <> ''
  96.        i = i + 1
  97.        parse value LLINE with FLAG ';' LLINE
  98.        FLAG = Translate(Strip(FLAG))
  99.  
  100.        APPL = COLNAME.i           /* Reminder : COLNAME = Application Name */
  101.  
  102.        if FLAG = 'X'
  103.         then do
  104.                 if Wordpos(APPL,CHKAPPL) > 0
  105.                  then Nop
  106.                  else do
  107.                          RC = NetGetInfo(30, 'ApplInfo', '\\'SRVNAME, APPL)
  108.                          if RC = 0
  109.                           then Nop
  110.                           else do  /* could not retieve Appl Info from Appl */
  111.                                   RC = ''
  112.                                   Call LOGIT 'Get ApplInfo for Application', APPL, RC
  113.                                   Return  /* leave the update */
  114.                                end
  115.  
  116.                          RC = NetAdd(32, '\\'SRVNAME, APPL, USERID, ApplInfo.AppType)
  117.                          if RC = 0
  118.                           then RC = ''
  119.                           else Nop
  120.                          Call LOGIT 'Add Application on User', USERID '-' APPL, RC
  121.                       end
  122.              end
  123.         else do
  124.                 if Wordpos(APPL,CHKAPPL) > 0
  125.                  then do
  126.                          RC = NetDelete(32, '\\'SRVNAME, USERID, APPL)
  127.                          if RC = 0
  128.                           then RC = ''
  129.                           else Nop
  130.                          Call LOGIT 'Del Application on User', USERID '-' APPL, RC
  131.                       end
  132.                  else Nop
  133.              end
  134.     end
  135.  
  136.     Return
  137.  
  138.  SETINFO: /*--------------------------------------------------- SETINFO: ----*/
  139.  
  140.     RC = NetSetInfo(70, COLNAME, GROUPINFO.COLNAME, '\\'SRVNAME, GROUPINFO.NAME)
  141.      if RC = 0
  142.       then RC = ''
  143.       else EC = 1
  144.     if COLNAME = 'PASSWORD'
  145.      then Call LOGIT 'Update Groups', GROUPINFO.NAME '-' '****', RC
  146.      else Call LOGIT 'Update Groups', GROUPINFO.NAME '-' GROUPINFO.COLNAME, RC
  147.  
  148.     Return
  149.  
  150.  COLUMNS: /*--------------------------------------------------- COLUMNS: ----*/
  151.  
  152.     BANNER = 'OPT'
  153.     i = 0
  154.     do while LLINE <> ''
  155.        i = i + 1
  156.        parse value LLINE with COLNAME.i ';' LLINE
  157.        BANNER = BANNER';'COLNAME.i
  158.     end
  159.  
  160.     COLT = i                      /* Total numbers of columns */
  161.     Call LineOut CHKF, BANNER
  162.  
  163.     Return
  164.  
  165.  CHKOPT: /*---------------------------------------------------- CHKOPT: -----*/
  166.  
  167.     SRVNAME = ''
  168.     INPF    = 'SELECTOR.CSV'
  169.     LOGF    = 'LSMT.LOG'
  170.     CHKF    = 'SELECTOR.CHK'
  171.     PIPE    = ''
  172.     TRACE   = 0
  173.     MUTE    = 0
  174.  
  175.     OPTION = Translate(OPTION)
  176.     do while OPTION <> ''
  177.        Parse value OPTION with ARGUMENT ' ' OPTION
  178.        select
  179.         when Left(ARGUMENT,5) = '/SRV:' then SRVNAME = Substr(ARGUMENT,6)
  180.         when Left(ARGUMENT,5) = '/INP:' then INPF    = Substr(ARGUMENT,6)
  181.         when Left(ARGUMENT,5) = '/LOG:' then LOGF    = Substr(ARGUMENT,6)
  182.         when Left(ARGUMENT,5) = '/CHK:' then CHKF    = Substr(ARGUMENT,6)
  183.         when Left(ARGUMENT,5) = '/PIP:' then PIPE    = Substr(ARGUMENT,6)
  184.         when Left(ARGUMENT,2) = '/M'    then MUTE    = 1
  185.         when Left(ARGUMENT,2) = '/T'    then TRACE   = 1
  186.         otherwise Nop
  187.        end
  188.     end
  189.  
  190.     if SRVNAME = '' then signal GETHELP
  191.  
  192.     if \MUTE
  193.      then do
  194.              Topic1 = 'SETWELCOME'
  195.              Topic_String.Topic1.1 = SRVNAME
  196.              Topic_String.Topic1.2 = INPF
  197.              Topic_String.Topic1.3 = LOGF
  198.              Topic_String.Topic1.4 = CHKF
  199.              Topic_String.Topic1.5 = PIPE' '
  200.              Topic_List = 'WELCOMELOGO' Topic1 'SETSEL'
  201.              Call GETANS
  202.              Parse VALUE SysCurPos() With Old_R Old_C; 'pause'
  203.              Call SysCurPos Old_R, Old_C; say ESC'[K'
  204.           end
  205.      else do
  206.              say 'ServerName =' SRVNAME
  207.              say 'InputFile  =' INPF
  208.              say 'LogFile    =' LOGF
  209.              say 'CheckFile  =' CHKF
  210.           end
  211.  
  212.     Return
  213.  
  214.  CHKPWS: /*---------------------------------------------------- CHKPWS: -----*/
  215.  
  216.     RC = NetGetInfo(350, 'WKSTAINFO','')
  217.     if RC = 0
  218.      then do
  219.              ADMNAME = WKSTAINFO.UserName
  220.              PWSNAME = WKSTAINFO.ComputerName
  221.           end
  222.      else do
  223.             Call LOGIT 'WKSTAINFO' USERID.i ':' RC
  224.             Call Quit
  225.           end
  226.     Return
  227.  
  228.  INIT: /*------------------------------------------------------ INIT: -------*/
  229.  
  230.     Call RgUtil   '/m' /* Rexx Utilities        */
  231.     Call RgUtils  '/m' /* Rexx Utilities        */
  232.     Call RgLSRXUT '/m' /* Lan Server Rexx Utils */
  233.  
  234.     Parse Upper Source . . P_NAME
  235.     PRGN = Filespec('N', Left(P_NAME, Length(P_NAME) -4))
  236.  
  237.    '@echo off'
  238.     ESC   = '1B'x
  239.     REDIR = '>NUL 2>NUL'
  240.  
  241.     Resource_File = 'LSMT.RSC'
  242.     Call CHKFILE Resource_File
  243.  
  244.     Return
  245.  
  246.  GETANS: /*---------------------------------------------------- GETANS: -----*/
  247.  
  248.     Vars_List = Ansi_Say(Resource_File Topic_List)
  249.     Parse VALUE SysCurPos() With Old_R Old_C
  250.     Do While Vars_List <> ''
  251.        Parse VALUE Vars_List With Topic_Id ';' Var_Id ';' Row ';' Column ';' Color ';' Vars_List
  252.        Call SysCurPos Row, Column
  253.        Say x2c(Color) || Topic_String.Topic_Id.Var_Id || '1B'x || '[0m'
  254.        End
  255.     Call SysCurPos Old_R, Old_C
  256.  
  257.     Return
  258.  
  259.  GETHELP: /*--------------------------------------------------- GETHELP: ----*/
  260.  
  261.     if \MUTE
  262.      then do
  263.              Topic1='SETHELP'
  264.              Topic_String.Topic1.1 = PRGN
  265.              Topic_List=Topic1
  266.              Call GETANS
  267.           end
  268.      else say 'Incorrect options.'
  269.  
  270.     Call QUIT
  271.  
  272.     Return
  273.  
  274.  CHKFILE: /*--------------------------------------------------- CHKFILE: ----*/
  275.  
  276.     Parse Arg FILE
  277.  
  278.     RC = Stream(FILE, 'C', 'QUERY EXIST')
  279.     if RC = ''
  280.      then do
  281.              say ' File' FILE 'not found.'
  282.              Call QUIT
  283.           end
  284.      else Nop
  285.     Call Stream FILE, 'C', 'CLOSE'
  286.  
  287.     Return
  288.  
  289.  LOGIT: /*----------------------------------------------------- LOGIT: ------*/
  290.  
  291.     FUNC = ARG(1); INFO = ARG(2); RCOD = ARG(3)
  292.     RC = LLOGIT(LOGF, PIPE, ADMNAME, PRGN, FUNC, INFO, RCOD)
  293.  
  294.     Return
  295.  
  296.  QUIT: /*------------------------------------------------------ QUIT: -------*/
  297.  
  298.     Call LineOut 'LSMT.END', PRGN, 1
  299.     Call Stream  'LSMT.END', 'C', 'CLOSE'
  300.     Call Stream   INPF,      'C', 'CLOSE'
  301.     Call Stream   LOGF,      'C', 'CLOSE'
  302.     Call Stream   CHKF,      'C', 'CLOSE'
  303.     Exit ExitCode
  304.  
  305.  /*--------------------------------------------------------------------------*/
  306.