| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2011 ForgeRock AS |
| | | ! --> |
| | | <stax> |
| | | <!-- SDK ldapsearch Function --> |
| | | <function name="SDKldapSearch"> |
| | | <function-prolog> |
| | | This function performs an ldapsearch using the SDK java API |
| | | </function-prolog> |
| | | <function-map-args> |
| | | <function-arg-def name="dsInstanceHost" type="optional"> |
| | | <function-arg-description> |
| | | Directory server hostname or IP address |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="hostname"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsInstancePort" type="optional"> |
| | | <function-arg-description> |
| | | Directory server port number |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="Port number"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsInstanceDn" type="optional"> |
| | | <function-arg-description> |
| | | Bind DN |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="DN"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsInstancePswd" type="optional"> |
| | | <function-arg-description> |
| | | Bind password |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsScope" type="optional"> |
| | | <function-arg-description> |
| | | The scope of the search operation |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsBaseDN" type="optional"> |
| | | <function-arg-description> |
| | | The baseDN for the search operation |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="dn"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsFilter" type="optional"> |
| | | <function-arg-description> |
| | | The filter for the search operation |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="filter"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsAttributes" type="optional"> |
| | | <function-arg-description> |
| | | Only return these attributes |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string"/> |
| | | </function-arg-def> |
| | | </function-map-args> |
| | | |
| | | <sequence> |
| | | |
| | | <!-- Build the Command --> |
| | | <script> |
| | | from org.forgerock.opendj.ldap import * |
| | | from org.forgerock.opendj.ldap.responses import * |
| | | from org.forgerock.opendj.ldif import * |
| | | |
| | | myHost=String(dsInstanceHost) |
| | | myPort=int(dsInstancePort) |
| | | myBaseDn=String(dsBaseDN) |
| | | myDn=String(dsInstanceDn) |
| | | myPassword=String(dsInstancePswd).toCharArray() |
| | | |
| | | if dsScope == 'base': |
| | | myScope = SearchScope.BASE_OBJECT |
| | | elif dsScope == 'one': |
| | | myScope = SearchScope.SINGLE_LEVEL |
| | | elif dsScope == 'sub': |
| | | myScope = SearchScope.WHOLE_SUBTREE |
| | | else: |
| | | myScope = SearchScope.WHOLE_SUBTREE |
| | | |
| | | if dsFilter: |
| | | myFilter = dsFilter |
| | | else: |
| | | myFilter = '(objectClass=*)' |
| | | |
| | | if dsAttributes: |
| | | myAttrs = dsAttributes |
| | | else: |
| | | myAttrs = [] |
| | | |
| | | writer = LDIFEntryWriter(System.out) |
| | | factory = LDAPConnectionFactory(myHost,myPort) |
| | | connection = None |
| | | |
| | | try: |
| | | try: |
| | | connection = factory.getConnection() |
| | | |
| | | connection.bind(myDn, myPassword) |
| | | |
| | | reader = connection.search(myBaseDn, myScope, myFilter, myAttrs) |
| | | |
| | | #TODO: handle search result references |
| | | #TODO: not really a need to use writer to write to stdout |
| | | while (reader.hasNext()): |
| | | if not reader.isReference(): |
| | | entry = reader.readEntry() |
| | | writer.writeComment("Search result entry: %s" % entry.getName().toString()) |
| | | writer.writeEntry(entry) |
| | | else: |
| | | ref = reader.readReference() |
| | | writer.writeComment("Search result reference: %s " % ref.getURIs().toString()) |
| | | |
| | | writer.flush() |
| | | |
| | | except ErrorResultException, e: |
| | | System.err.println(e.getMessage()) |
| | | System.exit(e.getResult().getResultCode().intValue()) |
| | | |
| | | except ErrorResultIOException, e: |
| | | System.err.println(e.getMessage()) |
| | | System.exit(e.getCause().getResult().getResultCode().intValue()) |
| | | |
| | | except InterruptedException, e: |
| | | System.err.println(e.getMessage()) |
| | | System.exit(ResultCode.CLIENT_SIDE_USER_CANCELLED.intValue()) |
| | | |
| | | except IOException, e: |
| | | System.err.println(e.getMessage()) |
| | | System.exit(ResultCode.CLIENT_SIDE_LOCAL_ERROR.intValue()) |
| | | |
| | | finally: |
| | | connection.close() |
| | | |
| | | SDKResult = [[0,'%s' % entry.getAllAttributes().toString()]] |
| | | </script> |
| | | <message> |
| | | 'Result = %s' % entry.getAllAttributes().toString() |
| | | </message> |
| | | <return> |
| | | SDKResult |
| | | </return> |
| | | </sequence> |
| | | </function> |
| | | </stax> |