home *** CD-ROM | disk | FTP | other *** search
- {$X+,B-,V-,S-} {essential compiler directives}
-
- Program TSTBin; { as of 950301 }
-
- { Testprogram for the nwBindry unit / NwTP 0.6 API. (c) 1994,1995 R.Spronk }
-
- { Purpose: Testing only. }
-
- { Tests the following nwBindry calls:
-
- AddBinderyObjectToSet
- ChangeBinderyObjectSecurity
- ChangeBinderyObjectPassword
- ChangeEncrBinderyObjectPassword
- ChangePropertySecurity
- CreateBinderyObject
- CreateProperty
- DeleteBinderyObject
- DeleteBinderyObjectFromSet
- DeleteProperty
- GetBinderyAccessLevel
- GetBinderyObjectID
- GetBinderyObjectName
- IsBinderyObjectInSet
- RenameBinderyObject
- VerifyBinderyObjectPassword
- VerifyEncrBinderyObjectPassword
- WritePropertyValue
- }
-
- Uses nwMisc,nwBindry;
-
- Procedure Warning(mess:string);
- begin
- writeln(' ERROR:',mess);
- writeln(' ERROR#: $',hexstr(result,2),' (',result,')');
- end;
-
-
- Function ExistsProperty(objName:string;objType:word;propertyName:String):boolean;
-
- Var propName:string;
- pf,ps :byte;
- phv,mp :boolean;
- seqNbr :LongInt;
- begin
- seqNbr:=-1;
- ExistsProperty:=ScanProperty(objName,objType,propertyname,
- seqNbr,propName,pf,ps,phv,mp);
- end;
-
-
- Var myObjId:longInt;
- BindSeq:Byte;
-
- ObjId :longint;
- usrName,TrueName:string;
- pTrueName:Tproperty;
-
- replyUsrName:string;
- replyObjType:word;
-
- t:byte;
- s:string;
-
- begin
- writeln('BINTEST Test program for the nwBindry unit of the NwTP package.');
-
- IF not IsShellLoaded
- then begin
- writeln('Please load shell before running.');
- halt(1);
- end;
- { need supervisor privileges to run this test }
- GetBinderyAccessLevel(BindSeq,myObjId);
- if bindSeq<>(BS_SUPER_WRITE OR BS_SUPER_READ) { $33}
- then begin
- writeln('you need to be supervisor equivalent to run this test program.');
- halt(1);
- end;
-
- writeln('-Assumes there is a group ''EVERYONE''');
- writeln('-Non destructive to the bindery. ');
- writeln(' (unless you already have a user named ''USR_OINK'' or ''THE_DIVA'')');
- writeln;
- writeln('For testing of the unencrypted calls, you must have');
- writeln(' SET ALLOW UNENCRYPTED PASSWORDS=ON on the server--');
- writeln(' Otherwise these calls will fail and trigger the servers'' intruder detection.');
- writeln;
- writeln('<ENTER> To Continue..');
- readln;
-
- { you are reminded that the bindery functions turn all object names, property
- names and passwords to upcase. Returned strings are also upcase. }
-
- usrName:='UsR_OiNk';
- TrueName:='Miss Piggy';
-
- writeln('Creating Bindery object :',usrName);
- IF NOT CreateBinderyObject(usrName,OT_USER,
- BF_ITEM,BS_ANY_READ OR BS_ANY_WRITE)
- then Warning('couldn''t create a bindery object.');
-
- IF NOT GetBinderyObjectID(usrName,OT_USER,objID)
- then Warning('couldn''t find the created user object');
-
- writeln('Changing object security.');
- IF NOT ChangeBinderyObjectSecurity(usrName,OT_USER,BS_LOGGED_READ OR BS_SUPER_WRITE)
- then warning('Couldn''t change object security.');
-
- { this program assumes there is a group called everyone. }
- writeln('Making ',usrName,' a member of the group EVERYONE.');
- IF IsBinderyObjectInSet(usrName,OT_USER,
- 'GROUP_MEMBERS','EVERYONE',OT_USER_GROUP)
- then writeln('??: object already is a member of everyone (group)');
-
- IF NOT AddBinderyObjectToSet('EVERYONE',OT_USER_GROUP,'GROUP_MEMBERS',
- usrName,OT_USER)
- then Warning('couldn''t make user a member of everyone');
-
- IF NOT IsBinderyObjectInSet('EVERYONE',OT_USER_GROUP,'GROUP_MEMBERS',
- usrName,OT_USER)
- then writeln('??: user is NOT a member of everyone.');
-
-
- { ------------AND NOW: the property test.
- create a static property with default security... }
- writeln;
- writeln('Creating a property IDENTIFICATION associated withe the ',usrName,' object.');
- IF NOT CreateProperty(usrName,OT_USER,
- 'IDENTIFICATION',BF_ITEM,BS_ANY_WRITE OR BS_ANY_READ)
- then writeln('Couldn''t create property.');
-
- IF NOT ChangePropertySecurity(usrName,OT_USER,'IDENTIFICATION',
- BS_LOGGED_READ or BS_SUPER_WRITE)
- then writeln('Couldn''t change property security.');
-
- writeln('Writing the property value: ',trueName);
- FillChar(pTrueName[1],SizeOf(pTrueName),#0);
- for t:=1 to ord(truename[0]) do pTrueName[t]:=ord(TrueName[t]);
-
- IF NOT WritePropertyValue(usrName,OT_USER,'IDENTIFICATION',1,pTrueName,FALSE)
- then Warning('Couldn''t write the property value.');
-
- { The next calls were tested before, so they are not tested again.
- They create the minimal properties needed to login as the new object. }
-
- CreateProperty(usrName,OT_USER,'GROUPS_I''M_IN',
- BF_SET,BS_SUPER_WRITE OR BS_LOGGED_READ);
-
- AddBinderyObjectToSet(usrName,OT_USER,'GROUPS_I''M_IN',
- 'EVERYONE',OT_USER_GROUP);
-
- CreateProperty(usrName,OT_USER,'SECURITY_EQUALS',
- BF_SET,BS_SUPER_WRITE OR BS_LOGGED_READ);
-
- AddBinderyObjectToSet(usrName,OT_USER,'SECURITY_EQUALS',
- 'EVERYONE',OT_USER_GROUP);
-
- {------------- Renaming the object. }
- writeln;
- writeln('Renaming the object.');
- UpString(usrName); { make usrName upstring for comparison with found name.}
-
- GetBinderyObjectName(objId,replyUsrName,replyObjType);
- IF (nwBindry.result>0) or (replyUsrName<>usrName) or (replyObjType<>OT_USER)
- then Warning('Something very wrong here.');
- writeln(' Object name was :',replyUsrName);
-
- IF NOT RenameBinderyObject(usrName,'THE_DIVA',OT_USER)
- then Warning('Couldn''t rename the object.');
-
- usrName:='THE_DIVA'; {that's what it should be now}
-
- GetBinderyObjectName(objId,replyUsrName,replyObjType);
- IF (nwBindry.result<>0) or (replyUsrName<>usrName) or (replyObjType<>OT_USER)
- then Warning('Object was NOT renamed.');
- writeln(' Object name now is:',replyUsrName);
-
- {------------ Change and verify bindery object password. }
-
- writeln;
- writeln('Changing Object Password. (encrypted)');
- IF ChangeEncrBinderyObjectPassword(usrName,OT_USER,'','KERMIT')
- then writeln('Password successfully changed. (encrypted)')
- else Warning('Couldn''t change password. (encrypted)');
-
- writeln('Verifying new password. (encrypted)');
- IF VerifyEncrBinderyObjectPassword(usrName,OT_USER,'wrong password')
- then Warning('A wrong (encrypted) password was verified as being OK.');
-
- IF NOT VerifyEncrBinderyObjectPassword(usrName,OT_USER,'KERMIT')
- then Warning('The correct (encrypted) Password was NOT verified.');
-
- { If you stop execution of this program AT THIS POINT, you will
- have added a user THE_DIVA with password KERMIT, member of the
- group EVERYONE to your bindery. }
-
- { halt(0); }
-
- writeln;
- writeln('WARNING: If you didn''t SET ALLOW UNENCRYPTED PASSWORDS=ON,');
- writeln(' -The server will beep;');
- writeln(' -Supervisor(s) will receive a 1 line message.');
- writeln(' (unless CASTOFF ALL was used);');
- writeln(' -The next(unencrypted) calls will fail.');
- writeln(' (All the above is essentially harmless)');
- writeln;
- writeln(' <ENTER> to continue...');
- readln;
-
- writeln;
- writeln('Changing Object Password. (unencrypted)');
- IF ChangeBinderyObjectPassword(usrName,OT_USER,'KERMIT','SECRET')
- then writeln('Password successfully changed. (unencrypted)')
- else Warning('Couldn''t change password. (unencrypted)');
-
- writeln('Verifying new password. (unencrypted)');
- IF VerifyBinderyObjectPassword(usrName,OT_USER,'wrong password')
- then Warning('A wrong (unencrypted) password was verified as being OK.');
-
- IF NOT VerifyBinderyObjectPassword(usrName,OT_USER,'SECRET')
- then Warning('The correct (unencrypted) Password was NOT verified.');
-
- {------------ Deleting properties and objects }
- writeln;
- writeln('Deleting a property.');
- IF NOT DeleteProperty(usrName,OT_USER,'IDENTIFICATION')
- then writeln('Couldn''t delete property.');
-
- IF ExistsProperty(usrName,OT_USER,'IDENTIFICATION')
- then writeln('??:Property wasn''t deleted.');
-
- writeln('Removing the user object from the group EVERYONE.');
- DeleteBinderyObjectFromSet(usrName,OT_USER,
- 'GROUP_MEMBERS','EVERYONE',OT_USER_GROUP);
-
- IF IsBinderyObjectInSet(usrName,OT_USER,
- 'GROUP_MEMBERS','EVERYONE',OT_USER_GROUP)
- then writeln('Couldn''t throw '+usrName+' out of everyone (group)');
-
- writeln('Deleting the ',usrName,' object and all related properties.');
- IF NOT DeleteBinderyObject(usrName,OT_USER)
- then writeln('Couldn''t delete object.');
-
- IF GetBinderyObjectID(usrName,OT_USER,objID)
- then writeln('??: deleted object still exists.');
-
- end.