#ifndef __CConfigs_h__
#define __CConfigs_h__ 1
#include <stdio.h>
#include <CoreFoundation/CoreFoundation.h> //for CF classes and property lists - XML config data
#include "DirServices.h"
#include "DirServicesUtils.h"
#include "DirServicesConst.h"
#include "PrivateTypes.h"
const uInt32 kNetInfoSearchPolicy = 1;
const uInt32 kLocalSearchPolicy = 2;
const uInt32 kCustomSearchPolicy = 3;
#define kXMLSearchPathVersionKey "Search Node PlugIn Version"
#define kXMLSearchPolicyKey "Search Policy"
#define kXMLSearchPathArrayKey "Search Node Custom Path Array"
#define kXMLSearchDHCPLDAP "DHCP LDAP"
typedef struct sSearchList {
bool fOpened;
bool fPreviousOpenFailed;
tDirNodeReference fNodeRef;
char *fNodeName;
tDataList *fDataList;
sSearchList *fNext;
} sSearchList;
class CConfigs
{
public:
CConfigs ( void );
sInt32 Init ( const char *inSearchNodeConfigFilePrefix, uInt32 &outSearchPolicy );
sSearchList *GetCustom ( void );
virtual ~CConfigs ( void );
sInt32 CleanListData ( sSearchList *inList );
sInt32 SetListArray ( CFMutableArrayRef inCSPArray );
sInt32 WriteConfig ( void );
sInt32 SetSearchPolicy ( uInt32 inSearchPolicy );
void SetDHCPLDAPDictionary ( CFDictionaryRef dhcpLDAPdict );
CFDictionaryRef GetDHCPLDAPDictionary ( void );
bool IsDHCPLDAPEnabled ( void );
protected:
sInt32 ConfigList ( void );
sInt32 ConfigSearchPolicy ( void );
char *GetVersion ( CFDictionaryRef configDict );
uInt32 GetSearchPolicy ( CFDictionaryRef configDict );
CFArrayRef GetListArray ( CFDictionaryRef configDict );
sSearchList *MakeListData ( char *inNodeName );
private:
sSearchList *pSearchNodeList;
uInt32 fSearchNodeListLength;
uInt32 fSearchPolicy;
tDirReference fDirRef;
CFMutableDictionaryRef fConfigDict;
char *fSearchNodeConfigFileName;
char *fSearchNodeConfigBackupFileName;
char *fSearchNodeConfigCorruptedFileName;
CFStringRef fXMLSearchPathVersionKeyString;
CFStringRef fXMLSearchPolicyKeyString;
CFStringRef fXMLSearchPathArrayKeyString;
CFStringRef fXMLSearchDHCPLDAPString;
};
#endif // __CConfigs_h__