[CalendarServer-changes] [3946] PyOpenDirectory/trunk/support/test.cpp
source_changes at macosforge.org
source_changes at macosforge.org
Wed Apr 1 09:57:49 PDT 2009
Revision: 3946
http://trac.macosforge.org/projects/calendarserver/changeset/3946
Author: cdaboo at apple.com
Date: 2009-04-01 09:57:48 -0700 (Wed, 01 Apr 2009)
Log Message:
-----------
Refactored.
Modified Paths:
--------------
PyOpenDirectory/trunk/support/test.cpp
Modified: PyOpenDirectory/trunk/support/test.cpp
===================================================================
--- PyOpenDirectory/trunk/support/test.cpp 2009-04-01 15:00:59 UTC (rev 3945)
+++ PyOpenDirectory/trunk/support/test.cpp 2009-04-01 16:57:48 UTC (rev 3946)
@@ -39,11 +39,8 @@
#define kDSNAttrServicesLocator "dsAttrTypeStandard:ServicesLocator"
#define kDSNAttrJPEGPhoto "dsAttrTypeStandard:JPEGPhoto"
-int main (int argc, const char * argv[]) {
-
- CDirectoryService* dir = new CDirectoryService("/Search");
- CDirectoryServiceAuth* authdir = new CDirectoryServiceAuth();
-
+void ListNodes(CDirectoryService* dir)
+{
CFMutableArrayRef data = dir->ListNodes(false);
if (data != NULL)
{
@@ -67,24 +64,46 @@
}
CFRelease(data);
}
+}
-#if 1
-#if 0
+void GetNodeAttributes(CDirectoryService* dir)
+{
+ CFStringRef attrs[2];
+ attrs[0] = CFSTR(kDS1AttrSearchPath);
+ attrs[1] = CFSTR(kDS1AttrReadOnlyNode);
+
+ CFStringRef types[2];
+ types[0] = CFSTR("str");
+ types[1] = CFSTR("str");
+ CFDictionaryRef attrsdict = CFDictionaryCreate(kCFAllocatorDefault, (const void **)attrs, (const void **)types, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
+
+ CFMutableDictionaryRef nodeData = dir->GetNodeAttributes("/Search", attrsdict, false);
+ if (nodeData != NULL)
+ {
+ printf("\n*** Node Attributes: %d ***\n", CFDictionaryGetCount(nodeData));
+ CFDictionaryApplyFunction(nodeData, PrintDictionary, NULL);
+ CFRelease(nodeData);
+ }
+ CFRelease(attrsdict);
+}
+
+void GetUserRecordDetails(CDirectoryService* dir)
+{
CFStringRef attrs[3];
attrs[0] = CFSTR(kDS1AttrDistinguishedName);
attrs[1] = CFSTR(kDS1AttrGeneratedUID);
attrs[2] = CFSTR(kDSNAttrJPEGPhoto);
-
+
CFStringRef types[3];
types[0] = CFSTR("str");
types[1] = CFSTR("str");
types[2] = CFSTR("base64");
CFDictionaryRef attrsdict = CFDictionaryCreate(kCFAllocatorDefault, (const void **)attrs, (const void **)types, 3, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
-
+
CFStringRef rtypes[1];
rtypes[0] = CFSTR(kDSStdRecordTypeUsers);
CFArrayRef recordTypes = CFArrayCreate(kCFAllocatorDefault, (const void**)rtypes, 1, &kCFTypeArrayCallBacks);
-
+
CFMutableArrayRef data = dir->ListAllRecordsWithAttributes(recordTypes, attrsdict, 0, false);
if (data != NULL)
{
@@ -94,7 +113,7 @@
CFArrayRef tuple = (CFArrayRef)CFArrayGetValueAtIndex(data, i);
CFStringRef str = (CFStringRef)CFArrayGetValueAtIndex(tuple, 0);
const char* bytes = CFStringGetCStringPtr(str, kCFStringEncodingUTF8);
-
+
if (bytes == NULL)
{
char localBuffer[256];
@@ -114,12 +133,17 @@
printf("\nNo Users returned\n");
}
CFRelease(attrsdict);
+}
+
+void GetGroupRecordDetails(CDirectoryService* dir)
+{
#if 0
+ CFStringRef strings[2];
strings[0] = CFSTR(kDSNAttrGroupMembers);
strings[1] = CFSTR(kDS1AttrGeneratedUID);
- array = CFArrayCreate(kCFAllocatorDefault, (const void **)strings, 2, &kCFTypeArrayCallBacks);
-
- data = NULL;//dir->ListAllRecordsWithAttributes(kDSStdRecordTypeGroups, array);
+ CFArrayRef array = CFArrayCreate(kCFAllocatorDefault, (const void **)strings, 2, &kCFTypeArrayCallBacks);
+
+ CFMutableArrayRef data = dir->ListAllRecordsWithAttributes(kDSStdRecordTypeGroups, array);
if (data != NULL)
{
printf("\n*** Groups: %d ***\n", CFArrayGetCount(data));
@@ -128,7 +152,7 @@
CFArrayRef tuple = (CFArrayRef)CFArrayGetValueAtIndex(data, i);
CFStringRef str = (CFStringRef)CFArrayGetValueAtIndex(tuple, 0);
const char* bytes = CFStringGetCStringPtr(str, kCFStringEncodingUTF8);
-
+
if (bytes == NULL)
{
char localBuffer[256];
@@ -149,11 +173,11 @@
}
CFRelease(array);
#endif
-#endif
+}
- AuthenticateUser(authdir, "/LDAPv3/127.0.0.1", "oliverdaboo", "oliver");
- AuthenticateUser(authdir, "/LDAPv3/127.0.0.1", "eleanordaboo", "eleanor");
-#elif 0
+void GetSpecificUserRecordDetails(CDirectoryService* dir)
+{
+#if 0
CFStringRef keys[2];
keys[0] = CFSTR(kDS1AttrFirstName);
keys[1] = CFSTR(kDS1AttrLastName);
@@ -161,12 +185,12 @@
values[0] = CFSTR("cyrus");
values[1] = CFSTR("daboo");
CFDictionaryRef kvdict = CFDictionaryCreate(kCFAllocatorDefault, (const void **)keys, (const void**)values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
-
+
CFStringRef strings[2];
strings[0] = CFSTR(kDS1AttrDistinguishedName);
strings[1] = CFSTR(kDS1AttrGeneratedUID);
CFArrayRef array = CFArrayCreate(kCFAllocatorDefault, (const void **)strings, 2, &kCFTypeArrayCallBacks);
-
+
CFMutableDictionaryRef dict = dir->QueryRecordsWithAttributes(kvdict, eDSContains, false, false, kDSStdRecordTypeUsers, array);
if (dict != NULL)
{
@@ -179,13 +203,17 @@
printf("\nNo Users returned\n");
}
CFRelease(array);
+#endif
+}
-#elif 0
+void GetResourcesRecordDetails(CDirectoryService* dir)
+{
+#if 0
CFStringRef strings[2];
strings[0] = CFSTR(kDS1AttrDistinguishedName);
strings[1] = CFSTR(kDS1AttrXMLPlist);
CFArrayRef array = CFArrayCreate(kCFAllocatorDefault, (const void **)strings, 2, &kCFTypeArrayCallBacks);
-
+
CFMutableDictionaryRef dict = dir->QueryRecordsWithAttribute(kDSNAttrServicesLocator, "D9A8E41B", eDSStartsWith, false, kDSStdRecordTypeResources, array);
if (dict != NULL)
{
@@ -198,15 +226,19 @@
printf("\nNo Users returned\n");
}
CFRelease(array);
+#endif
+}
-#elif 1
+void GetCompoundResourcesRecordDetails(CDirectoryService* dir)
+{
+#if 0
const char* compoundtest = "(&(|(dsAttrTypeStandard:RealName=U2*)(dsAttrTypeStandard:RealName=X S*))(dsAttrTypeStandard:ServicesLocator=D9A8E41B-C591-4D6B-A1CA-B57FFB8EF2F5:F967C034-54B8-4E65-9B38-7A6CD2600268:calendar))";
-
+
CFStringRef strings[2];
strings[0] = CFSTR(kDS1AttrDistinguishedName);
strings[1] = CFSTR(kDS1AttrXMLPlist);
CFArrayRef array = CFArrayCreate(kCFAllocatorDefault, (const void **)strings, 2, &kCFTypeArrayCallBacks);
-
+
CFMutableDictionaryRef dict = dir->QueryRecordsWithAttributes(compoundtest, true, kDSStdRecordTypeResources, array);
if (dict != NULL)
{
@@ -219,15 +251,28 @@
printf("\nNo Users returned\n");
}
CFRelease(array);
+#endif
+}
-#else
- const char* u = "test";
+int main (int argc, const char * argv[]) {
+
+ //CDirectoryService* dir = new CDirectoryService("/Search");
+ CDirectoryServiceAuth* authdir = new CDirectoryServiceAuth();
+
+ //AuthenticateUser(authdir, "/LDAPv3/127.0.0.1", "oliverdaboo", "oliver");
+ AuthenticateUser(authdir, "/LDAPv3/127.0.0.1", "eleanordaboo", "eleanor");
+
+ const char* n = "/LDAPv3/127.0.0.1";
+ //const char* u = "test";
//const char* c = "nonce=\"1\", qop=\"auth\", realm=\"Test\", algorithm=\"md5\", opaque=\"1\"";
//const char* r = "username=\"test\", nonce=\"1\", cnonce=\"1\", nc=\"1\", realm=\"Test\", algorithm=\"md5\", opaque=\"1\", qop=\"auth\", uri=\"/\", response=\"4241f31ffe6f9c99b891f88e9c41caa9\"";
- const char* c = "WWW-Authenticate: digest nonce=\"1621696297327727918745238639\", opaque=\"121994e78694cbdff74f12cb32ee6f00-MTYyMTY5NjI5NzMyNzcyNzkxODc0NTIzODYzOSwxMjcuMC4wLjEsMTE2ODU2ODg5NQ==\", realm=\"Test Realm\", algorithm=\"md5\", qop=\"auth\"";
- const char* r = "Authorization: Digest username=\"test\", realm=\"Test Realm\", nonce=\"1621696297327727918745238639\", uri=\"/principals/users/test/\", response=\"e260f13cffcc15572ddeec9c31de437b\", opaque=\"121994e78694cbdff74f12cb32ee6f00-MTYyMTY5NjI5NzMyNzcyNzkxODc0NTIzODYzOSwxMjcuMC4wLjEsMTE2ODU2ODg5NQ==\", algorithm=\"md5\", cnonce=\"70cbd8f04227d8d46c0193b290beaf0d\", nc=00000001, qop=\"auth\"";
- AuthenticateUserDigest(authdir, u, c, r, "GET");
-#endif
+ //const char* c = "WWW-Authenticate: digest nonce=\"1621696297327727918745238639\", opaque=\"121994e78694cbdff74f12cb32ee6f00-MTYyMTY5NjI5NzMyNzcyNzkxODc0NTIzODYzOSwxMjcuMC4wLjEsMTE2ODU2ODg5NQ==\", realm=\"Test Realm\", algorithm=\"md5\", qop=\"auth\"";
+ //const char* r = "Authorization: Digest username=\"test\", realm=\"Test Realm\", nonce=\"1621696297327727918745238639\", uri=\"/principals/users/test/\", response=\"e260f13cffcc15572ddeec9c31de437b\", opaque=\"121994e78694cbdff74f12cb32ee6f00-MTYyMTY5NjI5NzMyNzcyNzkxODc0NTIzODYzOSwxMjcuMC4wLjEsMTE2ODU2ODg5NQ==\", algorithm=\"md5\", cnonce=\"70cbd8f04227d8d46c0193b290beaf0d\", nc=00000001, qop=\"auth\"";
+ const char* u = "";
+ const char* c = "DIGEST-MD5";
+ const char* r = "";
+ AuthenticateUserDigest(authdir, n, u, c, r, "GET");
+
return 0;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090401/ea62435c/attachment-0001.html>
More information about the calendarserver-changes
mailing list