home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / lsmt213c.zip / lsacl.cmd < prev    next >
OS/2 REXX Batch file  |  1998-02-28  |  8KB  |  230 lines

  1. /*---------------------------------------------------------------------------*\
  2. |  Get/Set Access Control List                (C) Alain Rykaert - AUG95-FEB98 |
  3. \*---------------------------------------------------------------------------*/
  4.     Version = '3.01'
  5.     Say '* LSACL Version' Version
  6.  
  7.     Call Init                                                 /* init dll's*/
  8.  
  9.     Parse Upper Arg Option
  10.  
  11.     Call ChkOption                                     /* check the options*/
  12.  
  13.     ServerName = Strip(ServerName,'L','\')
  14.  
  15.     Say '* ServerName:' ServerName
  16.     Say '* Resource:' Resource
  17.     Say '* Log FileName:' LogFileName
  18.     Say '* FileName:' FileName
  19.     Say '* Tree:' Tree
  20.  
  21.  GET:/* ---------------------------------------------------------------------*/
  22.  
  23.     Resource = '\\'ServerName'\'Left(Resource,1)'$'SubStr(Resource,3)
  24.     Resource = Strip(Resource,'T','\')
  25.     Say '* UNC Resource:' Resource
  26.  
  27.     If File = 0                                         /* acl on dir level*/
  28.       Then Do
  29.              If Tree = 1
  30.                Then Do
  31.                       Resource = Resource || '\'
  32.                       Say '* Getting a DIR SysFileTree, please wait...'
  33.                       Call SysFileTree Resource, 'Result', 'DOS'
  34.                     End
  35.                Else Call SysFileTree Resource, 'Result', 'DO'
  36.            End
  37.       Else Do
  38.              If Tree = 1                               /* acl on file level*/
  39.                Then Do
  40.                       Resource = Resource || '\'
  41.                       Say '* Getting a FILE SysFileTree, please wait...'
  42.                       Call SysFileTree Resource, 'Result', 'FOS'
  43.                     End
  44.                Else Call SysFileTree Resource, 'Result', 'FO'
  45.            End
  46.  
  47.     If Result.0 > 0
  48.       Then Do i = 1 to Result.0
  49.              Counter = '('Right(i,Length(Result.0))'/'Right(Result.0,Length(Result.0))')'
  50.              RC = NetGetInfo(10, 'Access', '\\'ServerName, Result.i)/* get acp*/
  51.              If RC = 0
  52.                Then Do
  53.                       AccessList = ''
  54.                       Do j = 1 to Access.Count
  55.                         AccessList = AccessList || Access.j.UgName || ':' || Access.j.Access || ' '
  56.                       End
  57.                       LogText = Counter Result.i '('Access.Count')' AccessList
  58.                     End
  59.                Else LogText = Counter Result.i '(0) -none-'
  60.  
  61.              Say LogText                    /* display the result on screen*/
  62.              If FileName = ''
  63.                Then Nop
  64.                Else Call Logit FileName LogText /* write the result to file*/
  65.            End
  66.       Else Say '! Dir not found'
  67.  
  68.     Exit
  69.  
  70.  SETACL:/* ------------------------------------------------------------------*/
  71.  
  72.     Parse Arg PathToSet UserID
  73.  
  74.     DirToSet.0 = 2
  75.     DirToSet.1 = PathToSet
  76.     DirToSet.2 = PathToSet || '\BATCH'
  77.  
  78.     Do j = 1 to DirToSet.0
  79.    /* Delete */
  80.       LogText = 'Del ACL on' DirToSet.j
  81.       Say '09'x LogText
  82.       RC = NetDelete(10, '\\'DCName, DirToSet.j)
  83.       Call Logit LogText RC
  84.  
  85.    /* Set */
  86.       Call Logit 'Adding ACL on:' DirToSet.j UserID':'DefaultACP
  87.       ACL.Count    = 1
  88.       ACL.1.Ugname = UserID
  89.       ACL.1.Access = DefaultACP
  90.  
  91.       LogText = 'Set ACL on' DirToSet.j ACL.1.UgName || ':' || ACL.1.Access
  92.       Say '09'x LogText
  93.       RC = NetAdd(10, 'ACL', '\\'ServerName, DirToSet.j)
  94.       If RC = 0
  95.         Then Call Logit LogText
  96.         Else Do
  97.                Say '!' LogText '07'x
  98.                Call Logit '! Error:' LogText RC
  99.              End
  100.     End
  101.  
  102.     Return
  103.  
  104.  INIT:/* --------------------------------------------------------------------*/
  105.  
  106.    '@echo off'
  107.     BootDrive = Left(Value('ComSpec',,'OS2Environment'),2)
  108.  
  109.     If RxFuncQuery('SysLoadFuncs')
  110.       Then Do
  111.              Call RxFuncAdd SysLoadFuncs, RexxUtil, SysLoadFuncs
  112.              Call SysLoadFuncs
  113.            End
  114.       Else Nop
  115.  
  116.     LSRDrive = ''                      /* Check for Lan Server Drive Letter*/
  117.     PPath.i = Translate(Value('Path',,'OS2Environment'))
  118.     x = Pos('\IBMLAN\NETPROG;', PPath.i) -2
  119.     If x > 0
  120.       Then LSRDrive = SubStr(PPath.i, x, 2)
  121.       Else Do
  122.              Say '! Could not determine the Lan Requester DirToSet.i' '07'x
  123.              Exit
  124.            End
  125.  
  126.     Call ChkFile LSRDrive'\ibmlan\netlib\lsrxut.dll'
  127.     If RxFuncQuery('LoadLSRXUTFuncs')
  128.       Then Do
  129.              Call RxFuncAdd LoadLsRxutFuncs, LSRXUT, LoadLsRxutFuncs
  130.              Call LoadLsRxutFuncs
  131.            End
  132.       Else Nop
  133.  
  134.     Call ChkFile BootDrive'\os2\dll\rxutils.dll'
  135.     If RxFuncQuery('RxLoadFuncs')
  136.       Then Do
  137.              Call RxFuncAdd RxLoadFuncs, RXUTILS, RxLoadFuncs
  138.              Call RxLoadFuncs
  139.            End
  140.       Else Nop
  141.  
  142.     Return
  143.  
  144.  CHKOPTION:/* ---------------------------------------------------------------*/
  145.  
  146.     ServerName = ''
  147.     Source = ''
  148.     FileName = ''
  149.     LogFileName = 'LSACL.LOG'
  150.     Dir = 1
  151.     File = 0
  152.     Get = 0
  153.     Set = 0
  154.     Tree = 0
  155.  
  156.     Do While Option <> ''
  157.       Parse Value Option With Argument ' ' Option
  158.       Select
  159.         When Left(Argument,5) = '/SRV:' Then ServerName = Substr(Argument,6)
  160.         When Left(Argument,5) = '/RES:' Then Resource = Substr(Argument,6)
  161.         When Left(Argument,3) = '/F:' Then FileName = Substr(Argument,4)
  162.         When Left(Argument,3) = '/L:' Then LogFileName = Substr(Argument,4)
  163.         When Left(Argument,5) = '/FILE' Then Do
  164.                                                Dir = 0
  165.                                                File = 1
  166.                                              End
  167.         When Left(Argument,4) = '/GET' Then Get = 1
  168.         When Left(Argument,4) = '/SET' Then Set = 1
  169.         When Left(Argument,5) = '/TREE' Then Tree = 1
  170.         Otherwise Nop
  171.       End
  172.     End
  173.  
  174.     If ServerName = '' | Resource = '' | Get = 0 & Set = 0
  175.       Then Do
  176.              Say '*'
  177.              Say '* Get/Set Access Control Profiles to/from an ASCII file'
  178.              Say '*'
  179.              Say '* Usage: LSACL /SRV:ServerName'
  180.              Say '*              /RES:Resource'
  181.              Say '*              /F:FileName'
  182.              Say '*              /L:LogFileName'
  183.              Say '*              /FILE (get ACL on file base - Directory is default)'
  184.              Say '*              /GET'
  185.              Say '*              /SET'
  186.              Say '*              /TREE'
  187.              Say '*'
  188.              Say '* Sample: LSACL /SRV:BEDDC01 /RES:E:\HOMEDIR /L:HOMEDIR.LOG /GET /TREE'
  189.              Say '*'
  190.              Exit
  191.           End
  192.       Else Nop
  193.  
  194.     Return
  195.  
  196.  CHKERROR:/* ----------------------------------------------------------------*/
  197.  
  198.     Parse Arg RCode
  199.  
  200.     Say '! Error:' RCode '07'x
  201.     Exit
  202.  
  203.     Return
  204.  
  205.  CHKFILE:/* -----------------------------------------------------------------*/
  206.  
  207.     Parse Arg File_To_Check
  208.  
  209.     If Stream(File_To_Check, 'C', 'Query Exists') = ''
  210.       Then Do
  211.              Say '! File not found:' File_To_Check '07'x
  212.              Exit
  213.            End
  214.       Else Nop
  215.  
  216.     Return
  217.  
  218.  LOGIT:/* ------------------------------------------------------------------*/
  219.  
  220.     Parse Arg Log_FileName Log_Text
  221.  
  222.     Log_Text = Date('E') Time() Log_Text
  223.  
  224.     If LineOut(Log_FileName, Log_Text) = 0
  225.       Then Call Stream Log_FileName, 'C', 'Close'
  226.       Else Say '! Error while writing to' Log_FileName
  227.  
  228.     Return
  229.  
  230.