IdLDAPV3.pas 34 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378
  1. {
  2. $Project$
  3. $Workfile$
  4. $Revision$
  5. $DateUTC$
  6. $Id$
  7. This file is part of the Indy (Internet Direct) project, and is offered
  8. under the dual-licensing agreement described on the Indy website.
  9. (http://www.indyproject.org/)
  10. Copyright:
  11. (c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
  12. }
  13. {
  14. $Log$
  15. }
  16. {
  17. Rev 1.0 15/04/2005 7:25:04 AM GGrieve
  18. first ported to INdy
  19. }
  20. unit IdLDAPV3;
  21. interface
  22. {$i IdCompilerDefines.inc}
  23. uses
  24. Classes,
  25. IdContainers;
  26. type
  27. TIdLDAPV3ResultCode = (
  28. lrcSuccess,
  29. lrcOperationsError,
  30. lrcProtocolError,
  31. lrcTimeLimitExceeded,
  32. lrcSizeLimitExceeded,
  33. lrcCompareFalse,
  34. lrcCompareTrue,
  35. lrcAuthMethodNotSupported,
  36. lrcStrongAuthRequired,
  37. lrcReserved9,
  38. lrcReferral,
  39. lrcAdminLimitExceeded,
  40. lrcUnavailableCriticalExtension,
  41. lrcConfidentialityRequired,
  42. lrcSaslBindInProgress,
  43. lrcNoSuchAttribute,
  44. lrcUndefinedAttributeType,
  45. lrcInappropriateMatching,
  46. lrcConstraintViolation,
  47. lrcAttributeOrValueExists,
  48. lrcInvalidAttributeSyntax,
  49. lrcReserved22,
  50. lrcReserved23,
  51. lrcReserved24,
  52. lrcReserved25,
  53. lrcReserved26,
  54. lrcReserved27,
  55. lrcReserved28,
  56. lrcReserved29,
  57. lrcReserved30,
  58. lrcReserved31,
  59. lrcNoSuchObject,
  60. lrcAliasProblem,
  61. lrcInvalidDNSyntax,
  62. lrcReserved_undefinedIsLeaf,
  63. lrcAliasDereferencingProblem,
  64. lrcReserved37,
  65. lrcReserved38,
  66. lrcReserved39,
  67. lrcReserved40,
  68. lrcReserved41,
  69. lrcReserved42,
  70. lrcReserved43,
  71. lrcReserved44,
  72. lrcReserved45,
  73. lrcReserved46,
  74. lrcReserved47,
  75. lrcInappropriateAuthentication,
  76. lrcInvalidCredentials,
  77. lrcInsufficientAccessRights,
  78. lrcBusy,
  79. lrcUnavailable,
  80. lrcUnwillingToPerform,
  81. lrcLoopDetect,
  82. lrcReserved55,
  83. lrcReserved56,
  84. lrcReserved57,
  85. lrcReserved58,
  86. lrcReserved59,
  87. lrcReserved60,
  88. lrcReserved61,
  89. lrcReserved62,
  90. lrcReserved63,
  91. lrcNamingViolation,
  92. lrcObjectClassViolation,
  93. lrcNotAllowedOnNonLeaf,
  94. lrcNotAllowedOnRDN,
  95. lrcEntryAlreadyExists,
  96. lrcObjectClassModsProhibited,
  97. lrcReservedCLDAP,
  98. lrcAffectsMultipleDSAs,
  99. lrcReserved72,
  100. lrcReserved73,
  101. lrcReserved74,
  102. lrcReserved75,
  103. lrcReserved76,
  104. lrcReserved77,
  105. lrcReserved78,
  106. lrcReserved79,
  107. lrcOther);
  108. TIdLDAPV3SearchScope = (ssBaseObject, ssSingleLevel, ssWholeSubtree);
  109. TIdLDAPV3SearchDerefAliases = (sdNeverDerefAliases, sdDerefInSearching, sdDerefFindingBaseObj, sdDerefAlways);
  110. TIdLDAPV3ModificationOperation = (moAdd, omDelete, moReplace);
  111. const
  112. NAMES_LDAPV3RESULTCODE: Array [TIdLDAPV3ResultCode] of String = (
  113. 'Success',
  114. 'OperationsError',
  115. 'ProtocolError',
  116. 'TimeLimitExceeded',
  117. 'SizeLimitExceeded',
  118. 'CompareFalse',
  119. 'CompareTrue',
  120. 'AuthMethodNotSupported',
  121. 'StrongAuthRequired',
  122. 'Reserved9',
  123. 'Referral',
  124. 'AdminLimitExceeded',
  125. 'UnavailableCriticalExtension',
  126. 'ConfidentialityRequired',
  127. 'SaslBindInProgress',
  128. 'NoSuchAttribute',
  129. 'UndefinedAttributeType',
  130. 'InappropriateMatching',
  131. 'ConstraintViolation',
  132. 'AttributeOrValueExists',
  133. 'InvalidAttributeSyntax',
  134. 'Reserved22',
  135. 'Reserved23',
  136. 'Reserved24',
  137. 'Reserved25',
  138. 'Reserved26',
  139. 'Reserved27',
  140. 'Reserved28',
  141. 'Reserved29',
  142. 'Reserved30',
  143. 'Reserved31',
  144. 'NoSuchObject',
  145. 'AliasProblem',
  146. 'InvalidDNSyntax',
  147. 'Reserved_undefinedIsLeaf',
  148. 'AliasDereferencingProblem',
  149. 'Reserved37',
  150. 'Reserved38',
  151. 'Reserved39',
  152. 'Reserved40',
  153. 'Reserved41',
  154. 'Reserved42',
  155. 'Reserved43',
  156. 'Reserved44',
  157. 'Reserved45',
  158. 'Reserved46',
  159. 'Reserved47',
  160. 'InappropriateAuthentication',
  161. 'InvalidCredentials',
  162. 'InsufficientAccessRights',
  163. 'Busy',
  164. 'Unavailable',
  165. 'UnwillingToPerform',
  166. 'LoopDetect',
  167. 'Reserved55',
  168. 'Reserved56',
  169. 'Reserved57',
  170. 'Reserved58',
  171. 'Reserved59',
  172. 'Reserved60',
  173. 'Reserved61',
  174. 'Reserved62',
  175. 'Reserved63',
  176. 'NamingViolation',
  177. 'ObjectClassViolation',
  178. 'NotAllowedOnNonLeaf',
  179. 'NotAllowedOnRDN',
  180. 'EntryAlreadyExists',
  181. 'ObjectClassModsProhibited',
  182. 'ReservedCLDAP',
  183. 'AffectsMultipleDSAs',
  184. 'Reserved72',
  185. 'Reserved73',
  186. 'Reserved74',
  187. 'Reserved75',
  188. 'Reserved76',
  189. 'Reserved77',
  190. 'Reserved78',
  191. 'Reserved79',
  192. 'Other');
  193. NAMES_LDAPV3SEARCHSCOPE: Array [TIdLDAPV3SearchScope] of String =
  194. ('BaseObject', 'SingleLevel', 'WholeSubtree');
  195. NAMES_LDAPV3SEARCHDEREFALIASES: Array [TIdLDAPV3SearchDerefAliases] of String =
  196. ('NeverDerefAliases', 'DerefInSearching', 'DerefFindingBaseObj', 'DerefAlways');
  197. NAMES_LDAPV3MODIFICATIONOPERATION: Array [TIdLDAPV3ModificationOperation] of String =
  198. ('Add', 'Delete', 'Replace');
  199. type
  200. // simple types
  201. TIdLDAPV3MessageID = Integer; // >= 0
  202. TIdLDAPV3LDAPString = String; // UTF-8
  203. TIdLDAPV3LDAPOID = String;
  204. TIdLDAPV3LDAPDN = TIdLDAPV3LDAPString;
  205. TIdLDAPV3RelativeLDAPDN = TIdLDAPV3LDAPString;
  206. TIdLDAPV3AttributeType = TIdLDAPV3LDAPString;
  207. TIdLDAPV3AttributeDescription = TIdLDAPV3LDAPString;
  208. TIdLDAPV3AttributeValue = String;
  209. TIdLDAPV3AssertionValue = String;
  210. TIdLDAPV3MatchingRuleId = TIdLDAPV3LDAPString;
  211. TIdLDAPV3AttributeDescriptionList = TStringList;
  212. TIdLDAPV3AttributeValueSet = TStringList;
  213. TIdLDAPV3Referral = TStringList;
  214. // general Classes
  215. TIdLDAPV3Control = Class (TObject)
  216. private
  217. FCriticality: Boolean;
  218. FControlValue: String;
  219. FControlType: TIdLDAPV3LDAPOID;
  220. public
  221. constructor Create;
  222. destructor Destroy; override;
  223. procedure Clear; overload; virtual;
  224. property controlType: TIdLDAPV3LDAPOID read FControlType write FControlType;
  225. property criticality: Boolean read FCriticality write FCriticality; // DEFAULT FALSE
  226. property controlValue: String read FControlValue write FControlValue; // OPTIONAL
  227. end;
  228. TIdLDAPV3ControlList = Class (TIdObjectList)
  229. private
  230. function GetControl(iIndex: Integer):TIdLDAPV3Control;
  231. protected
  232. public
  233. property Control[iIndex: Integer]: TIdLDAPV3Control read GetControl; default;
  234. end;
  235. TIdLDAPV3AttributeValueAssertion = Class (TObject)
  236. private
  237. FAssertionValue: TIdLDAPV3AssertionValue;
  238. FAttributeDesc: TIdLDAPV3AttributeDescription;
  239. public
  240. constructor Create;
  241. destructor Destroy; override;
  242. procedure Clear; overload; virtual;
  243. property attributeDesc: TIdLDAPV3AttributeDescription read FAttributeDesc write FAttributeDesc;
  244. property assertionValue: TIdLDAPV3AssertionValue read FAssertionValue write FAssertionValue;
  245. end;
  246. TIdLDAPV3Attribute = Class (TObject)
  247. private
  248. FType: TIdLDAPV3AttributeDescription;
  249. FVals: TIdLDAPV3AttributeValueSet;
  250. public
  251. constructor Create;
  252. destructor Destroy; override;
  253. procedure Clear; overload; virtual;
  254. property _type: TIdLDAPV3AttributeDescription read FType write FType;
  255. property vals: TIdLDAPV3AttributeValueSet read FVals write FVals;
  256. end;
  257. TIdLDAPV3AttributeList = Class (TIdObjectList)
  258. private
  259. function GetAttribute(iIndex: Integer):TIdLDAPV3Attribute;
  260. protected
  261. public
  262. property Attribute[iIndex: Integer]: TIdLDAPV3Attribute read GetAttribute; default;
  263. end;
  264. // Message Classes
  265. TIdLDAPV3LDAPResult = Class (TObject)
  266. private
  267. FMatchedDN: TIdLDAPV3LDAPDN;
  268. FErrorMessage: TIdLDAPV3LDAPString;
  269. FReferral: TIdLDAPV3Referral;
  270. FResultCode: TIdLDAPV3ResultCode;
  271. public
  272. constructor Create;
  273. destructor Destroy; override;
  274. procedure Clear; overload; virtual;
  275. property resultCode: TIdLDAPV3ResultCode read FResultCode write FResultCode;
  276. property matchedDN: TIdLDAPV3LDAPDN read FMatchedDN write FMatchedDN;
  277. property errorMessage: TIdLDAPV3LDAPString read FErrorMessage write FErrorMessage;
  278. property referral: TIdLDAPV3Referral read FReferral write FReferral; // OPTIONAL {3}
  279. end;
  280. TIdLDAPV3SaslCredentials = Class (TObject)
  281. private
  282. FCredentials: String;
  283. FMechanism: TIdLDAPV3LDAPString;
  284. public
  285. constructor Create;
  286. destructor Destroy; override;
  287. procedure Clear; overload; virtual;
  288. property mechanism: TIdLDAPV3LDAPString read FMechanism write FMechanism;
  289. property credentials: String read FCredentials write FCredentials; // OPTIONAL
  290. end;
  291. TIdLDAPV3AuthenticationChoice = Class (TObject)
  292. private
  293. FSimple: String;
  294. FSasl: TIdLDAPV3SaslCredentials;
  295. public
  296. constructor Create;
  297. destructor Destroy; override;
  298. procedure Clear; overload; virtual;
  299. // choice
  300. property simple: String read FSimple write FSimple; {0}
  301. property sasl: TIdLDAPV3SaslCredentials read FSasl write FSasl; {3}
  302. end;
  303. {0}
  304. TIdLDAPV3BindRequest = Class (TObject)
  305. private
  306. FVersion: Byte;
  307. FAuthentication: TIdLDAPv3AuthenticationChoice;
  308. FName: TIdLDAPV3LDAPDN;
  309. public
  310. constructor Create;
  311. destructor Destroy; override;
  312. procedure Clear; overload; virtual;
  313. property version: Byte read FVersion write FVersion;
  314. property name: TIdLDAPV3LDAPDN read FName write FName;
  315. property authentication: TIdLDAPv3AuthenticationChoice read FAuthentication write FAuthentication;
  316. end;
  317. {1}
  318. TIdLDAPV3BindResponse = Class (TIdLDAPv3LDAPResult)
  319. private
  320. FServerSaslCreds: String;
  321. public
  322. constructor Create;
  323. destructor Destroy; override;
  324. procedure Clear; overload; override;
  325. property serverSaslCreds: String read FServerSaslCreds write FServerSaslCreds; // optional {7}
  326. end;
  327. {2}
  328. TIdLDAPV3UnbindRequest = Class (TObject)
  329. public
  330. end;
  331. TIdLDAPV3Substring = Class (TObject)
  332. private
  333. FAny: TIdLDAPV3LDAPString;
  334. FFinal: TIdLDAPV3LDAPString;
  335. FInitial: TIdLDAPV3LDAPString;
  336. public
  337. constructor Create;
  338. destructor Destroy; override;
  339. procedure Clear; overload; virtual;
  340. property initial: TIdLDAPV3LDAPString read FInitial write FInitial; {0}
  341. property any: TIdLDAPV3LDAPString read FAny write FAny; {1}
  342. property final: TIdLDAPV3LDAPString read FFinal write FFinal; {2}
  343. end;
  344. TIdLDAPV3SubstringList = Class (TIdObjectList)
  345. private
  346. function GetSubstring(iIndex: Integer):TIdLDAPV3Substring;
  347. protected
  348. public
  349. property Substring[iIndex: Integer]: TIdLDAPV3Substring read GetSubstring; default;
  350. end;
  351. TIdLDAPV3SubstringFilter = Class (TObject)
  352. private
  353. FType: TIdLDAPV3AttributeDescription;
  354. FSubstrings: TIdLDAPV3SubstringList;
  355. public
  356. constructor Create;
  357. destructor Destroy; override;
  358. procedure Clear; overload; virtual;
  359. property _type: TIdLDAPV3AttributeDescription read FType write FType;
  360. property substrings: TIdLDAPV3SubstringList read FSubstrings write FSubstrings; // rule: count > 0
  361. end;
  362. TIdLDAPV3MatchingRuleAssertion = Class (TObject)
  363. private
  364. FDnAttributes: Boolean;
  365. FMatchValue: TIdLDAPV3AssertionValue;
  366. FType: TIdLDAPV3AttributeDescription;
  367. FMatchingRule: TIdLDAPV3MatchingRuleId;
  368. public
  369. constructor Create;
  370. destructor Destroy; override;
  371. procedure Clear; overload; virtual;
  372. property matchingRule: TIdLDAPV3MatchingRuleId read FMatchingRule write FMatchingRule;// OPTIONAL {1}
  373. property _type: TIdLDAPV3AttributeDescription read FType write FType; // OPTIONAL {2}
  374. property matchValue: TIdLDAPV3AssertionValue read FMatchValue write FMatchValue; // {3}
  375. property dnAttributes: Boolean read FDnAttributes write FDnAttributes; // DEFAULT FALSE {4}
  376. end;
  377. TIdLDAPV3FilterList = Class;
  378. TIdLDAPV3Filter = Class (TObject)
  379. private
  380. FPresent: TIdLDAPV3AttributeDescription;
  381. FEqualityMatch: TIdLDAPV3AttributeValueAssertion;
  382. FLessOrEqual: TIdLDAPV3AttributeValueAssertion;
  383. FgreaterOrEqual: TIdLDAPV3AttributeValueAssertion;
  384. FApproxMatch: TIdLDAPV3AttributeValueAssertion;
  385. FNot: TIdLDAPV3Filter;
  386. F_Or: TIdLDAPV3FilterList;
  387. FAnd: TIdLDAPV3FilterList;
  388. FExtensibleMatch: TIdLDAPV3MatchingRuleAssertion;
  389. FSubstrings: TIdLDAPV3SubstringFilter;
  390. public
  391. constructor Create;
  392. destructor Destroy; override;
  393. procedure Clear; overload; virtual;
  394. property _and: TIdLDAPV3FilterList read FAnd write FAnd; {0}
  395. property _or: TIdLDAPV3FilterList read F_Or write F_or; {1}
  396. property _not: TIdLDAPV3Filter read FNot write FNot; {2}
  397. property equalityMatch: TIdLDAPV3AttributeValueAssertion read FEqualityMatch write FEqualityMatch; {3}
  398. property substrings: TIdLDAPV3SubstringFilter read FSubstrings write FSubstrings; {4}
  399. property greaterOrEqual: TIdLDAPV3AttributeValueAssertion read FGreaterOrEqual write FGreaterOrEqual; {5}
  400. property lessOrEqual: TIdLDAPV3AttributeValueAssertion read FLessOrEqual write FLessOrEqual; {6}
  401. property present: TIdLDAPV3AttributeDescription read FPresent write FPresent; {7}
  402. property approxMatch: TIdLDAPV3AttributeValueAssertion read FApproxMatch write FApproxMatch; {8}
  403. property extensibleMatch: TIdLDAPV3MatchingRuleAssertion read FExtensibleMatch write FExtensibleMatch; {9}
  404. end;
  405. TIdLDAPV3FilterList = Class (TIdObjectList)
  406. private
  407. Function GetFilter(iIndex: Integer):TIdLDAPV3Filter;
  408. protected
  409. public
  410. property Filter[iIndex: Integer]: TIdLDAPV3Filter read GetFilter; default;
  411. end;
  412. {3}
  413. TIdLDAPV3SearchRequest = Class (TObject)
  414. private
  415. FTypesOnly: Boolean;
  416. FTimeLimit: Integer;
  417. FSizeLimit: Integer;
  418. FAttributes: TIdLDAPV3AttributeDescriptionList;
  419. FFilter: TIdLDAPV3Filter;
  420. FBaseObject: TIdLDAPV3LDAPDN;
  421. FDerefAliases: TIdLDAPV3SearchDerefAliases;
  422. FScope: TIdLDAPV3SearchScope;
  423. public
  424. constructor Create;
  425. destructor Destroy; override;
  426. procedure Clear; overload; virtual;
  427. property baseObject: TIdLDAPV3LDAPDN read FBaseObject write FBaseObject;
  428. property scope: TIdLDAPV3SearchScope read FScope write FScope;
  429. property derefAliases: TIdLDAPV3SearchDerefAliases read FDerefAliases write FDerefAliases;
  430. property sizeLimit: Integer read FSizeLimit write FSizeLimit;
  431. property timeLimit: Integer read FTimeLimit write FTimeLimit;
  432. property typesOnly: Boolean read FTypesOnly write FTypesOnly;
  433. property filter: TIdLDAPV3Filter read FFilter write FFilter;
  434. property attributes: TIdLDAPV3AttributeDescriptionList read FAttributes write FAttributes;
  435. end;
  436. TIdLDAPV3PartialAttribute = Class (TObject)
  437. private
  438. FType: TIdLDAPV3AttributeDescription;
  439. FVals: TIdLDAPV3AttributeValueSet;
  440. public
  441. constructor Create;
  442. destructor Destroy; override;
  443. procedure Clear; overload; virtual;
  444. property _type: TIdLDAPV3AttributeDescription read FType write FType;
  445. property vals: TIdLDAPV3AttributeValueSet read FVals write FVals;
  446. end;
  447. TIdLDAPV3PartialAttributeList = Class (TIdObjectList)
  448. private
  449. function GetPartialAttribute(iIndex: Integer):TIdLDAPV3PartialAttribute;
  450. protected
  451. public
  452. property PartialAttribute[iIndex: Integer]: TIdLDAPV3PartialAttribute read GetPartialAttribute; default;
  453. end;
  454. {4}
  455. TIdLDAPV3SearchResultEntry = Class (TObject)
  456. private
  457. FObjectName: TIdLDAPV3LDAPDN;
  458. FAttributes: TIdLDAPV3PartialAttributeList;
  459. public
  460. constructor Create;
  461. destructor Destroy; override;
  462. procedure Clear; overload; virtual;
  463. property objectName: TIdLDAPV3LDAPDN read FObjectName write FObjectName;
  464. property attributes: TIdLDAPV3PartialAttributeList read FAttributes write FAttributes;
  465. end;
  466. {5}
  467. TIdLDAPV3SearchResultDone = Class (TIdLDAPV3LDAPResult)
  468. public
  469. end;
  470. TIdLDAPV3AttributeTypeAndValues = Class (TObject)
  471. private
  472. FType: TIdLDAPV3AttributeDescription;
  473. FVals: TIdLDAPV3AttributeValueSet;
  474. public
  475. constructor Create;
  476. destructor Destroy; override;
  477. procedure Clear; overload; virtual;
  478. property _type: TIdLDAPV3AttributeDescription read FType write FType;
  479. property vals: TIdLDAPV3AttributeValueSet read FVals write FVals;
  480. end;
  481. TIdLDAPV3Modification = Class (TObject)
  482. private
  483. FModification: TIdLDAPV3AttributeTypeAndValues;
  484. FOperation: TIdLDAPV3ModificationOperation;
  485. public
  486. constructor Create;
  487. destructor Destroy; override;
  488. procedure Clear; overload; virtual;
  489. property operation: TIdLDAPV3ModificationOperation read FOperation write FOperation;
  490. property modification: TIdLDAPV3AttributeTypeAndValues read FModification write FModification;
  491. end;
  492. TIdLDAPV3ModificationList = Class (TIdObjectList)
  493. private
  494. function GetModification(iIndex: Integer):TIdLDAPV3Modification;
  495. protected
  496. public
  497. property Modification[iIndex: Integer]: TIdLDAPV3Modification read GetModification; default;
  498. end;
  499. {6}
  500. TIdLDAPV3ModifyRequest = Class (TObject)
  501. private
  502. FObject: TIdLDAPV3LDAPDN;
  503. FModifications: TIdLDAPV3ModificationList;
  504. public
  505. constructor Create;
  506. destructor Destroy; override;
  507. procedure Clear; overload; virtual;
  508. property _object: TIdLDAPV3LDAPDN read FObject write FObject;
  509. property modifications: TIdLDAPV3ModificationList read FModifications write FModifications;
  510. end;
  511. {7}
  512. TIdLDAPV3ModifyResponse = Class (TIdLDAPV3LDAPResult)
  513. public
  514. end;
  515. {8}
  516. TIdLDAPV3AddRequest = Class (TObject)
  517. private
  518. FAttributes: TIdLDAPV3AttributeList;
  519. FEntry: TIdLDAPV3LDAPDN;
  520. public
  521. constructor Create;
  522. destructor Destroy; override;
  523. procedure Clear; overload; virtual;
  524. property entry: TIdLDAPV3LDAPDN read FEntry write FEntry;
  525. property attributes: TIdLDAPV3AttributeList read FAttributes write FAttributes;
  526. end;
  527. {9}
  528. TIdLDAPV3AddResponse = Class (TIdLDAPV3LDAPResult)
  529. public
  530. end;
  531. {10}
  532. TIdLDAPV3DelRequest = Class (TObject)
  533. private
  534. FEntry: TIdLDAPV3LDAPDN;
  535. public
  536. constructor Create;
  537. destructor Destroy; override;
  538. procedure Clear; overload; virtual;
  539. property entry: TIdLDAPV3LDAPDN read FEntry write FEntry;
  540. end;
  541. {11}
  542. TIdLDAPV3DelResponse = Class(TIdLDAPV3LDAPResult)
  543. public
  544. end;
  545. {12}
  546. TIdLDAPV3ModifyDNRequest = Class (TObject)
  547. private
  548. FDeleteoldrdn: Boolean;
  549. FNewSuperior: TIdLDAPV3LDAPDN;
  550. FEntry: TIdLDAPV3LDAPDN;
  551. FNewrdn: TIdLDAPV3RelativeLDAPDN;
  552. public
  553. constructor Create;
  554. destructor Destroy; override;
  555. procedure Clear; overload; virtual;
  556. property entry: TIdLDAPV3LDAPDN read FEntry write FEntry;
  557. property newrdn: TIdLDAPV3RelativeLDAPDN read FNewrdn write FNewrdn;
  558. property deleteoldrdn: Boolean read FDeleteoldrdn write FDeleteoldrdn;
  559. property newSuperior: TIdLDAPV3LDAPDN read FNewSuperior write FNewSuperior; // OPTIONAL {0}
  560. end;
  561. {13}
  562. TIdLDAPV3ModifyDNResponse = Class(TIdLDAPV3LDAPResult)
  563. public
  564. end;
  565. {14}
  566. TIdLDAPV3CompareRequest = Class (TObject)
  567. private
  568. FAva: TIdLDAPV3AttributeValueAssertion;
  569. FEntry: TIdLDAPV3LDAPDN;
  570. public
  571. constructor Create;
  572. destructor Destroy; override;
  573. procedure Clear; overload; virtual;
  574. property entry: TIdLDAPV3LDAPDN read FEntry write FEntry;
  575. property ava: TIdLDAPV3AttributeValueAssertion read FAva write FAva;
  576. end;
  577. {15}
  578. TIdLDAPV3CompareResponse = Class(TIdLDAPV3LDAPResult)
  579. public
  580. end;
  581. {16}
  582. TIdLDAPV3AbandonRequest = Class (TObject)
  583. private
  584. FId: TIdLDAPV3MessageID;
  585. public
  586. constructor Create;
  587. destructor Destroy; override;
  588. procedure Clear; overload; virtual;
  589. property id: TIdLDAPV3MessageID read FId write FId;
  590. end;
  591. {19}
  592. TIdLDAPV3SearchResultReference = Class (TObject)
  593. private
  594. FRef: TIdLDAPV3Referral;
  595. public
  596. constructor Create;
  597. destructor Destroy; override;
  598. procedure Clear; overload; virtual;
  599. property ref: TIdLDAPV3Referral read FRef write FRef;
  600. end;
  601. {23}
  602. TIdLDAPV3ExtendedRequest = Class (TObject)
  603. private
  604. FRequestValue: String;
  605. FRequestName: TIdLDAPV3LDAPOID;
  606. public
  607. constructor Create;
  608. destructor Destroy; override;
  609. procedure Clear; overload; virtual;
  610. property requestName: TIdLDAPV3LDAPOID read FRequestName write FRequestName; {0}
  611. property requestValue: String read FRequestValue write FRequestValue; // OPTIONAL {1}
  612. end;
  613. {24}
  614. TIdLDAPV3ExtendedResponse = Class (TIdLDAPV3LDAPResult)
  615. private
  616. FResponse: String;
  617. FResponseName: TIdLDAPV3LDAPOID;
  618. public
  619. constructor Create;
  620. destructor Destroy; override;
  621. procedure Clear; overload; override;
  622. property responseName: TIdLDAPV3LDAPOID read FResponseName write FResponseName; // OPTIONAL {10}
  623. property response: String read FResponse write FResponse; // OPTIONAL {11}
  624. end;
  625. TIdLDAPV3LDAPMessage = Class (TObject)
  626. private
  627. FAbandonRequest: TIdLDAPV3AbandonRequest;
  628. FAddRequest: TIdLDAPV3AddRequest;
  629. FAddResponse: TIdLDAPV3AddResponse;
  630. FBindRequest: TIdLDAPV3BindRequest;
  631. FBindResponse: TIdLDAPV3BindResponse;
  632. FCompareRequest: TIdLDAPV3CompareRequest;
  633. FCompareResponse: TIdLDAPV3CompareResponse;
  634. FControls: TIdLDAPV3ControlList;
  635. FDelRequest: TIdLDAPV3DelRequest;
  636. FDelResponse: TIdLDAPV3DelResponse;
  637. FExtendedReq: TIdLDAPV3ExtendedRequest;
  638. FExtendedResp: TIdLDAPV3ExtendedResponse;
  639. FMessageID: TIdLDAPV3MessageID;
  640. FModDNRequest: TIdLDAPV3ModifyDNRequest;
  641. FModDNResponse: TIdLDAPV3ModifyDNResponse;
  642. FModifyRequest: TIdLDAPV3ModifyRequest;
  643. FModifyResponse: TIdLDAPV3ModifyResponse;
  644. FSearchRequest: TIdLDAPV3SearchRequest;
  645. FSearchResDone: TIdLDAPV3SearchResultDone;
  646. FSearchResEntry: TIdLDAPV3SearchResultEntry;
  647. FSearchResRef: TIdLDAPV3SearchResultReference;
  648. FUnbindRequest: TIdLDAPV3UnbindRequest;
  649. public
  650. constructor Create;
  651. destructor Destroy; override;
  652. procedure Clear; overload; virtual;
  653. property messageID: TIdLDAPV3MessageID read FMessageID write FMessageID;
  654. // protocolOp CHOICE
  655. property bindRequest: TIdLDAPV3BindRequest read FBindRequest write FBindRequest;
  656. property bindResponse: TIdLDAPV3BindResponse read FBindResponse write FBindResponse;
  657. property unbindRequest: TIdLDAPV3UnbindRequest read FUnbindRequest write FUnbindRequest;
  658. property searchRequest: TIdLDAPV3SearchRequest read FSearchRequest write FSearchRequest;
  659. property searchResEntry: TIdLDAPV3SearchResultEntry read FSearchResEntry write FSearchResEntry;
  660. property searchResDone: TIdLDAPV3SearchResultDone read FSearchResDone write FSearchResDone;
  661. property searchResRef: TIdLDAPV3SearchResultReference read FSearchResRef write FSearchResRef;
  662. property modifyRequest: TIdLDAPV3ModifyRequest read FModifyRequest write FModifyRequest;
  663. property modifyResponse: TIdLDAPV3ModifyResponse read FModifyResponse write FModifyResponse;
  664. property addRequest: TIdLDAPV3AddRequest read FAddRequest write FAddRequest;
  665. property addResponse: TIdLDAPV3AddResponse read FAddResponse write FAddResponse;
  666. property delRequest: TIdLDAPV3DelRequest read FDelRequest write FDelRequest;
  667. property delResponse: TIdLDAPV3DelResponse read FDelResponse write FDelResponse;
  668. property modDNRequest: TIdLDAPV3ModifyDNRequest read FModDNRequest write FModDNRequest;
  669. property modDNResponse: TIdLDAPV3ModifyDNResponse read FModDNResponse write FModDNResponse;
  670. property compareRequest: TIdLDAPV3CompareRequest read FCompareRequest write FCompareRequest;
  671. property compareResponse: TIdLDAPV3CompareResponse read FCompareResponse write FCompareResponse;
  672. property abandonRequest: TIdLDAPV3AbandonRequest read FAbandonRequest write FAbandonRequest;
  673. property extendedReq: TIdLDAPV3ExtendedRequest read FExtendedReq write FExtendedReq;
  674. property extendedResp: TIdLDAPV3ExtendedResponse read FExtendedResp write FExtendedResp;
  675. property controls: TIdLDAPV3ControlList read FControls write FControls;
  676. end;
  677. TIdLDAPV3Message = TIdLDAPV3LDAPMessage;
  678. implementation
  679. uses
  680. SysUtils;
  681. { TIdLDAPV3Control }
  682. constructor TIdLDAPV3Control.Create;
  683. begin
  684. inherited;
  685. end;
  686. procedure TIdLDAPV3Control.Clear;
  687. begin
  688. FCriticality := False;
  689. FControlValue := '';
  690. FControlType := '';
  691. end;
  692. destructor TIdLDAPV3Control.Destroy;
  693. begin
  694. Clear;
  695. inherited;
  696. end;
  697. { TIdLDAPV3ControlList }
  698. Function TIdLDAPV3ControlList.GetControl(iIndex: Integer): TIdLDAPV3Control;
  699. begin
  700. Result := TIdLDAPV3Control(items[iIndex]);
  701. end;
  702. { TIdLDAPV3AttributeValueAssertion }
  703. constructor TIdLDAPV3AttributeValueAssertion.Create;
  704. begin
  705. inherited;
  706. end;
  707. procedure TIdLDAPV3AttributeValueAssertion.Clear;
  708. begin
  709. FAssertionValue := '';
  710. FAttributeDesc := '';
  711. end;
  712. destructor TIdLDAPV3AttributeValueAssertion.Destroy;
  713. begin
  714. Clear;
  715. inherited;
  716. end;
  717. { TIdLDAPV3Attribute }
  718. constructor TIdLDAPV3Attribute.Create;
  719. begin
  720. inherited;
  721. FVals := TIdLDAPV3AttributeValueSet.Create;
  722. end;
  723. procedure TIdLDAPV3Attribute.Clear;
  724. begin
  725. FType := '';
  726. FreeAndNil(FVals);
  727. end;
  728. destructor TIdLDAPV3Attribute.Destroy;
  729. begin
  730. Clear;
  731. inherited;
  732. end;
  733. { TIdLDAPV3AttributeList }
  734. Function TIdLDAPV3AttributeList.GetAttribute(iIndex: Integer): TIdLDAPV3Attribute;
  735. begin
  736. Result := TIdLDAPV3Attribute(items[iIndex]);
  737. end;
  738. { TIdLDAPV3LDAPResult }
  739. constructor TIdLDAPV3LDAPResult.Create;
  740. begin
  741. inherited;
  742. end;
  743. procedure TIdLDAPV3LDAPResult.Clear;
  744. begin
  745. FMatchedDN := '';
  746. FErrorMessage := '';
  747. FResultCode := lrcSuccess;
  748. FreeAndNil(FReferral);
  749. end;
  750. destructor TIdLDAPV3LDAPResult.Destroy;
  751. begin
  752. Clear;
  753. inherited;
  754. end;
  755. { TIdLDAPV3SaslCredentials }
  756. constructor TIdLDAPV3SaslCredentials.Create;
  757. begin
  758. inherited;
  759. end;
  760. procedure TIdLDAPV3SaslCredentials.Clear;
  761. begin
  762. FCredentials := '';
  763. FMechanism := '';
  764. end;
  765. destructor TIdLDAPV3SaslCredentials.Destroy;
  766. begin
  767. Clear;
  768. inherited;
  769. end;
  770. { TIdLDAPV3AuthenticationChoice }
  771. constructor TIdLDAPV3AuthenticationChoice.Create;
  772. begin
  773. inherited;
  774. end;
  775. procedure TIdLDAPV3AuthenticationChoice.Clear;
  776. begin
  777. FSimple := '';
  778. FreeAndNil(FSasl);
  779. end;
  780. destructor TIdLDAPV3AuthenticationChoice.Destroy;
  781. begin
  782. Clear;
  783. inherited;
  784. end;
  785. { TIdLDAPV3BindRequest }
  786. constructor TIdLDAPV3BindRequest.Create;
  787. begin
  788. inherited;
  789. FAuthentication := TIdLDAPv3AuthenticationChoice.Create;
  790. end;
  791. procedure TIdLDAPV3BindRequest.Clear;
  792. begin
  793. FVersion := 0;
  794. FName := '';
  795. FreeAndNil(FAuthentication);
  796. end;
  797. destructor TIdLDAPV3BindRequest.Destroy;
  798. begin
  799. Clear;
  800. inherited;
  801. end;
  802. { TIdLDAPV3BindResponse }
  803. constructor TIdLDAPV3BindResponse.Create;
  804. begin
  805. inherited;
  806. end;
  807. procedure TIdLDAPV3BindResponse.Clear;
  808. begin
  809. inherited;
  810. FServerSaslCreds := '';
  811. end;
  812. destructor TIdLDAPV3BindResponse.Destroy;
  813. begin
  814. inherited;
  815. end;
  816. { TIdLDAPV3Substring }
  817. constructor TIdLDAPV3Substring.Create;
  818. begin
  819. inherited;
  820. end;
  821. procedure TIdLDAPV3Substring.Clear;
  822. begin
  823. FAny := '';
  824. FFinal := '';
  825. FInitial := '';
  826. end;
  827. destructor TIdLDAPV3Substring.Destroy;
  828. begin
  829. Clear;
  830. inherited;
  831. end;
  832. { TIdLDAPV3SubstringList }
  833. Function TIdLDAPV3SubstringList.GetSubstring(iIndex: Integer): TIdLDAPV3Substring;
  834. begin
  835. Result := TIdLDAPV3Substring(items[iIndex]);
  836. end;
  837. { TIdLDAPV3SubstringFilter }
  838. constructor TIdLDAPV3SubstringFilter.Create;
  839. begin
  840. inherited;
  841. FSubstrings := TIdLDAPV3SubstringList.Create;
  842. end;
  843. procedure TIdLDAPV3SubstringFilter.Clear;
  844. begin
  845. FType := '';
  846. FreeAndNil(FSubstrings);
  847. end;
  848. destructor TIdLDAPV3SubstringFilter.Destroy;
  849. begin
  850. Clear;
  851. inherited;
  852. end;
  853. { TIdLDAPV3MatchingRuleAssertion }
  854. constructor TIdLDAPV3MatchingRuleAssertion.Create;
  855. begin
  856. inherited;
  857. end;
  858. procedure TIdLDAPV3MatchingRuleAssertion.Clear;
  859. begin
  860. FDnAttributes := False;
  861. FMatchValue := '';
  862. FType := '';
  863. FMatchingRule := '';
  864. end;
  865. destructor TIdLDAPV3MatchingRuleAssertion.Destroy;
  866. begin
  867. Clear;
  868. inherited;
  869. end;
  870. { TIdLDAPV3Filter }
  871. constructor TIdLDAPV3Filter.Create;
  872. begin
  873. inherited;
  874. end;
  875. procedure TIdLDAPV3Filter.Clear;
  876. begin
  877. FPresent := '';
  878. FreeAndNil(FEqualityMatch);
  879. FreeAndNil(FLessOrEqual);
  880. FreeAndNil(FgreaterOrEqual);
  881. FreeAndNil(FApproxMatch);
  882. FreeAndNil(FNot);
  883. FreeAndNil(F_Or);
  884. FreeAndNil(FAnd);
  885. FreeAndNil(FExtensibleMatch);
  886. FreeAndNil(FSubstrings);
  887. end;
  888. destructor TIdLDAPV3Filter.Destroy;
  889. begin
  890. Clear;
  891. inherited;
  892. end;
  893. { TIdLDAPV3FilterList }
  894. Function TIdLDAPV3FilterList.GetFilter(iIndex: Integer): TIdLDAPV3Filter;
  895. begin
  896. Result := TIdLDAPV3Filter(items[iIndex]);
  897. end;
  898. { TIdLDAPV3SearchRequest }
  899. constructor TIdLDAPV3SearchRequest.Create;
  900. begin
  901. inherited;
  902. FAttributes := TIdLDAPV3AttributeDescriptionList.Create;
  903. FFilter := TIdLDAPV3Filter.Create;
  904. end;
  905. procedure TIdLDAPV3SearchRequest.Clear;
  906. begin
  907. FTypesOnly := False;
  908. FTimeLimit := 0;
  909. FSizeLimit := 0;
  910. FBaseObject := '';
  911. FDerefAliases := sdNeverDerefAliases;
  912. FScope := ssBaseObject;
  913. FreeAndNil(FAttributes);
  914. FreeAndNil(FFilter);
  915. end;
  916. destructor TIdLDAPV3SearchRequest.Destroy;
  917. begin
  918. Clear;
  919. inherited;
  920. end;
  921. { TIdLDAPV3PartialAttribute }
  922. constructor TIdLDAPV3PartialAttribute.Create;
  923. begin
  924. inherited;
  925. FVals := TIdLDAPV3AttributeValueSet.Create;
  926. end;
  927. procedure TIdLDAPV3PartialAttribute.Clear;
  928. begin
  929. FType := '';
  930. FreeAndNil(FVals);
  931. end;
  932. destructor TIdLDAPV3PartialAttribute.Destroy;
  933. begin
  934. Clear;
  935. inherited;
  936. end;
  937. { TIdLDAPV3PartialAttributeList }
  938. Function TIdLDAPV3PartialAttributeList.GetPartialAttribute(iIndex: Integer): TIdLDAPV3PartialAttribute;
  939. begin
  940. Result := TIdLDAPV3PartialAttribute(items[iIndex]);
  941. end;
  942. { TIdLDAPV3SearchResultEntry }
  943. constructor TIdLDAPV3SearchResultEntry.Create;
  944. begin
  945. inherited;
  946. FAttributes := TIdLDAPV3PartialAttributeList.Create;
  947. end;
  948. procedure TIdLDAPV3SearchResultEntry.Clear;
  949. begin
  950. FObjectName := '';
  951. FreeAndNil(FAttributes);
  952. end;
  953. destructor TIdLDAPV3SearchResultEntry.Destroy;
  954. begin
  955. Clear;
  956. inherited;
  957. end;
  958. { TIdLDAPV3AttributeTypeAndValues }
  959. constructor TIdLDAPV3AttributeTypeAndValues.Create;
  960. begin
  961. inherited;
  962. FVals := TIdLDAPV3AttributeValueSet.Create;
  963. end;
  964. procedure TIdLDAPV3AttributeTypeAndValues.Clear;
  965. begin
  966. FType := '';
  967. FreeAndNil(FVals);
  968. end;
  969. destructor TIdLDAPV3AttributeTypeAndValues.Destroy;
  970. begin
  971. Clear;
  972. inherited;
  973. end;
  974. { TIdLDAPV3Modification }
  975. constructor TIdLDAPV3Modification.Create;
  976. begin
  977. inherited;
  978. FModification := TIdLDAPV3AttributeTypeAndValues.Create;
  979. end;
  980. procedure TIdLDAPV3Modification.Clear;
  981. begin
  982. FOperation := moAdd;
  983. FreeAndNil(FModification);
  984. end;
  985. destructor TIdLDAPV3Modification.Destroy;
  986. begin
  987. Clear;
  988. inherited;
  989. end;
  990. { TIdLDAPV3ModificationList }
  991. Function TIdLDAPV3ModificationList.GetModification(iIndex: Integer): TIdLDAPV3Modification;
  992. begin
  993. Result := TIdLDAPV3Modification(items[iIndex]);
  994. end;
  995. { TIdLDAPV3ModifyRequest }
  996. constructor TIdLDAPV3ModifyRequest.Create;
  997. begin
  998. inherited;
  999. FModifications := TIdLDAPV3ModificationList.Create;
  1000. end;
  1001. procedure TIdLDAPV3ModifyRequest.Clear;
  1002. begin
  1003. FObject := '';
  1004. FreeAndNil(FModifications);
  1005. end;
  1006. destructor TIdLDAPV3ModifyRequest.Destroy;
  1007. begin
  1008. Clear;
  1009. inherited;
  1010. end;
  1011. { TIdLDAPV3AddRequest }
  1012. constructor TIdLDAPV3AddRequest.Create;
  1013. begin
  1014. inherited;
  1015. FAttributes := TIdLDAPV3AttributeList.Create;
  1016. end;
  1017. procedure TIdLDAPV3AddRequest.Clear;
  1018. begin
  1019. FEntry := '';
  1020. FreeAndNil(FAttributes);
  1021. end;
  1022. destructor TIdLDAPV3AddRequest.Destroy;
  1023. begin
  1024. Clear;
  1025. inherited;
  1026. end;
  1027. { TIdLDAPV3DelRequest }
  1028. constructor TIdLDAPV3DelRequest.Create;
  1029. begin
  1030. inherited;
  1031. end;
  1032. procedure TIdLDAPV3DelRequest.Clear;
  1033. begin
  1034. FEntry := '';
  1035. end;
  1036. destructor TIdLDAPV3DelRequest.Destroy;
  1037. begin
  1038. Clear;
  1039. inherited;
  1040. end;
  1041. { TIdLDAPV3ModifyDNRequest }
  1042. constructor TIdLDAPV3ModifyDNRequest.Create;
  1043. begin
  1044. inherited;
  1045. end;
  1046. procedure TIdLDAPV3ModifyDNRequest.Clear;
  1047. begin
  1048. FDeleteoldrdn := False;
  1049. FNewSuperior := '';
  1050. FEntry := '';
  1051. FNewrdn := '';
  1052. end;
  1053. destructor TIdLDAPV3ModifyDNRequest.Destroy;
  1054. begin
  1055. Clear;
  1056. inherited;
  1057. end;
  1058. { TIdLDAPV3CompareRequest }
  1059. constructor TIdLDAPV3CompareRequest.Create;
  1060. begin
  1061. inherited;
  1062. FAva := TIdLDAPV3AttributeValueAssertion.Create;
  1063. end;
  1064. procedure TIdLDAPV3CompareRequest.Clear;
  1065. begin
  1066. FEntry := '';
  1067. FreeAndNil(FAva);
  1068. end;
  1069. destructor TIdLDAPV3CompareRequest.Destroy;
  1070. begin
  1071. Clear;
  1072. inherited;
  1073. end;
  1074. { TIdLDAPV3AbandonRequest }
  1075. constructor TIdLDAPV3AbandonRequest.Create;
  1076. begin
  1077. inherited;
  1078. end;
  1079. procedure TIdLDAPV3AbandonRequest.Clear;
  1080. begin
  1081. FId := 0;
  1082. end;
  1083. destructor TIdLDAPV3AbandonRequest.Destroy;
  1084. begin
  1085. Clear;
  1086. inherited;
  1087. end;
  1088. { TIdLDAPV3SearchResultReference }
  1089. constructor TIdLDAPV3SearchResultReference.Create;
  1090. begin
  1091. inherited;
  1092. FRef := TIdLDAPV3Referral.Create;
  1093. end;
  1094. procedure TIdLDAPV3SearchResultReference.Clear;
  1095. begin
  1096. FreeAndNil(FRef);
  1097. end;
  1098. destructor TIdLDAPV3SearchResultReference.Destroy;
  1099. begin
  1100. Clear;
  1101. inherited;
  1102. end;
  1103. { TIdLDAPV3ExtendedRequest }
  1104. constructor TIdLDAPV3ExtendedRequest.Create;
  1105. begin
  1106. inherited;
  1107. end;
  1108. procedure TIdLDAPV3ExtendedRequest.Clear;
  1109. begin
  1110. FRequestValue := '';
  1111. FRequestName := '';
  1112. end;
  1113. destructor TIdLDAPV3ExtendedRequest.Destroy;
  1114. begin
  1115. Clear;
  1116. inherited;
  1117. end;
  1118. { TIdLDAPV3ExtendedResponse }
  1119. constructor TIdLDAPV3ExtendedResponse.Create;
  1120. begin
  1121. inherited;
  1122. end;
  1123. procedure TIdLDAPV3ExtendedResponse.Clear;
  1124. begin
  1125. inherited;
  1126. FResponse := '';
  1127. FResponseName := '';
  1128. end;
  1129. destructor TIdLDAPV3ExtendedResponse.Destroy;
  1130. begin
  1131. inherited;
  1132. end;
  1133. { TIdLDAPV3LDAPMessage }
  1134. constructor TIdLDAPV3LDAPMessage.Create;
  1135. begin
  1136. inherited;
  1137. end;
  1138. procedure TIdLDAPV3LDAPMessage.Clear;
  1139. begin
  1140. FMessageID := 0;
  1141. FreeAndNil(FAbandonRequest);
  1142. FreeAndNil(FAddRequest);
  1143. FreeAndNil(FAddResponse);
  1144. FreeAndNil(FBindRequest);
  1145. FreeAndNil(FBindResponse);
  1146. FreeAndNil(FCompareRequest);
  1147. FreeAndNil(FCompareResponse);
  1148. FreeAndNil(FControls);
  1149. FreeAndNil(FDelRequest);
  1150. FreeAndNil(FDelResponse);
  1151. FreeAndNil(FExtendedReq);
  1152. FreeAndNil(FExtendedResp);
  1153. FreeAndNil(FModDNRequest);
  1154. FreeAndNil(FModDNResponse);
  1155. FreeAndNil(FModifyRequest);
  1156. FreeAndNil(FModifyResponse);
  1157. FreeAndNil(FSearchRequest);
  1158. FreeAndNil(FSearchResDone);
  1159. FreeAndNil(FSearchResEntry);
  1160. FreeAndNil(FSearchResRef);
  1161. FreeAndNil(FUnbindRequest);
  1162. end;
  1163. destructor TIdLDAPV3LDAPMessage.Destroy;
  1164. begin
  1165. Clear;
  1166. inherited;
  1167. end;
  1168. End.