#ifndef _BDPIVIRTUALNODE_H
#define _BDPIVIRTUALNODE_H
#include <DirectoryServiceCore/BaseDirectoryPluginTypes.h>
#ifndef __OBJC__
class BDPIVirtualNode
{
public:
BDPIVirtualNode( CFStringRef inNodeName, uid_t inUID, uid_t inEffectiveUID );
virtual ~BDPIVirtualNode( void );
virtual CFMutableDictionaryRef CopyNodeInfo( CFArrayRef cfAttributes ) = 0;
virtual CFStringRef CopyNodeName( void );
virtual tDirStatus CustomCall( UInt32 inRequestCode, CFDataRef inRequestData, CFMutableDataRef outResponseData,
UInt32 maxResponseSize );
virtual tDirStatus SetNodeCredentials( CFStringRef inRecordType, CFStringRef inRecordName, CFStringRef inPassword );
virtual tDirStatus SetNodeCredentialsExtended( CFStringRef inRecordType, CFStringRef inAuthType, CFArrayRef inAuthItems,
CFArrayRef *outAuthItems, sBDPIAuthContext *outContext );
virtual tDirStatus VerifyCredentials( CFStringRef inRecordType, CFStringRef inRecordName, CFStringRef inPassword );
virtual tDirStatus VerifyCredentialsExtended( CFStringRef inRecordType, CFStringRef inAuthType, CFArrayRef inAuthItems,
CFArrayRef *outAuthItems, sBDPIAuthContext *outContext );
virtual tDirStatus ChangePassword( CFStringRef inRecordType, CFStringRef inRecordName, CFStringRef inOldPassword,
CFStringRef inNewPassword );
virtual tDirStatus ChangePasswordExtended( CFStringRef inRecordType, CFStringRef inAuthType, CFArrayRef inAuthItems,
CFArrayRef *outAuthItems, sBDPIAuthContext *outContext );
virtual CFDictionaryRef CopyPasswordPolicyForRecord( CFStringRef inRecordType, CFStringRef inName );
virtual tDirStatus SearchRecords( sBDPISearchRecordsContext *inContext, BDPIOpaqueBuffer inBuffer, UInt32 *outCount) = 0;
virtual CFMutableDictionaryRef RecordOpen( CFStringRef inRecordType, CFStringRef inRecordName );
virtual tDirStatus RecordCreate( CFStringRef inRecordType, CFStringRef inRecordName );
virtual tDirStatus RecordDelete( CFDictionaryRef inRecordRef );
virtual tDirStatus RecordFlush( CFDictionaryRef inRecordRef );
virtual tDirStatus RecordClose( CFDictionaryRef inRecordRef );
virtual tDirStatus RecordSetType( CFMutableDictionaryRef inRecordRef, CFStringRef inRecordType );
virtual tDirStatus RecordSetValuesForAttribute( CFMutableDictionaryRef inRecordRef, CFStringRef inAttribute,
CFArrayRef inValues );
virtual tDirStatus RecordAddValuesToAttribute( CFMutableDictionaryRef inRecordRef, CFStringRef inAttribute,
CFArrayRef inValues );
virtual tDirStatus RecordRemoveValueFromAttribute( CFMutableDictionaryRef inRecordRef, CFStringRef inAttribute,
CFTypeRef inValue );
virtual bool AllowChangesForAttribute( CFDictionaryRef inRecordRef, CFStringRef inAttribute );
virtual UInt32 MaximumSizeForAttribute( CFStringRef inRecordType, CFStringRef inAttribute );
protected:
virtual void FilterAttributes( CFMutableDictionaryRef inRecord, CFArrayRef inRequestedAttribs );
protected:
CFStringRef fNodeName;
uid_t fUID;
uid_t fEffectiveUID;
};
#else
#include <Foundation/Foundation.h>
@interface BDPIVirtualNode : NSObject
{
@protected
NSString *fNodeName;
uid_t fUID;
uid_t fEffectiveUID;
}
- (id)init: (NSString *)inNodeName uid: (uid_t)inUID euid: (uid_t)inEffectiveUID;
- (void)filterAttributes: (NSMutableDictionary *)record attributes: (NSArray *)requestedAttribs;
- (NSMutableDictionary *)copyNodeInfo:(NSArray *)inAttributes;
- (NSString *)copyNodeName;
- (tDirStatus)customCall:(UInt32)inRequestCode requestData:(NSData *)inRequestData response:(NSMutableData *)outResponseData
maxResponseSize:(UInt32)maxResponseSize;
- (tDirStatus)setNodeCredentials:(NSString *)inRecordType recordName:(NSString *)inRecordName password:(NSString *)inPassword;
- (tDirStatus)setNodeCredentialsExtended:(NSString *)inRecordType authType:(NSString *)inAuthType authItems:(NSArray *)inAuthItems
outAuthItems:(NSArray **)outAuthItems outContext:(sBDPIAuthContext *)outContext;
- (tDirStatus)verifyCredentials:(NSString *)inRecordType recordName:(NSString *)inRecordName password:(NSString *)inPassword;
- (tDirStatus)verifyCredentialsExtended:(NSString *)inRecordType authType:(NSString *)inAuthType authItems:(NSArray *)inAuthItems
outAuthItems:(NSArray **)outAuthItems outContext:(sBDPIAuthContext *)outContext;
- (tDirStatus)changePassword:(NSString *)inRecordType recordName:(NSString *)inRecordName oldPassword:(NSString *)inOldPassword
newPassword:(NSString *)inNewPassword;
- (tDirStatus)changePasswordExtended:(NSString *)inRecordType authType:(NSString *)inAuthType authItems:(NSArray *)inAuthItems
outAuthItems:(NSArray **)outAuthItems outContext:(sBDPIAuthContext *)outContext;
- (NSDictionary *)copyPasswordPolicyForRecord:(NSString *)inRecordType withName:(NSString *)inName;
- (tDirStatus)searchRecords:(sBDPISearchRecordsContext *)inContext buffer:(BDPIOpaqueBuffer)inBuffer outCount:(UInt32 *)outCount;
- (NSMutableDictionary *)recordOpenName:(NSString *)inRecordName recordType:(NSString *)inRecordType;
- (tDirStatus)recordCreateName:(NSString *)inRecordName recordType:(NSString *)inRecordType;
- (tDirStatus)recordDelete:(NSDictionary *)inRecord;
- (tDirStatus)recordFlush:(NSDictionary *)inRecord;
- (tDirStatus)recordClose:(NSDictionary *)inRecord;
- (tDirStatus)record:(NSMutableDictionary *)inRecord setRecordType:(NSString *)inRecordType;
- (tDirStatus)record:(NSMutableDictionary *)inRecord setValues:(NSArray *)inValues forAttribute:(NSString *)inAttribute;
- (tDirStatus)record:(NSMutableDictionary *)inRecord addValues:(NSArray *)inValues toAttribute:(NSString *)inAttribute;
- (tDirStatus)record:(NSMutableDictionary *)inRecord removeValue:(id)inValue fromAttribute:(NSString *)inAttribute;
- (BOOL)allowChanges:(NSDictionary *)inRecord forAttribute:(NSString *)inAttribute;
- (UInt32)maximumSize:(NSString *)inRecordType forAttribute:(NSString *)inAttribute;
@end
#endif
#endif