home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
lan
/
basnet
/
bdir.bas
next >
Wrap
BASIC Source File
|
1986-07-08
|
12KB
|
269 lines
1 '
2 ' Bdir.bas
3 '
4 ' a program to show the entries in the bindery of the selected
5 ' file server
6 '
100 ' Set up the Netware calls
110 '
120 gosub 10000
130 '
300 ' Set the constants
310 FIRSTTRY$ = CHR$(&HFF) + CHR$(&HFF) + CHR$(&HFF) + CHR$(&HFF)
1000 ' start of the main program
1010 '
1110 GOSUB 14000 'get my bindery access level
1120 CLS
1130 PRINT "Your read rights are "+ RDRIGHTS$
1140 PRINT "Your write rights are "+ WRTRIGHTS$: PRINT
1150 '
1160 'now set up and start polling the bindery for data
1170 '
1180 ' file servers first
1190 LASTOBJECTID$ = FIRSTTRY$
1200 RETURNCODE% = 0
1210 PATTERNTYPEHI$ = CHR$(0)
1220 PATTERNTYPELO$ = CHR$(4)
1230 PRINT: PRINT "FILESERVERS PROPERTIES": PRINT "=========== =========="
1240 GOSUB 20000
1250 ' users next
1260 LASTOBJECTID$ = FIRSTTRY$
1270 RETURNCODE% = 0
1280 PATTERNTYPEHI$ = CHR$(0)
1290 PATTERNTYPELO$ = CHR$(1)
1300 PRINT: PRINT "USERS PROPERTIES": PRINT "=========== =========="
1310 GOSUB 20000
1320 ' now groups
1330 LASTOBJECTID$ = FIRSTTRY$
1340 RETURNCODE% = 0
1350 PATTERNTYPEHI$ = CHR$(0)
1360 PATTERNTYPELO$ = CHR$(2)
1370 PRINT: PRINT "GROUPS PROPERTIES": PRINT "====== =========="
1380 GOSUB 20000
1390 ' now print servers
1400 LASTOBJECTID$ = FIRSTTRY$
1410 RETURNCODE% = 0
1420 PATTERNTYPEHI$ = CHR$(0)
1430 PATTERNTYPELO$ = CHR$(3)
1440 PRINT: PRINT "PRINT SERVERS PROPERTIES": PRINT "============= =========="
1450 GOSUB 20000
1460 ' now unknowns
1470 LASTOBJECTID$ = FIRSTTRY$
1480 RETURNCODE% = 0
1490 PATTERNTYPEHI$ = CHR$(0)
1500 PATTERNTYPELO$ = CHR$(0)
1510 PRINT: PRINT "UNKNOWN OBJECTS PROPERTIES": PRINT "=============== =========="
1520 GOSUB 20000
9999 END
10000 '
10010 ' routines for network use
10020 '
10100 ' This section contains the routine names and
10101 ' offsets for the BASNET library
10102 ' the return is after everything is set up for NetWare calls
10110 XTNDOPN = 0 'xtndopn(Mode%, Filename$, Handle%, ErrCode%)
10111 SETATTR = 3 'setattr(Func%, Filename$, Attribute%, ErrCode%)
10112 EOJSTAT = 6 'eojstat(Flag%)
10113 PRLH.LOG = 9 'PRLH.Log(FileHandle%,HiByteOffset%,LoByteOffset%,HiLockLen%,LoLockLen%,Flags%,TimeOut%,ErrCode%)
10114 PRLH.REL = 12 'PRLH.Rel(FileHandle%,HiByteOffset%,LoByteOffset%,ErrCode%)
10115 PRLH.CLR = 15 'PRLH.Clr(FileHandle%,HiByteOffset%,LoByteOffset%,Errcode%)
10116 PRLF.LOG = 18 'PRLF.Log(fcb%,HiByteOffset%,LoByteOffset%,HiLockLen%,LoLockLen%,Flags%,TimeOut%,ErrCode%)
10117 PRLF.REL = 21 'PRLF.Rel(fcb%,HiByteOffset%,LoByteOffset%,ErrCode%)
10118 PRLF.CLR = 24 'PRLF.Clr(fcb%,HiByteOffset%,LoByteOffset%,ErrCode%)
10119 PRLS.LCK = 27 'PRLS.Lck(Flags%,TimeOut%,ErrCode%)
10120 PRLS.REL = 30 'PRLS.Rel(ErrCode%)
10121 PRLS.CLR = 33 'PRLS.Clr(ErrCode%)
10122 OPENSEM = 36 'OpenSem(Sema4$,SemaValu%,HiHandle%,LoHandle%,OpenCnt%,RetCode%)
10123 EXAMSEM = 39 'ExamSem(HiHandle%,LoHandle%,SemaValu%,OpenCnt%,RetCode%)
10124 WAITSEM = 42 'WaitSem(HiHandle%,LoHandle%,TimeOut%,RetCode%)
10125 SIGSEM = 45 'SigSem(HiHandle%,LoHandle%,RetCode%)
10126 CLOSSEM = 48 'ClosSem(HiHandle%,LoHandle%,RetCode%)
10127 SETLCK = 51 'setlck(Func%,Mode%)
10128 BAKOUTS = 54 'Bakouts(Func%,RetCode%)
10129 BTRANS = 57 'btran(ReturnCode%, Mode%)
10130 ETRANS = 60 'etrans(ReturnCode%)
10131 EXCLOG = 63 'exclog(ReturnCode%, FcbAddr)
10132 EXCLCKS = 66 'exclcks(ReturnCode%, Mode%)
10133 EXCULKF = 69 'exculkf(ReturnCode%, FcbAddr)
10134 EXCULKS = 72 'exculks(ReturnCode%)
10135 EXCCLRF = 75 'excclrf(ReturnCode%, FcbAddr)
10136 EXCCLRS = 78 'excclrs(ReturnCode%)
10137 RECLOG = 81 'reclog(ReturnCode%, String$)
10138 RECLCK = 84 'reclck(ReturnCode%, Mode%)
10139 RECULK = 87 'reculk(ReturnCode%, Semaphore$)
10140 RECULKS = 90 'reculks(ReturnCode%)
10141 RECCLR = 93 'recclr(ReturnCode%, Semaphore$)
10142 RECCLRS = 96 'recclrs(ReturnCode%)
10143 EOJ = 99 'eoj(ReturnCode%)
10144 SYSOUT = 102 'sysout(ReturnCode%)
10145 ALLOCR = 105 'allocr(ReturnCode%, Resource%)
10146 DALLOCR = 108 'dallocr(ReturnCode%, Resource%)
10147 VOLSTAT = 111 'volstat(volume%, reply$)
10148 LOCDRV = 114 'locdrv(NumDisks%)
10149 WSID = 117 'wsid(ThisStationNum%)
10150 ERRMODE = 120 'errmode(mode%)
10151 BCSMODE = 123 'bcsmode(mode%)
10152 CTLSPL = 126 'ctlspl(mode%)
10153 SPLREQ = 129 'splreq(ErrCode%, RequestBlock$, Reply$)
10154 PIPREQ = 132 'pipreq(ErrCode%, RequestBlock$, Reply$)
10155 DPATH = 135 'dpath(ReturnCode%, RequestBlock$, Reply$)
10156 SYSLOG = 138 'syslog(ReturnCode%, RequestBlock$, Reply$)
10157 FATTR = 141 'fattr(ReturnCode%, FcbAddr, Attribute%)
10158 UPDFCB = 144 'updfcb(RetCode%,FcbAddr)
10159 CPYFILE = 147 'cpyfile(ReturnCode%, FcbSource, FcbDest, CountLow, CountHigh)
10160 NETTOD = 150 'nettod(time$)
10161 CLSMODE = 153 'clsmode(mode%)
10162 DRVMAP = 156 'drvmap(ReturnFlags%, drive%)
10163 RETSHL = 159 'retshl(RetCode%, Mode%)
10164 ASCLOG = 162 'asclog(RetCode%, Asciiz$)
10165 ASCULKF = 165 'asculkf(RetCode%, Asciiz$)
10166 ASCCLRF = 168 'ascclrf(RetCode%, Asciiz$)
10167 GETPSN = 171 'Get_PSN(StationNo%)
10168 GETSTA = 174 'Get_STA(Mode%,Segment%,Offset%)
10169 SETSERV = 177 'SetServ(Mode%,NewServ%,CurrServ%)
10170 MODSERV = 180 'ModServ(Mode%,NewServ%,RetCode%)
10200 '
10210 ' Assign the segment address for the library to the variable LibSeg
10220 '
10230 def seg = 0
10240 suboff = peek(&h4f0)+(256*peek(&h4f1))
10250 subseg = peek(&h4f2)+(256*peek(&h4f3))
10260 LibSeg = subseg
10270 def seg
10300 '
10310 ' set the error mode so its more informative
10320 def seg = LibSeg
10330 NewMode% = 1
10340 call errmode(NewMode%)
10350 def seg
10400 '
10999 return
14000 '
14010 'determine the users access level
14020 '
14030 'enter with - LibSeg
14040 'uses (without altering) - LibSeg
14050 'changes - ReqPacLenHi$,ReqPacLenLo$,Func$,ReturnCode%, AccessReq$,
14060 ' AccessByte$, AccessReply$, rdrights$, wrtrights$
14070 REQPACLENLO$ = CHR$(1)
14080 REQPACLENHI$ = CHR$(0)
14090 FUNC$ = CHR$(70)
14100 ACCESSREQ$ = REQPACLENLO$ + REQPACLENHI$ + FUNC$
14110 ACCESSREPLY$ = CHR$(5)+CHR$(0)+STRING$(5,"x")
14120 RETURNCODE% = 0
14130 DEF SEG = LIBSEG
14140 CALL SYSLOG(RETURNCODE%,ACCESSREQ$,ACCESSREPLY$)
14150 DEF SEG
14160 IF RETURNCODE% <> 0 THEN PRINT "Request Error, Aborting": END
14170 ACCESSBYTE$ = MID$(ACCESSREPLY$,3,1)
14180 IF ACCESSBYTE$ = CHR$(0) THEN RDRIGHTS$ = "Free" : WRTRIGHTS$ = "Free"
14190 IF ACCESSBYTE$ = CHR$(1) THEN RDRIGHTS$ = "Logged" : WRTRIGHTS$ = "Free"
14200 IF ACCESSBYTE$ = CHR$(2) THEN RDRIGHTS$ = "Mine" : WRTRIGHTS$ = "Free"
14210 IF ACCESSBYTE$ = CHR$(3) THEN RDRIGHTS$ = "Supervisor" : WRTRIGHTS$ = "Free"
14220 IF ACCESSBYTE$ = CHR$(16) THEN RDRIGHTS$ = "Free" : WRTRIGHTS$ = "Logged"
14230 IF ACCESSBYTE$ = CHR$(17) THEN RDRIGHTS$ = "Logged" : WRTRIGHTS$ = "Logged"
14240 IF ACCESSBYTE$ = CHR$(18) THEN RDRIGHTS$ = "Mine" : WRTRIGHTS$ = "Logged"
14250 IF ACCESSBYTE$ = CHR$(19) THEN RDRIGHTS$ = "Supervisor" : WRTRIGHT$ = "Logged"
14260 IF ACCESSBYTE$ = CHR$(32) THEN RDRIGHTS$ = "Free" : WRTRIGHTS$ = "Mine"
14270 IF ACCESSBYTE$ = CHR$(33) THEN RDRIGHTS$ = "Logged" : WRTRIGHTS$ = "Mine"
14280 IF ACCESSBYTE$ = CHR$(34) THEN RDRIGHTS$ = "Mine" : WRTRIGHTS$ = "Mine"
14290 IF ACCESSBYTE$ = CHR$(35) THEN RDRIGHTS$ = "Supervisor" : WRTRIGHTS$ = "Mine"
14300 IF ACCESSBYTE$ = CHR$(48) THEN RDRIGHTS$ = "Free" : WRTRIGHTS$ = "Supervisor"
14310 IF ACCESSBYTE$ = CHR$(49) THEN RDRIGHTS$ = "Logged" : WRTRIGHTS$ = "Supervisor"
14320 IF ACCESSBYTE$ = CHR$(50) THEN RDRIGHTS$ = "Mine" : WRTRIGHTS$ = "Supervisor"
14330 IF ACCESSBYTE$ = CHR$(51) THEN RDRIGHTS$ = "Supervisor" : WRTRIGHTS$ = "Supervisor"
14999 RETURN
15000 '
15010 ' set up the request packet to scan for objects of the chosen type
15020 '
15030 ' when calling this routine remember to set the LastObjectSeen$
15040 ' (4 bytes) to -1 initially and thereafter equal to the UniqueObjectId$
15050 '
15060 ' enter with - PatternTypeHi$, PatternTypeLo$, LastObjectId$, LibSeg
15070 ' uses (but does not alter) - PatternTypeHi$, LoPatternTypeLo$, LastObjectSeen$, LibSeg
15080 ' changes - ReqPacLenHi$, ReqPacLenLo$, Func$, RepPacLenHi$, RepPacLo$,
15090 ' ObjReply$, ObjRequest$, PatternLen$, Pattern$
15100 REQPACLENHI$ = CHR$(0)
15110 REQPACLENLO$ = CHR$(9)
15120 FUNC$ = CHR$(55) 'scan for objects subfunction
15130 PATTERNLEN$ = CHR$(1)
15140 PATTERN$ = "*"
15150 OBJREQ$ = REQPACLENLO$ + REQPACLENHI$ + FUNC$ + LASTOBJECTID$ + PATTERNTYPEHI$ + PATTERNTYPELO$ + PATTERNLEN$ + PATTERN$
15200 ' set up the reply buffer
15210 REPPACLENHI$ = CHR$(0)
15220 REPPACLENLO$ = CHR$(57)
15230 OBJREPLY$ = REPPACLENLO$ + REPPACLENHI$ + STRING$((ASC(REPPACLENHI$)*256) + ASC(REPPACLENLO$),"x")
15300 'make the bindery request
15310 DEF SEG = LIBSEG
15320 CALL SYSLOG(RETURNCODE%,OBJREQ$,OBJREPLY$)
15330 DEF SEG
15999 RETURN
16000 '
16010 ' This routine strips the nulls off the right side of a string
16020 ' - enter with the string to be stripped as Incoming$
16030 ' the processed string will be returned as Outgoing$
16040 '
16050 'enter with - Incoming$
16060 'uses (without altering) - Incoming$
16070 'changes - checkchar$, i, Outgoing$
16080 '
16090 OUTGOING$ = ""
16100 I = 0
16110 CHECKCHAR$ = CHR$(1)
16120 WHILE CHECKCHAR$ <> CHR$(0)
16130 I=I+1
16140 CHECKCHAR$=MID$(INCOMING$,I,1)
16150 IF CHECKCHAR$ <> CHR$(0) THEN OUTGOING$ = OUTGOING$ + CHECKCHAR$
16160 WEND
16999 RETURN
17000 '
17010 ' set up the request packet to scan for properties
17020 '
17030 ' when calling this routine remember to set the LastInstance$
17040 ' (4 bytes) to -1 initially and thereafter equal to the SearchInstance$
17050 '
17060 ' enter with - ObjectType$, ObjName$, LastInstance$, LibSeg
17070 ' uses (but does not alter) - PatternTypeHi$, LoPatternTypeLo$, LastObjectSeen$, LibSeg
17080 ' changes - ReqPacLenHi$, ReqPacLenLo$, Func$, RepPacLenHi$, RepPacLo$,
17090 ' ObjReply$, ObjRequest$, PatternLen$, Pattern$
17110 FUNC$ = CHR$(60) 'scan for properties subfunction
17120 SEARCHPROPNAMELEN$ = CHR$(1)
17130 SEARCHPROPNAME$ = "*"
17140 OBJNAMELEN$ = CHR$(LEN(OBJNAME$))
17150 REQPACLENHI$ = CHR$(0)
17160 REQPACLENLO$ = CHR$(LEN(FUNC$)+ LEN(OBJTYPE$)+ LEN(OBJNAMELEN$)+ LEN(OBJNAME$)+ LEN(LASTINSTANCE$)+ LEN(SEARCHPROPNAMELEN$)+ LEN(SEARCHPROPNAME$))
17170 PROPREQ$ = REQPACLENLO$ + REQPACLENHI$ + FUNC$ + OBJTYPE$ + OBJNAMELEN$ + OBJNAME$ + LASTINSTANCE$ + SEARCHPROPNAMELEN$ + SEARCHPROPNAME$
17200 ' set up the reply buffer
17210 REPPACLENHI$ = CHR$(0)
17220 REPPACLENLO$ = CHR$(26)
17230 PROPREPLY$ = REPPACLENLO$ + REPPACLENHI$ + STRING$((ASC(REPPACLENHI$)*256) + ASC(REPPACLENLO$),CHR$(0))
17300 'make the bindery request
17310 DEF SEG = LIBSEG
17320 CALL SYSLOG(PROPRETCODE%,PROPREQ$,PROPREPLY$)
17330 DEF SEG
17999 RETURN
20000 '
20010 ' get and display the objects and properties
20020 '
20030 'enter with -
20040 'uses (without altering) -
20050 'changes -
20060 '
20100 WHILE RETURNCODE% <> 252
20110 GOSUB 15000
20120 IF RETURNCODE% <> 252 THEN PRINT MID$(OBJREPLY$,9,48) ELSE OBJREPLY$ = STRING$(60,CHR$(0))
20130 LASTOBJECTID$ = MID$(OBJREPLY$,3,4)
20140 PROPERTIES$ = MID$(OBJREPLY$,59,1)
20150 IF PROPERTIES$ <> CHR$(0) THEN OBJTYPE$ = MID$(OBJREPLY$,7,2): INCOMING$ = MID$(OBJREPLY$,9,48): GOSUB 16000: OBJNAMELEN$ = CHR$(LEN(OUTGOING$)): OBJNAME$ = OUTGOING$: LASTINSTANCE$ = FIRSTTRY$: PROPRETCODE% = 0
20220 WHILE PROPRETCODE% <> 251
20230 GOSUB 17000
20240 IF PROPRETCODE% <> 251 THEN PRINT " "+ MID$(PROPREPLY$,3,16) ELSE PROPREPLY$ = STRING$(26,CHR$(0))
20260 LASTINSTANCE$ = MID$(PROPREPLY$,21,4)
20270 WEND
20280 WEND
20999 RETURN