restemplate/indy/Protocols/IdLDAPV3.pas

1376 lines
34 KiB
Plaintext

{
$Project$
$Workfile$
$Revision$
$DateUTC$
$Id$
This file is part of the Indy (Internet Direct) project, and is offered
under the dual-licensing agreement described on the Indy website.
(http://www.indyproject.org/)
Copyright:
(c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
}
{
$Log$
}
{
Rev 1.0 15/04/2005 7:25:04 AM GGrieve
first ported to INdy
}
unit IdLDAPV3;
interface
{$i IdCompilerDefines.inc}
uses
Classes,
IdContainers;
type
TIdLDAPV3ResultCode = (
lrcSuccess,
lrcOperationsError,
lrcProtocolError,
lrcTimeLimitExceeded,
lrcSizeLimitExceeded,
lrcCompareFalse,
lrcCompareTrue,
lrcAuthMethodNotSupported,
lrcStrongAuthRequired,
lrcReserved9,
lrcReferral,
lrcAdminLimitExceeded,
lrcUnavailableCriticalExtension,
lrcConfidentialityRequired,
lrcSaslBindInProgress,
lrcNoSuchAttribute,
lrcUndefinedAttributeType,
lrcInappropriateMatching,
lrcConstraintViolation,
lrcAttributeOrValueExists,
lrcInvalidAttributeSyntax,
lrcReserved22,
lrcReserved23,
lrcReserved24,
lrcReserved25,
lrcReserved26,
lrcReserved27,
lrcReserved28,
lrcReserved29,
lrcReserved30,
lrcReserved31,
lrcNoSuchObject,
lrcAliasProblem,
lrcInvalidDNSyntax,
lrcReserved_undefinedIsLeaf,
lrcAliasDereferencingProblem,
lrcReserved37,
lrcReserved38,
lrcReserved39,
lrcReserved40,
lrcReserved41,
lrcReserved42,
lrcReserved43,
lrcReserved44,
lrcReserved45,
lrcReserved46,
lrcReserved47,
lrcInappropriateAuthentication,
lrcInvalidCredentials,
lrcInsufficientAccessRights,
lrcBusy,
lrcUnavailable,
lrcUnwillingToPerform,
lrcLoopDetect,
lrcReserved55,
lrcReserved56,
lrcReserved57,
lrcReserved58,
lrcReserved59,
lrcReserved60,
lrcReserved61,
lrcReserved62,
lrcReserved63,
lrcNamingViolation,
lrcObjectClassViolation,
lrcNotAllowedOnNonLeaf,
lrcNotAllowedOnRDN,
lrcEntryAlreadyExists,
lrcObjectClassModsProhibited,
lrcReservedCLDAP,
lrcAffectsMultipleDSAs,
lrcReserved72,
lrcReserved73,
lrcReserved74,
lrcReserved75,
lrcReserved76,
lrcReserved77,
lrcReserved78,
lrcReserved79,
lrcOther);
TIdLDAPV3SearchScope = (ssBaseObject, ssSingleLevel, ssWholeSubtree);
TIdLDAPV3SearchDerefAliases = (sdNeverDerefAliases, sdDerefInSearching, sdDerefFindingBaseObj, sdDerefAlways);
TIdLDAPV3ModificationOperation = (moAdd, omDelete, moReplace);
const
NAMES_LDAPV3RESULTCODE: Array [TIdLDAPV3ResultCode] of String = (
'Success',
'OperationsError',
'ProtocolError',
'TimeLimitExceeded',
'SizeLimitExceeded',
'CompareFalse',
'CompareTrue',
'AuthMethodNotSupported',
'StrongAuthRequired',
'Reserved9',
'Referral',
'AdminLimitExceeded',
'UnavailableCriticalExtension',
'ConfidentialityRequired',
'SaslBindInProgress',
'NoSuchAttribute',
'UndefinedAttributeType',
'InappropriateMatching',
'ConstraintViolation',
'AttributeOrValueExists',
'InvalidAttributeSyntax',
'Reserved22',
'Reserved23',
'Reserved24',
'Reserved25',
'Reserved26',
'Reserved27',
'Reserved28',
'Reserved29',
'Reserved30',
'Reserved31',
'NoSuchObject',
'AliasProblem',
'InvalidDNSyntax',
'Reserved_undefinedIsLeaf',
'AliasDereferencingProblem',
'Reserved37',
'Reserved38',
'Reserved39',
'Reserved40',
'Reserved41',
'Reserved42',
'Reserved43',
'Reserved44',
'Reserved45',
'Reserved46',
'Reserved47',
'InappropriateAuthentication',
'InvalidCredentials',
'InsufficientAccessRights',
'Busy',
'Unavailable',
'UnwillingToPerform',
'LoopDetect',
'Reserved55',
'Reserved56',
'Reserved57',
'Reserved58',
'Reserved59',
'Reserved60',
'Reserved61',
'Reserved62',
'Reserved63',
'NamingViolation',
'ObjectClassViolation',
'NotAllowedOnNonLeaf',
'NotAllowedOnRDN',
'EntryAlreadyExists',
'ObjectClassModsProhibited',
'ReservedCLDAP',
'AffectsMultipleDSAs',
'Reserved72',
'Reserved73',
'Reserved74',
'Reserved75',
'Reserved76',
'Reserved77',
'Reserved78',
'Reserved79',
'Other');
NAMES_LDAPV3SEARCHSCOPE: Array [TIdLDAPV3SearchScope] of String =
('BaseObject', 'SingleLevel', 'WholeSubtree');
NAMES_LDAPV3SEARCHDEREFALIASES: Array [TIdLDAPV3SearchDerefAliases] of String =
('NeverDerefAliases', 'DerefInSearching', 'DerefFindingBaseObj', 'DerefAlways');
NAMES_LDAPV3MODIFICATIONOPERATION: Array [TIdLDAPV3ModificationOperation] of String =
('Add', 'Delete', 'Replace');
type
// simple types
TIdLDAPV3MessageID = Integer; // >= 0
TIdLDAPV3LDAPString = String; // UTF-8
TIdLDAPV3LDAPOID = String;
TIdLDAPV3LDAPDN = TIdLDAPV3LDAPString;
TIdLDAPV3RelativeLDAPDN = TIdLDAPV3LDAPString;
TIdLDAPV3AttributeType = TIdLDAPV3LDAPString;
TIdLDAPV3AttributeDescription = TIdLDAPV3LDAPString;
TIdLDAPV3AttributeValue = String;
TIdLDAPV3AssertionValue = String;
TIdLDAPV3MatchingRuleId = TIdLDAPV3LDAPString;
TIdLDAPV3AttributeDescriptionList = TStringList;
TIdLDAPV3AttributeValueSet = TStringList;
TIdLDAPV3Referral = TStringList;
// general Classes
TIdLDAPV3Control = Class (TObject)
private
FCriticality: Boolean;
FControlValue: String;
FControlType: TIdLDAPV3LDAPOID;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property controlType: TIdLDAPV3LDAPOID read FControlType write FControlType;
property criticality: Boolean read FCriticality write FCriticality; // DEFAULT FALSE
property controlValue: String read FControlValue write FControlValue; // OPTIONAL
end;
TIdLDAPV3ControlList = Class (TIdObjectList)
private
function GetControl(iIndex: Integer):TIdLDAPV3Control;
protected
public
property Control[iIndex: Integer]: TIdLDAPV3Control read GetControl; default;
end;
TIdLDAPV3AttributeValueAssertion = Class (TObject)
private
FAssertionValue: TIdLDAPV3AssertionValue;
FAttributeDesc: TIdLDAPV3AttributeDescription;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property attributeDesc: TIdLDAPV3AttributeDescription read FAttributeDesc write FAttributeDesc;
property assertionValue: TIdLDAPV3AssertionValue read FAssertionValue write FAssertionValue;
end;
TIdLDAPV3Attribute = Class (TObject)
private
FType: TIdLDAPV3AttributeDescription;
FVals: TIdLDAPV3AttributeValueSet;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property _type: TIdLDAPV3AttributeDescription read FType write FType;
property vals: TIdLDAPV3AttributeValueSet read FVals write FVals;
end;
TIdLDAPV3AttributeList = Class (TIdObjectList)
private
function GetAttribute(iIndex: Integer):TIdLDAPV3Attribute;
protected
public
property Attribute[iIndex: Integer]: TIdLDAPV3Attribute read GetAttribute; default;
end;
// Message Classes
TIdLDAPV3LDAPResult = Class (TObject)
private
FMatchedDN: TIdLDAPV3LDAPDN;
FErrorMessage: TIdLDAPV3LDAPString;
FReferral: TIdLDAPV3Referral;
FResultCode: TIdLDAPV3ResultCode;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property resultCode: TIdLDAPV3ResultCode read FResultCode write FResultCode;
property matchedDN: TIdLDAPV3LDAPDN read FMatchedDN write FMatchedDN;
property errorMessage: TIdLDAPV3LDAPString read FErrorMessage write FErrorMessage;
property referral: TIdLDAPV3Referral read FReferral write FReferral; // OPTIONAL {3}
end;
TIdLDAPV3SaslCredentials = Class (TObject)
private
FCredentials: String;
FMechanism: TIdLDAPV3LDAPString;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property mechanism: TIdLDAPV3LDAPString read FMechanism write FMechanism;
property credentials: String read FCredentials write FCredentials; // OPTIONAL
end;
TIdLDAPV3AuthenticationChoice = Class (TObject)
private
FSimple: String;
FSasl: TIdLDAPV3SaslCredentials;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
// choice
property simple: String read FSimple write FSimple; {0}
property sasl: TIdLDAPV3SaslCredentials read FSasl write FSasl; {3}
end;
{0}
TIdLDAPV3BindRequest = Class (TObject)
private
FVersion: Byte;
FAuthentication: TIdLDAPv3AuthenticationChoice;
FName: TIdLDAPV3LDAPDN;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property version: Byte read FVersion write FVersion;
property name: TIdLDAPV3LDAPDN read FName write FName;
property authentication: TIdLDAPv3AuthenticationChoice read FAuthentication write FAuthentication;
end;
{1}
TIdLDAPV3BindResponse = Class (TIdLDAPv3LDAPResult)
private
FServerSaslCreds: String;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; override;
property serverSaslCreds: String read FServerSaslCreds write FServerSaslCreds; // optional {7}
end;
{2}
TIdLDAPV3UnbindRequest = Class (TObject)
public
end;
TIdLDAPV3Substring = Class (TObject)
private
FAny: TIdLDAPV3LDAPString;
FFinal: TIdLDAPV3LDAPString;
FInitial: TIdLDAPV3LDAPString;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property initial: TIdLDAPV3LDAPString read FInitial write FInitial; {0}
property any: TIdLDAPV3LDAPString read FAny write FAny; {1}
property final: TIdLDAPV3LDAPString read FFinal write FFinal; {2}
end;
TIdLDAPV3SubstringList = Class (TIdObjectList)
private
function GetSubstring(iIndex: Integer):TIdLDAPV3Substring;
protected
public
property Substring[iIndex: Integer]: TIdLDAPV3Substring read GetSubstring; default;
end;
TIdLDAPV3SubstringFilter = Class (TObject)
private
FType: TIdLDAPV3AttributeDescription;
FSubstrings: TIdLDAPV3SubstringList;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property _type: TIdLDAPV3AttributeDescription read FType write FType;
property substrings: TIdLDAPV3SubstringList read FSubstrings write FSubstrings; // rule: count > 0
end;
TIdLDAPV3MatchingRuleAssertion = Class (TObject)
private
FDnAttributes: Boolean;
FMatchValue: TIdLDAPV3AssertionValue;
FType: TIdLDAPV3AttributeDescription;
FMatchingRule: TIdLDAPV3MatchingRuleId;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property matchingRule: TIdLDAPV3MatchingRuleId read FMatchingRule write FMatchingRule;// OPTIONAL {1}
property _type: TIdLDAPV3AttributeDescription read FType write FType; // OPTIONAL {2}
property matchValue: TIdLDAPV3AssertionValue read FMatchValue write FMatchValue; // {3}
property dnAttributes: Boolean read FDnAttributes write FDnAttributes; // DEFAULT FALSE {4}
end;
TIdLDAPV3FilterList = Class;
TIdLDAPV3Filter = Class (TObject)
private
FPresent: TIdLDAPV3AttributeDescription;
FEqualityMatch: TIdLDAPV3AttributeValueAssertion;
FLessOrEqual: TIdLDAPV3AttributeValueAssertion;
FgreaterOrEqual: TIdLDAPV3AttributeValueAssertion;
FApproxMatch: TIdLDAPV3AttributeValueAssertion;
FNot: TIdLDAPV3Filter;
F_Or: TIdLDAPV3FilterList;
FAnd: TIdLDAPV3FilterList;
FExtensibleMatch: TIdLDAPV3MatchingRuleAssertion;
FSubstrings: TIdLDAPV3SubstringFilter;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property _and: TIdLDAPV3FilterList read FAnd write FAnd; {0}
property _or: TIdLDAPV3FilterList read F_Or write F_or; {1}
property _not: TIdLDAPV3Filter read FNot write FNot; {2}
property equalityMatch: TIdLDAPV3AttributeValueAssertion read FEqualityMatch write FEqualityMatch; {3}
property substrings: TIdLDAPV3SubstringFilter read FSubstrings write FSubstrings; {4}
property greaterOrEqual: TIdLDAPV3AttributeValueAssertion read FGreaterOrEqual write FGreaterOrEqual; {5}
property lessOrEqual: TIdLDAPV3AttributeValueAssertion read FLessOrEqual write FLessOrEqual; {6}
property present: TIdLDAPV3AttributeDescription read FPresent write FPresent; {7}
property approxMatch: TIdLDAPV3AttributeValueAssertion read FApproxMatch write FApproxMatch; {8}
property extensibleMatch: TIdLDAPV3MatchingRuleAssertion read FExtensibleMatch write FExtensibleMatch; {9}
end;
TIdLDAPV3FilterList = Class (TIdObjectList)
private
Function GetFilter(iIndex: Integer):TIdLDAPV3Filter;
protected
public
property Filter[iIndex: Integer]: TIdLDAPV3Filter read GetFilter; default;
end;
{3}
TIdLDAPV3SearchRequest = Class (TObject)
private
FTypesOnly: Boolean;
FTimeLimit: Integer;
FSizeLimit: Integer;
FAttributes: TIdLDAPV3AttributeDescriptionList;
FFilter: TIdLDAPV3Filter;
FBaseObject: TIdLDAPV3LDAPDN;
FDerefAliases: TIdLDAPV3SearchDerefAliases;
FScope: TIdLDAPV3SearchScope;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property baseObject: TIdLDAPV3LDAPDN read FBaseObject write FBaseObject;
property scope: TIdLDAPV3SearchScope read FScope write FScope;
property derefAliases: TIdLDAPV3SearchDerefAliases read FDerefAliases write FDerefAliases;
property sizeLimit: Integer read FSizeLimit write FSizeLimit;
property timeLimit: Integer read FTimeLimit write FTimeLimit;
property typesOnly: Boolean read FTypesOnly write FTypesOnly;
property filter: TIdLDAPV3Filter read FFilter write FFilter;
property attributes: TIdLDAPV3AttributeDescriptionList read FAttributes write FAttributes;
end;
TIdLDAPV3PartialAttribute = Class (TObject)
private
FType: TIdLDAPV3AttributeDescription;
FVals: TIdLDAPV3AttributeValueSet;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property _type: TIdLDAPV3AttributeDescription read FType write FType;
property vals: TIdLDAPV3AttributeValueSet read FVals write FVals;
end;
TIdLDAPV3PartialAttributeList = Class (TIdObjectList)
private
function GetPartialAttribute(iIndex: Integer):TIdLDAPV3PartialAttribute;
protected
public
property PartialAttribute[iIndex: Integer]: TIdLDAPV3PartialAttribute read GetPartialAttribute; default;
end;
{4}
TIdLDAPV3SearchResultEntry = Class (TObject)
private
FObjectName: TIdLDAPV3LDAPDN;
FAttributes: TIdLDAPV3PartialAttributeList;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property objectName: TIdLDAPV3LDAPDN read FObjectName write FObjectName;
property attributes: TIdLDAPV3PartialAttributeList read FAttributes write FAttributes;
end;
{5}
TIdLDAPV3SearchResultDone = Class (TIdLDAPV3LDAPResult)
public
end;
TIdLDAPV3AttributeTypeAndValues = Class (TObject)
private
FType: TIdLDAPV3AttributeDescription;
FVals: TIdLDAPV3AttributeValueSet;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property _type: TIdLDAPV3AttributeDescription read FType write FType;
property vals: TIdLDAPV3AttributeValueSet read FVals write FVals;
end;
TIdLDAPV3Modification = Class (TObject)
private
FModification: TIdLDAPV3AttributeTypeAndValues;
FOperation: TIdLDAPV3ModificationOperation;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property operation: TIdLDAPV3ModificationOperation read FOperation write FOperation;
property modification: TIdLDAPV3AttributeTypeAndValues read FModification write FModification;
end;
TIdLDAPV3ModificationList = Class (TIdObjectList)
private
function GetModification(iIndex: Integer):TIdLDAPV3Modification;
protected
public
property Modification[iIndex: Integer]: TIdLDAPV3Modification read GetModification; default;
end;
{6}
TIdLDAPV3ModifyRequest = Class (TObject)
private
FObject: TIdLDAPV3LDAPDN;
FModifications: TIdLDAPV3ModificationList;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property _object: TIdLDAPV3LDAPDN read FObject write FObject;
property modifications: TIdLDAPV3ModificationList read FModifications write FModifications;
end;
{7}
TIdLDAPV3ModifyResponse = Class (TIdLDAPV3LDAPResult)
public
end;
{8}
TIdLDAPV3AddRequest = Class (TObject)
private
FAttributes: TIdLDAPV3AttributeList;
FEntry: TIdLDAPV3LDAPDN;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property entry: TIdLDAPV3LDAPDN read FEntry write FEntry;
property attributes: TIdLDAPV3AttributeList read FAttributes write FAttributes;
end;
{9}
TIdLDAPV3AddResponse = Class (TIdLDAPV3LDAPResult)
public
end;
{10}
TIdLDAPV3DelRequest = Class (TObject)
private
FEntry: TIdLDAPV3LDAPDN;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property entry: TIdLDAPV3LDAPDN read FEntry write FEntry;
end;
{11}
TIdLDAPV3DelResponse = Class(TIdLDAPV3LDAPResult)
public
end;
{12}
TIdLDAPV3ModifyDNRequest = Class (TObject)
private
FDeleteoldrdn: Boolean;
FNewSuperior: TIdLDAPV3LDAPDN;
FEntry: TIdLDAPV3LDAPDN;
FNewrdn: TIdLDAPV3RelativeLDAPDN;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property entry: TIdLDAPV3LDAPDN read FEntry write FEntry;
property newrdn: TIdLDAPV3RelativeLDAPDN read FNewrdn write FNewrdn;
property deleteoldrdn: Boolean read FDeleteoldrdn write FDeleteoldrdn;
property newSuperior: TIdLDAPV3LDAPDN read FNewSuperior write FNewSuperior; // OPTIONAL {0}
end;
{13}
TIdLDAPV3ModifyDNResponse = Class(TIdLDAPV3LDAPResult)
public
end;
{14}
TIdLDAPV3CompareRequest = Class (TObject)
private
FAva: TIdLDAPV3AttributeValueAssertion;
FEntry: TIdLDAPV3LDAPDN;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property entry: TIdLDAPV3LDAPDN read FEntry write FEntry;
property ava: TIdLDAPV3AttributeValueAssertion read FAva write FAva;
end;
{15}
TIdLDAPV3CompareResponse = Class(TIdLDAPV3LDAPResult)
public
end;
{16}
TIdLDAPV3AbandonRequest = Class (TObject)
private
FId: TIdLDAPV3MessageID;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property id: TIdLDAPV3MessageID read FId write FId;
end;
{19}
TIdLDAPV3SearchResultReference = Class (TObject)
private
FRef: TIdLDAPV3Referral;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property ref: TIdLDAPV3Referral read FRef write FRef;
end;
{23}
TIdLDAPV3ExtendedRequest = Class (TObject)
private
FRequestValue: String;
FRequestName: TIdLDAPV3LDAPOID;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property requestName: TIdLDAPV3LDAPOID read FRequestName write FRequestName; {0}
property requestValue: String read FRequestValue write FRequestValue; // OPTIONAL {1}
end;
{24}
TIdLDAPV3ExtendedResponse = Class (TIdLDAPV3LDAPResult)
private
FResponse: String;
FResponseName: TIdLDAPV3LDAPOID;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; override;
property responseName: TIdLDAPV3LDAPOID read FResponseName write FResponseName; // OPTIONAL {10}
property response: String read FResponse write FResponse; // OPTIONAL {11}
end;
TIdLDAPV3LDAPMessage = Class (TObject)
private
FAbandonRequest: TIdLDAPV3AbandonRequest;
FAddRequest: TIdLDAPV3AddRequest;
FAddResponse: TIdLDAPV3AddResponse;
FBindRequest: TIdLDAPV3BindRequest;
FBindResponse: TIdLDAPV3BindResponse;
FCompareRequest: TIdLDAPV3CompareRequest;
FCompareResponse: TIdLDAPV3CompareResponse;
FControls: TIdLDAPV3ControlList;
FDelRequest: TIdLDAPV3DelRequest;
FDelResponse: TIdLDAPV3DelResponse;
FExtendedReq: TIdLDAPV3ExtendedRequest;
FExtendedResp: TIdLDAPV3ExtendedResponse;
FMessageID: TIdLDAPV3MessageID;
FModDNRequest: TIdLDAPV3ModifyDNRequest;
FModDNResponse: TIdLDAPV3ModifyDNResponse;
FModifyRequest: TIdLDAPV3ModifyRequest;
FModifyResponse: TIdLDAPV3ModifyResponse;
FSearchRequest: TIdLDAPV3SearchRequest;
FSearchResDone: TIdLDAPV3SearchResultDone;
FSearchResEntry: TIdLDAPV3SearchResultEntry;
FSearchResRef: TIdLDAPV3SearchResultReference;
FUnbindRequest: TIdLDAPV3UnbindRequest;
public
constructor Create;
destructor Destroy; override;
procedure Clear; overload; virtual;
property messageID: TIdLDAPV3MessageID read FMessageID write FMessageID;
// protocolOp CHOICE
property bindRequest: TIdLDAPV3BindRequest read FBindRequest write FBindRequest;
property bindResponse: TIdLDAPV3BindResponse read FBindResponse write FBindResponse;
property unbindRequest: TIdLDAPV3UnbindRequest read FUnbindRequest write FUnbindRequest;
property searchRequest: TIdLDAPV3SearchRequest read FSearchRequest write FSearchRequest;
property searchResEntry: TIdLDAPV3SearchResultEntry read FSearchResEntry write FSearchResEntry;
property searchResDone: TIdLDAPV3SearchResultDone read FSearchResDone write FSearchResDone;
property searchResRef: TIdLDAPV3SearchResultReference read FSearchResRef write FSearchResRef;
property modifyRequest: TIdLDAPV3ModifyRequest read FModifyRequest write FModifyRequest;
property modifyResponse: TIdLDAPV3ModifyResponse read FModifyResponse write FModifyResponse;
property addRequest: TIdLDAPV3AddRequest read FAddRequest write FAddRequest;
property addResponse: TIdLDAPV3AddResponse read FAddResponse write FAddResponse;
property delRequest: TIdLDAPV3DelRequest read FDelRequest write FDelRequest;
property delResponse: TIdLDAPV3DelResponse read FDelResponse write FDelResponse;
property modDNRequest: TIdLDAPV3ModifyDNRequest read FModDNRequest write FModDNRequest;
property modDNResponse: TIdLDAPV3ModifyDNResponse read FModDNResponse write FModDNResponse;
property compareRequest: TIdLDAPV3CompareRequest read FCompareRequest write FCompareRequest;
property compareResponse: TIdLDAPV3CompareResponse read FCompareResponse write FCompareResponse;
property abandonRequest: TIdLDAPV3AbandonRequest read FAbandonRequest write FAbandonRequest;
property extendedReq: TIdLDAPV3ExtendedRequest read FExtendedReq write FExtendedReq;
property extendedResp: TIdLDAPV3ExtendedResponse read FExtendedResp write FExtendedResp;
property controls: TIdLDAPV3ControlList read FControls write FControls;
end;
TIdLDAPV3Message = TIdLDAPV3LDAPMessage;
implementation
{ TIdLDAPV3Control }
constructor TIdLDAPV3Control.Create;
begin
inherited;
end;
procedure TIdLDAPV3Control.Clear;
begin
FCriticality := False;
FControlValue := '';
FControlType := '';
end;
destructor TIdLDAPV3Control.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3ControlList }
Function TIdLDAPV3ControlList.GetControl(iIndex: Integer): TIdLDAPV3Control;
begin
Result := TIdLDAPV3Control(items[iIndex]);
end;
{ TIdLDAPV3AttributeValueAssertion }
constructor TIdLDAPV3AttributeValueAssertion.Create;
begin
inherited;
end;
procedure TIdLDAPV3AttributeValueAssertion.Clear;
begin
FAssertionValue := '';
FAttributeDesc := '';
end;
destructor TIdLDAPV3AttributeValueAssertion.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3Attribute }
constructor TIdLDAPV3Attribute.Create;
begin
inherited;
FVals := TIdLDAPV3AttributeValueSet.Create;
end;
procedure TIdLDAPV3Attribute.Clear;
begin
FType := '';
FreeAndNil(FVals);
end;
destructor TIdLDAPV3Attribute.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3AttributeList }
Function TIdLDAPV3AttributeList.GetAttribute(iIndex: Integer): TIdLDAPV3Attribute;
begin
Result := TIdLDAPV3Attribute(items[iIndex]);
end;
{ TIdLDAPV3LDAPResult }
constructor TIdLDAPV3LDAPResult.Create;
begin
inherited;
end;
procedure TIdLDAPV3LDAPResult.Clear;
begin
FMatchedDN := '';
FErrorMessage := '';
FResultCode := lrcSuccess;
FreeAndNil(FReferral);
end;
destructor TIdLDAPV3LDAPResult.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3SaslCredentials }
constructor TIdLDAPV3SaslCredentials.Create;
begin
inherited;
end;
procedure TIdLDAPV3SaslCredentials.Clear;
begin
FCredentials := '';
FMechanism := '';
end;
destructor TIdLDAPV3SaslCredentials.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3AuthenticationChoice }
constructor TIdLDAPV3AuthenticationChoice.Create;
begin
inherited;
end;
procedure TIdLDAPV3AuthenticationChoice.Clear;
begin
FSimple := '';
FreeAndNil(FSasl);
end;
destructor TIdLDAPV3AuthenticationChoice.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3BindRequest }
constructor TIdLDAPV3BindRequest.Create;
begin
inherited;
FAuthentication := TIdLDAPv3AuthenticationChoice.Create;
end;
procedure TIdLDAPV3BindRequest.Clear;
begin
FVersion := 0;
FName := '';
FreeAndNil(FAuthentication);
end;
destructor TIdLDAPV3BindRequest.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3BindResponse }
constructor TIdLDAPV3BindResponse.Create;
begin
inherited;
end;
procedure TIdLDAPV3BindResponse.Clear;
begin
inherited;
FServerSaslCreds := '';
end;
destructor TIdLDAPV3BindResponse.Destroy;
begin
inherited;
end;
{ TIdLDAPV3Substring }
constructor TIdLDAPV3Substring.Create;
begin
inherited;
end;
procedure TIdLDAPV3Substring.Clear;
begin
FAny := '';
FFinal := '';
FInitial := '';
end;
destructor TIdLDAPV3Substring.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3SubstringList }
Function TIdLDAPV3SubstringList.GetSubstring(iIndex: Integer): TIdLDAPV3Substring;
begin
Result := TIdLDAPV3Substring(items[iIndex]);
end;
{ TIdLDAPV3SubstringFilter }
constructor TIdLDAPV3SubstringFilter.Create;
begin
inherited;
FSubstrings := TIdLDAPV3SubstringList.Create;
end;
procedure TIdLDAPV3SubstringFilter.Clear;
begin
FType := '';
FreeAndNil(FSubstrings);
end;
destructor TIdLDAPV3SubstringFilter.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3MatchingRuleAssertion }
constructor TIdLDAPV3MatchingRuleAssertion.Create;
begin
inherited;
end;
procedure TIdLDAPV3MatchingRuleAssertion.Clear;
begin
FDnAttributes := False;
FMatchValue := '';
FType := '';
FMatchingRule := '';
end;
destructor TIdLDAPV3MatchingRuleAssertion.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3Filter }
constructor TIdLDAPV3Filter.Create;
begin
inherited;
end;
procedure TIdLDAPV3Filter.Clear;
begin
FPresent := '';
FreeAndNil(FEqualityMatch);
FreeAndNil(FLessOrEqual);
FreeAndNil(FgreaterOrEqual);
FreeAndNil(FApproxMatch);
FreeAndNil(FNot);
FreeAndNil(F_Or);
FreeAndNil(FAnd);
FreeAndNil(FExtensibleMatch);
FreeAndNil(FSubstrings);
end;
destructor TIdLDAPV3Filter.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3FilterList }
Function TIdLDAPV3FilterList.GetFilter(iIndex: Integer): TIdLDAPV3Filter;
begin
Result := TIdLDAPV3Filter(items[iIndex]);
end;
{ TIdLDAPV3SearchRequest }
constructor TIdLDAPV3SearchRequest.Create;
begin
inherited;
FAttributes := TIdLDAPV3AttributeDescriptionList.Create;
FFilter := TIdLDAPV3Filter.Create;
end;
procedure TIdLDAPV3SearchRequest.Clear;
begin
FTypesOnly := False;
FTimeLimit := 0;
FSizeLimit := 0;
FBaseObject := '';
FDerefAliases := sdNeverDerefAliases;
FScope := ssBaseObject;
FreeAndNil(FAttributes);
FreeAndNil(FFilter);
end;
destructor TIdLDAPV3SearchRequest.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3PartialAttribute }
constructor TIdLDAPV3PartialAttribute.Create;
begin
inherited;
FVals := TIdLDAPV3AttributeValueSet.Create;
end;
procedure TIdLDAPV3PartialAttribute.Clear;
begin
FType := '';
FreeAndNil(FVals);
end;
destructor TIdLDAPV3PartialAttribute.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3PartialAttributeList }
Function TIdLDAPV3PartialAttributeList.GetPartialAttribute(iIndex: Integer): TIdLDAPV3PartialAttribute;
begin
Result := TIdLDAPV3PartialAttribute(items[iIndex]);
end;
{ TIdLDAPV3SearchResultEntry }
constructor TIdLDAPV3SearchResultEntry.Create;
begin
inherited;
FAttributes := TIdLDAPV3PartialAttributeList.Create;
end;
procedure TIdLDAPV3SearchResultEntry.Clear;
begin
FObjectName := '';
FreeAndNil(FAttributes);
end;
destructor TIdLDAPV3SearchResultEntry.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3AttributeTypeAndValues }
constructor TIdLDAPV3AttributeTypeAndValues.Create;
begin
inherited;
FVals := TIdLDAPV3AttributeValueSet.Create;
end;
procedure TIdLDAPV3AttributeTypeAndValues.Clear;
begin
FType := '';
FreeAndNil(FVals);
end;
destructor TIdLDAPV3AttributeTypeAndValues.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3Modification }
constructor TIdLDAPV3Modification.Create;
begin
inherited;
FModification := TIdLDAPV3AttributeTypeAndValues.Create;
end;
procedure TIdLDAPV3Modification.Clear;
begin
FOperation := moAdd;
FreeAndNil(FModification);
end;
destructor TIdLDAPV3Modification.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3ModificationList }
Function TIdLDAPV3ModificationList.GetModification(iIndex: Integer): TIdLDAPV3Modification;
begin
Result := TIdLDAPV3Modification(items[iIndex]);
end;
{ TIdLDAPV3ModifyRequest }
constructor TIdLDAPV3ModifyRequest.Create;
begin
inherited;
FModifications := TIdLDAPV3ModificationList.Create;
end;
procedure TIdLDAPV3ModifyRequest.Clear;
begin
FObject := '';
FreeAndNil(FModifications);
end;
destructor TIdLDAPV3ModifyRequest.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3AddRequest }
constructor TIdLDAPV3AddRequest.Create;
begin
inherited;
FAttributes := TIdLDAPV3AttributeList.Create;
end;
procedure TIdLDAPV3AddRequest.Clear;
begin
FEntry := '';
FreeAndNil(FAttributes);
end;
destructor TIdLDAPV3AddRequest.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3DelRequest }
constructor TIdLDAPV3DelRequest.Create;
begin
inherited;
end;
procedure TIdLDAPV3DelRequest.Clear;
begin
FEntry := '';
end;
destructor TIdLDAPV3DelRequest.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3ModifyDNRequest }
constructor TIdLDAPV3ModifyDNRequest.Create;
begin
inherited;
end;
procedure TIdLDAPV3ModifyDNRequest.Clear;
begin
FDeleteoldrdn := False;
FNewSuperior := '';
FEntry := '';
FNewrdn := '';
end;
destructor TIdLDAPV3ModifyDNRequest.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3CompareRequest }
constructor TIdLDAPV3CompareRequest.Create;
begin
inherited;
FAva := TIdLDAPV3AttributeValueAssertion.Create;
end;
procedure TIdLDAPV3CompareRequest.Clear;
begin
FEntry := '';
FreeAndNil(FAva);
end;
destructor TIdLDAPV3CompareRequest.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3AbandonRequest }
constructor TIdLDAPV3AbandonRequest.Create;
begin
inherited;
end;
procedure TIdLDAPV3AbandonRequest.Clear;
begin
FId := 0;
end;
destructor TIdLDAPV3AbandonRequest.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3SearchResultReference }
constructor TIdLDAPV3SearchResultReference.Create;
begin
inherited;
FRef := TIdLDAPV3Referral.Create;
end;
procedure TIdLDAPV3SearchResultReference.Clear;
begin
FreeAndNil(FRef);
end;
destructor TIdLDAPV3SearchResultReference.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3ExtendedRequest }
constructor TIdLDAPV3ExtendedRequest.Create;
begin
inherited;
end;
procedure TIdLDAPV3ExtendedRequest.Clear;
begin
FRequestValue := '';
FRequestName := '';
end;
destructor TIdLDAPV3ExtendedRequest.Destroy;
begin
Clear;
inherited;
end;
{ TIdLDAPV3ExtendedResponse }
constructor TIdLDAPV3ExtendedResponse.Create;
begin
inherited;
end;
procedure TIdLDAPV3ExtendedResponse.Clear;
begin
inherited;
FResponse := '';
FResponseName := '';
end;
destructor TIdLDAPV3ExtendedResponse.Destroy;
begin
inherited;
end;
{ TIdLDAPV3LDAPMessage }
constructor TIdLDAPV3LDAPMessage.Create;
begin
inherited;
end;
procedure TIdLDAPV3LDAPMessage.Clear;
begin
FMessageID := 0;
FreeAndNil(FAbandonRequest);
FreeAndNil(FAddRequest);
FreeAndNil(FAddResponse);
FreeAndNil(FBindRequest);
FreeAndNil(FBindResponse);
FreeAndNil(FCompareRequest);
FreeAndNil(FCompareResponse);
FreeAndNil(FControls);
FreeAndNil(FDelRequest);
FreeAndNil(FDelResponse);
FreeAndNil(FExtendedReq);
FreeAndNil(FExtendedResp);
FreeAndNil(FModDNRequest);
FreeAndNil(FModDNResponse);
FreeAndNil(FModifyRequest);
FreeAndNil(FModifyResponse);
FreeAndNil(FSearchRequest);
FreeAndNil(FSearchResDone);
FreeAndNil(FSearchResEntry);
FreeAndNil(FSearchResRef);
FreeAndNil(FUnbindRequest);
end;
destructor TIdLDAPV3LDAPMessage.Destroy;
begin
Clear;
inherited;
end;
End.