diff --git a/v3/control.go b/v3/control.go index f1c2746..e0dc0e1 100644 --- a/v3/control.go +++ b/v3/control.go @@ -29,14 +29,86 @@ const ( // ControlTypeServerSideSorting - https://www.ietf.org/rfc/rfc2891.txt ControlTypeServerSideSortingResult = "1.2.840.113556.1.4.474" - // ControlTypeMicrosoftNotification - https://msdn.microsoft.com/en-us/library/aa366983(v=vs.85).aspx + // ControlTypeMicrosoftPagedResults - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftPagedResults = "1.2.840.113556.1.4.319" + // ControlTypeMicrosoftCrossDomainMoveTarget - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftCrossDomainMoveTarget = "1.2.840.113556.1.4.521" + // ControlTypeDirSync - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeDirSync = "1.2.840.113556.1.4.841" + // ControlTypeMicrosoftDomainScope - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftDomainScope = "1.2.840.113556.1.4.1339" + // ControlTypeMicrosoftExtendedDN - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftExtendedDN = "1.2.840.113556.1.4.529" + // ControlTypeMicrosoftGetStats - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftGetStats = "1.2.840.113556.1.4.970" + // ControlTypeMicrosoftLazyCommit - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftLazyCommit = "1.2.840.113556.1.4.619" + // ControlTypeMicrosoftPermissiveModify - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftPermissiveModify = "1.2.840.113556.1.4.1413" + // ControlTypeMicrosoftNotification - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea ControlTypeMicrosoftNotification = "1.2.840.113556.1.4.528" - // ControlTypeMicrosoftShowDeleted - https://msdn.microsoft.com/en-us/library/aa366989(v=vs.85).aspx + // ControlTypeMicrosoftRespSort - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftRespSort = "1.2.840.113556.1.4.474" + // ControlTypeMicrosoftSDFlags - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftSDFlags = "1.2.840.113556.1.4.801" + // ControlTypeMicrosoftSearchOptions - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftSearchOptions = "1.2.840.113556.1.4.1340" + // ControlTypeMicrosoftSort - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftSort = "1.2.840.113556.1.4.473" + // ControlTypeMicrosoftShowDeleted - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea ControlTypeMicrosoftShowDeleted = "1.2.840.113556.1.4.417" - // ControlTypeMicrosoftServerLinkTTL - https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/f4f523a8-abc0-4b3a-a471-6b2fef135481?redirectedfrom=MSDN + // ControlTypeMicrosoftTreeDelete - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftTreeDelete = "1.2.840.113556.1.4.805" + // ControlTypeMicrosoftVerifyName - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftVerifyName = "1.2.840.113556.1.4.1338" + // ControlTypeVLVRequest - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeVLVRequest = "2.16.840.1.113730.3.4.9" + // ControlTypeVLVResponse - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeVLVResponse = "2.16.840.1.113730.3.4.10" + // ControlTypeMicrosoftASQ - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftASQ = "1.2.840.113556.1.4.1504" + // ControlTypeMicrosoftQuotaControl - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftQuotaControl = "1.2.840.113556.1.4.1852" + // ControlTypeMicrosoftRangeOption - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftRangeOption = "1.2.840.113556.1.4.802" + // ControlTypeMicrosoftShutdownNotify - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftShutdownNotify = "1.2.840.113556.1.4.1907" + // ControlTypeMicrosoftForceUpdate - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftForceUpdate = "1.2.840.113556.1.4.1974" + // ControlTypeMicrosoftRangeRetrievalNoErr - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftRangeRetrievalNoErr = "1.2.840.113556.1.4.1948" + // ControlTypeMicrosoftRODCDCPromo - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftRODCDCPromo = "1.2.840.113556.1.4.1341" + // ControlTypeMicrosoftDNInput - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftDNInput = "1.2.840.113556.1.4.2026" + // ControlTypeMicrosoftShowDeactivatedLink - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftShowDeactivatedLink = "1.2.840.113556.1.4.2065" + // ControlTypeMicrosoftShowRecycled - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftShowRecycled = "1.2.840.113556.1.4.2064" + // ControlTypeMicrosoftPolicyHintsDeprecated - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftPolicyHintsDeprecated = "1.2.840.113556.1.4.2066" + // ControlTypeMicrosoftDirSyncEX - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftDirSyncEX = "1.2.840.113556.1.4.2090" + // ControlTypeMicrosoftUpdateStats - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftUpdateStats = "1.2.840.113556.1.4.2205" + // ControlTypeMicrosoftTreeDeleteEX - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftTreeDeleteEX = "1.2.840.113556.1.4.2204" + // ControlTypeMicrosoftSearchHints - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftSearchHints = "1.2.840.113556.1.4.2206" + // ControlTypeMicrosoftExpectedEntryCount - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftExpectedEntryCount = "1.2.840.113556.1.4.2211" + // ControlTypeMicrosoftPolicyHints - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftPolicyHints = "1.2.840.113556.1.4.2239" + // ControlTypeMicrosoftSetOwner - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftSetOwner = "1.2.840.113556.1.4.2255" + // ControlTypeMicrosoftBypassQuota - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftBypassQuota = "1.2.840.113556.1.4.2256" + // ControlTypeMicrosoftServerLinkTTL - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea ControlTypeMicrosoftServerLinkTTL = "1.2.840.113556.1.4.2309" - // ControlTypeDirSync - Active Directory DirSync - https://msdn.microsoft.com/en-us/library/aa366978(v=vs.85).aspx - ControlTypeDirSync = "1.2.840.113556.1.4.841" + // ControlTypeMicrosoftSetCorrelationID - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftSetCorrelationID = "1.2.840.113556.1.4.2330" + // ControlTypeMicrosoftThreadTraceOverride - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3c5e87db-4728-4f29-b164-01dd7d7391ea + ControlTypeMicrosoftThreadTraceOverride = "1.2.840.113556.1.4.2354" // ControlTypeSyncRequest - https://www.ietf.org/rfc/rfc4533.txt ControlTypeSyncRequest = "1.3.6.1.4.1.4203.1.9.1.1" @@ -49,29 +121,85 @@ const ( ) // Flags for DirSync control +// Source: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/2213a7f2-0a36-483c-b2a4-8574d53aa1e3 const ( - DirSyncIncrementalValues int64 = 2147483648 - DirSyncPublicDataOnly int64 = 8192 - DirSyncAncestorsFirstOrder int64 = 2048 - DirSyncObjectSecurity int64 = 1 + // Windows Server 2003 and later: If this flag is not present, all of the values, + // up to a server-specified limit, in a multivalued attribute are returned when + // any value changes. If this flag is present, only the changed values are + // returned, provided the attribute is a forward link value. + // Windows 2000: Not supported. + DirSyncIncrementalValues int64 = 0x80000000 + + // Do not return private data in the search results. + // Windows Server 2003 and later: This flag can optionally be passed to the DC, + // but it has no effect. + // Windows 2000: Not supported. + DirSyncPublicDataOnly int64 = 0x00002000 + + // Return parent objects before child objects, otherwise parent + // objects would appear later in the replication stream. + DirSyncAncestorsFirstOrder int64 = 0x00000800 + + // Windows Server 2003 operating system and later: If this flag is present, + // the client can only view objects and attributes that are otherwise accessible + // to the client. If this flag is not present, the server checks if the client + // has access rights to read the changes in the NC. + // Windows 2000 operating system: Not supported. + DirSyncObjectSecurity int64 = 0x00000001 ) // ControlTypeMap maps controls to text descriptions var ControlTypeMap = map[string]string{ - ControlTypePaging: "Paging", - ControlTypeBeheraPasswordPolicy: "Password Policy - Behera Draft", - ControlTypeManageDsaIT: "Manage DSA IT", - ControlTypeSubtreeDelete: "Subtree Delete Control", - ControlTypeMicrosoftNotification: "Change Notification - Microsoft", - ControlTypeMicrosoftShowDeleted: "Show Deleted Objects - Microsoft", - ControlTypeMicrosoftServerLinkTTL: "Return TTL-DNs for link values with associated expiry times - Microsoft", - ControlTypeServerSideSorting: "Server Side Sorting Request - LDAP Control Extension for Server Side Sorting of Search Results (RFC2891)", - ControlTypeServerSideSortingResult: "Server Side Sorting Results - LDAP Control Extension for Server Side Sorting of Search Results (RFC2891)", - ControlTypeDirSync: "DirSync", - ControlTypeSyncRequest: "Sync Request", - ControlTypeSyncState: "Sync State", - ControlTypeSyncDone: "Sync Done", - ControlTypeSyncInfo: "Sync Info", + ControlTypePaging: "Paging", + ControlTypeBeheraPasswordPolicy: "Password Policy - Behera Draft", + ControlTypeVChuPasswordMustChange: "Password Must Change - VChu Draft", + ControlTypeVChuPasswordWarning: "Password Warning - VChu Draft", + ControlTypeManageDsaIT: "Manage DSA IT", + ControlTypeWhoAmI: "Who Am I", + ControlTypeSubtreeDelete: "Subtree Delete Control", + + ControlTypeServerSideSorting: "Server Side Sorting", + ControlTypeServerSideSortingResult: "Server Side Sorting Result", + + ControlTypeMicrosoftCrossDomainMoveTarget: "Cross Domain Move Target - Microsoft", + ControlTypeDirSync: "DirSync", + ControlTypeMicrosoftDomainScope: "Domain Scope - Microsoft", + ControlTypeMicrosoftExtendedDN: "Extended DN - Microsoft", + ControlTypeMicrosoftGetStats: "Get Stats - Microsoft", + ControlTypeMicrosoftLazyCommit: "Lazy Commit - Microsoft", + ControlTypeMicrosoftPermissiveModify: "Permissive Modify - Microsoft", + ControlTypeMicrosoftNotification: "Change Notification - Microsoft", + ControlTypeMicrosoftSDFlags: "SD Flags - Microsoft", + ControlTypeMicrosoftSearchOptions: "Search Options - Microsoft", + ControlTypeMicrosoftShowDeleted: "Show Deleted Objects - Microsoft", + ControlTypeMicrosoftVerifyName: "Verify Name - Microsoft", + ControlTypeMicrosoftASQ: "ASQ - Microsoft", + ControlTypeMicrosoftQuotaControl: "Quota Control - Microsoft", + ControlTypeMicrosoftRangeOption: "Range Option - Microsoft", + ControlTypeMicrosoftShutdownNotify: "Shutdown Notify - Microsoft", + ControlTypeMicrosoftForceUpdate: "Force Update - Microsoft", + ControlTypeMicrosoftRangeRetrievalNoErr: "Range Retrieval No Error - Microsoft", + ControlTypeMicrosoftRODCDCPromo: "RODC DC Promo - Microsoft", + ControlTypeMicrosoftDNInput: "DN Input - Microsoft", + ControlTypeMicrosoftShowDeactivatedLink: "Show Deactivated Link - Microsoft", + ControlTypeMicrosoftShowRecycled: "Show Recycled - Microsoft", + ControlTypeMicrosoftPolicyHintsDeprecated: "Policy Hints Deprecated - Microsoft", + ControlTypeMicrosoftDirSyncEX: "DirSync EX - Microsoft", + ControlTypeMicrosoftUpdateStats: "Update Stats - Microsoft", + ControlTypeMicrosoftTreeDeleteEX: "Tree Delete EX - Microsoft", + ControlTypeMicrosoftSearchHints: "Search Hints - Microsoft", + ControlTypeMicrosoftExpectedEntryCount: "Expected Entry Count - Microsoft", + ControlTypeMicrosoftPolicyHints: "Policy Hints - Microsoft", + ControlTypeMicrosoftSetOwner: "Set Owner - Microsoft", + ControlTypeMicrosoftBypassQuota: "Bypass Quota - Microsoft", + ControlTypeMicrosoftServerLinkTTL: "Return TTL-DNs for link values with associated expiry times - Microsoft", + ControlTypeMicrosoftSetCorrelationID: "Set Correlation ID - Microsoft", + ControlTypeMicrosoftThreadTraceOverride: "Thread Trace Override - Microsoft", + + ControlTypeSyncRequest: "Sync Request", + ControlTypeSyncState: "Sync State", + ControlTypeSyncDone: "Sync Done", + ControlTypeSyncInfo: "Sync Info", } // Control defines an interface controls provide to encode and describe themselves diff --git a/v3/search.go b/v3/search.go index 72dbd9d..151817c 100644 --- a/v3/search.go +++ b/v3/search.go @@ -305,7 +305,7 @@ func (e *Entry) Unmarshal(i interface{}) (err error) { }) } -// UnmarshalFunc allows you to define a custom unmarshaler to parse an Entry values. +// UnmarshalFunc allows you to define a custom unmarshaler to parse an Entry values. // A custom unmarshaler can be found in the Unmarshal function or in the test files. func (e *Entry) UnmarshalFunc(i interface{}, fn func(entry *Entry, fieldType reflect.StructField, fieldValue reflect.Value) error) error {