Search in sources :

Example 36 with LdapException

use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.

the class LdapNetworkConnection method lookup.

/**
 * {@inheritDoc}
 */
@Override
public Entry lookup(Dn dn, Control[] controls, String... attributes) throws LdapException {
    Entry entry = null;
    try {
        SearchRequest searchRequest = new SearchRequestImpl();
        searchRequest.setBase(dn);
        searchRequest.setFilter(LdapConstants.OBJECT_CLASS_STAR);
        searchRequest.setScope(SearchScope.OBJECT);
        searchRequest.addAttributes(attributes);
        searchRequest.setDerefAliases(AliasDerefMode.DEREF_ALWAYS);
        if ((controls != null) && (controls.length > 0)) {
            searchRequest.addAllControls(controls);
        }
        try (Cursor<Response> cursor = search(searchRequest)) {
            // Read the response
            if (cursor.next()) {
                // cursor will always hold SearchResultEntry objects cause there is no ManageDsaITControl passed with search request
                entry = ((SearchResultEntry) cursor.get()).getEntry();
            }
            // Pass through the SaerchResultDone, or stop
            // if we have other responses
            cursor.next();
        }
    } catch (CursorException e) {
        throw new LdapException(e.getMessage(), e);
    } catch (IOException ioe) {
        throw new LdapException(ioe.getMessage(), ioe);
    }
    return entry;
}
Also used : DeleteResponse(org.apache.directory.api.ldap.model.message.DeleteResponse) IntermediateResponse(org.apache.directory.api.ldap.model.message.IntermediateResponse) Response(org.apache.directory.api.ldap.model.message.Response) ModifyDnResponse(org.apache.directory.api.ldap.model.message.ModifyDnResponse) CompareNoDResponse(org.apache.directory.api.ldap.model.message.extended.CompareNoDResponse) AddNoDResponse(org.apache.directory.api.ldap.model.message.extended.AddNoDResponse) ModifyNoDResponse(org.apache.directory.api.ldap.model.message.extended.ModifyNoDResponse) BindNoDResponse(org.apache.directory.api.ldap.model.message.extended.BindNoDResponse) ResultCodeEnum.processResponse(org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse) ExtendedResponse(org.apache.directory.api.ldap.model.message.ExtendedResponse) ExtendedNoDResponse(org.apache.directory.api.ldap.model.message.extended.ExtendedNoDResponse) CompareResponse(org.apache.directory.api.ldap.model.message.CompareResponse) AddResponse(org.apache.directory.api.ldap.model.message.AddResponse) ModifyResponse(org.apache.directory.api.ldap.model.message.ModifyResponse) ModifyDnNoDResponse(org.apache.directory.api.ldap.model.message.extended.ModifyDnNoDResponse) DeleteNoDResponse(org.apache.directory.api.ldap.model.message.extended.DeleteNoDResponse) BindResponse(org.apache.directory.api.ldap.model.message.BindResponse) SearchNoDResponse(org.apache.directory.api.ldap.model.message.extended.SearchNoDResponse) SearchRequest(org.apache.directory.api.ldap.model.message.SearchRequest) Entry(org.apache.directory.api.ldap.model.entry.Entry) SearchResultEntry(org.apache.directory.api.ldap.model.message.SearchResultEntry) DefaultEntry(org.apache.directory.api.ldap.model.entry.DefaultEntry) CursorException(org.apache.directory.api.ldap.model.cursor.CursorException) SearchRequestImpl(org.apache.directory.api.ldap.model.message.SearchRequestImpl) IOException(java.io.IOException) LdapException(org.apache.directory.api.ldap.model.exception.LdapException)

Example 37 with LdapException

use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.

the class LdapNetworkConnection method bind.

/**
 * {@inheritDoc}
 */
@Override
public BindResponse bind(BindRequest bindRequest) throws LdapException {
    if (bindRequest == null) {
        String msg = "Cannot process a null bindRequest";
        LOG.debug(msg);
        throw new IllegalArgumentException(msg);
    }
    BindFuture bindFuture = bindAsync(bindRequest);
    // Get the result from the future
    try {
        // Read the response, waiting for it if not available immediately
        // Get the response, blocking
        BindResponse bindResponse = bindFuture.get(timeout, TimeUnit.MILLISECONDS);
        if (bindResponse == null) {
            // We didn't received anything : this is an error
            if (LOG.isErrorEnabled()) {
                LOG.error(I18n.err(I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind"));
            }
            throw new LdapException(TIME_OUT_ERROR);
        }
        if (bindResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS) {
            authenticated.set(true);
            // Everything is fine, return the response
            if (LOG.isDebugEnabled()) {
                LOG.debug(I18n.msg(I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse));
            }
        } else {
            // We have had an error
            if (LOG.isDebugEnabled()) {
                LOG.debug(I18n.msg(I18n.MSG_03201_BIND_FAIL, bindResponse));
            }
        }
        return bindResponse;
    } catch (Exception ie) {
        // Catch all other exceptions
        LOG.error(NO_RESPONSE_ERROR, ie);
        throw new LdapException(NO_RESPONSE_ERROR, ie);
    }
}
Also used : BindFuture(org.apache.directory.ldap.client.api.future.BindFuture) BindResponse(org.apache.directory.api.ldap.model.message.BindResponse) LdapException(org.apache.directory.api.ldap.model.exception.LdapException) UnresolvedAddressException(java.nio.channels.UnresolvedAddressException) ConnectException(java.net.ConnectException) IOException(java.io.IOException) LdapInvalidDnException(org.apache.directory.api.ldap.model.exception.LdapInvalidDnException) InvalidConnectionException(org.apache.directory.ldap.client.api.exception.InvalidConnectionException) LdapOperationException(org.apache.directory.api.ldap.model.exception.LdapOperationException) LdapAuthenticationException(org.apache.directory.api.ldap.model.exception.LdapAuthenticationException) MessageEncoderException(org.apache.directory.api.ldap.codec.api.MessageEncoderException) CursorException(org.apache.directory.api.ldap.model.cursor.CursorException) DecoderException(org.apache.directory.api.asn1.DecoderException) LdapNoPermissionException(org.apache.directory.api.ldap.model.exception.LdapNoPermissionException) LdapOtherException(org.apache.directory.api.ldap.model.exception.LdapOtherException) ProtocolEncoderException(org.apache.mina.filter.codec.ProtocolEncoderException) LdapException(org.apache.directory.api.ldap.model.exception.LdapException)

Example 38 with LdapException

use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.

the class LdapNetworkConnection method loadSchema.

/**
 * loads schema using the specified schema loader
 *
 * @param loader the {@link SchemaLoader} to be used to load schema
 * @throws LdapException If the schema loading failed
 */
public void loadSchema(SchemaLoader loader) throws LdapException {
    try {
        SchemaManager tmp = new DefaultSchemaManager(loader);
        tmp.loadAllEnabled();
        if (!tmp.getErrors().isEmpty() && loader.isStrict()) {
            String msg = I18n.err(I18n.ERR_03204_ERROR_LOADING_SCHEMA);
            if (LOG.isErrorEnabled()) {
                LOG.error("{} {}", msg, Strings.listToString(tmp.getErrors()));
            }
            throw new LdapException(msg);
        }
        schemaManager = tmp;
        // Change the container's BinaryDetector
        ldapSession.setAttribute(LdapDecoder.MESSAGE_CONTAINER_ATTR, new LdapMessageContainer<MessageDecorator<? extends Message>>(codec, new SchemaBinaryAttributeDetector(schemaManager)));
    } catch (LdapException le) {
        throw le;
    } catch (Exception e) {
        LOG.error(I18n.err(I18n.ERR_03205_FAIL_LOAD_SCHEMA), e);
        throw new LdapException(e);
    }
}
Also used : MessageDecorator(org.apache.directory.api.ldap.codec.api.MessageDecorator) Message(org.apache.directory.api.ldap.model.message.Message) DefaultSchemaManager(org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager) SchemaManager(org.apache.directory.api.ldap.model.schema.SchemaManager) LdapException(org.apache.directory.api.ldap.model.exception.LdapException) SchemaBinaryAttributeDetector(org.apache.directory.api.ldap.codec.api.SchemaBinaryAttributeDetector) UnresolvedAddressException(java.nio.channels.UnresolvedAddressException) ConnectException(java.net.ConnectException) IOException(java.io.IOException) LdapInvalidDnException(org.apache.directory.api.ldap.model.exception.LdapInvalidDnException) InvalidConnectionException(org.apache.directory.ldap.client.api.exception.InvalidConnectionException) LdapOperationException(org.apache.directory.api.ldap.model.exception.LdapOperationException) LdapAuthenticationException(org.apache.directory.api.ldap.model.exception.LdapAuthenticationException) MessageEncoderException(org.apache.directory.api.ldap.codec.api.MessageEncoderException) CursorException(org.apache.directory.api.ldap.model.cursor.CursorException) DecoderException(org.apache.directory.api.asn1.DecoderException) LdapNoPermissionException(org.apache.directory.api.ldap.model.exception.LdapNoPermissionException) LdapOtherException(org.apache.directory.api.ldap.model.exception.LdapOtherException) ProtocolEncoderException(org.apache.mina.filter.codec.ProtocolEncoderException) LdapException(org.apache.directory.api.ldap.model.exception.LdapException) DefaultSchemaManager(org.apache.directory.api.ldap.schema.manager.impl.DefaultSchemaManager)

Example 39 with LdapException

use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.

the class LdapNetworkConnection method bind.

/**
 * Bind to the server using a DigestMd5Request object.
 *
 * @param request The DigestMd5Request POJO containing all the needed parameters
 * @return A LdapResponse containing the result
 * @throws LdapException if some error occurred
 */
public BindResponse bind(SaslDigestMd5Request request) throws LdapException {
    if (request == null) {
        String msg = I18n.msg(I18n.MSG_03204_NULL_REQUEST);
        LOG.debug(msg);
        throw new IllegalArgumentException(msg);
    }
    BindFuture bindFuture = bindAsync(request);
    // Get the result from the future
    try {
        // Read the response, waiting for it if not available immediately
        // Get the response, blocking
        BindResponse bindResponse = bindFuture.get(timeout, TimeUnit.MILLISECONDS);
        if (bindResponse == null) {
            // We didn't received anything : this is an error
            if (LOG.isErrorEnabled()) {
                LOG.error(I18n.err(I18n.ERR_03203_OP_FAILED_TIMEOUT, "Bind"));
            }
            throw new LdapException(TIME_OUT_ERROR);
        }
        if (bindResponse.getLdapResult().getResultCode() == ResultCodeEnum.SUCCESS) {
            authenticated.set(true);
            // Everything is fine, return the response
            if (LOG.isDebugEnabled()) {
                LOG.debug(I18n.msg(I18n.MSG_03202_BIND_SUCCESSFUL, bindResponse));
            }
        } else {
            // We have had an error
            if (LOG.isDebugEnabled()) {
                LOG.debug(I18n.msg(I18n.MSG_03201_BIND_FAIL, bindResponse));
            }
        }
        return bindResponse;
    } catch (Exception ie) {
        // Catch all other exceptions
        LOG.error(NO_RESPONSE_ERROR, ie);
        throw new LdapException(NO_RESPONSE_ERROR, ie);
    }
}
Also used : BindFuture(org.apache.directory.ldap.client.api.future.BindFuture) BindResponse(org.apache.directory.api.ldap.model.message.BindResponse) LdapException(org.apache.directory.api.ldap.model.exception.LdapException) UnresolvedAddressException(java.nio.channels.UnresolvedAddressException) ConnectException(java.net.ConnectException) IOException(java.io.IOException) LdapInvalidDnException(org.apache.directory.api.ldap.model.exception.LdapInvalidDnException) InvalidConnectionException(org.apache.directory.ldap.client.api.exception.InvalidConnectionException) LdapOperationException(org.apache.directory.api.ldap.model.exception.LdapOperationException) LdapAuthenticationException(org.apache.directory.api.ldap.model.exception.LdapAuthenticationException) MessageEncoderException(org.apache.directory.api.ldap.codec.api.MessageEncoderException) CursorException(org.apache.directory.api.ldap.model.cursor.CursorException) DecoderException(org.apache.directory.api.asn1.DecoderException) LdapNoPermissionException(org.apache.directory.api.ldap.model.exception.LdapNoPermissionException) LdapOtherException(org.apache.directory.api.ldap.model.exception.LdapOtherException) ProtocolEncoderException(org.apache.mina.filter.codec.ProtocolEncoderException) LdapException(org.apache.directory.api.ldap.model.exception.LdapException)

Example 40 with LdapException

use of org.apache.directory.api.ldap.model.exception.LdapException in project directory-ldap-api by apache.

the class LdifAnonymizer method anonymizeFile.

/**
 * Anonymize a LDIF
 *
 * @param ldifFile The ldif file to anonymize
 * @param writer The Writer to use to write the result
 * @throws LdapException If we got some LDAP related exception
 * @throws IOException If we had some issue during some IO operations
 */
public void anonymizeFile(String ldifFile, Writer writer) throws LdapException, IOException {
    File inputFile = new File(ldifFile);
    if (!inputFile.exists()) {
        println("Cannot open file " + ldifFile);
        return;
    }
    LdifReader ldifReader = new LdifReader(inputFile, schemaManager);
    int count = 0;
    List<LdifEntry> errors = new ArrayList<>();
    List<String> errorTexts = new ArrayList<>();
    try {
        for (LdifEntry ldifEntry : ldifReader) {
            count++;
            try {
                if (ldifEntry.isEntry() && !ldifEntry.isChangeAdd()) {
                    // process a full entry. Add changes aren't processed here.
                    Entry newEntry = anonymizeEntry(ldifEntry);
                    writer.write(LdifUtils.convertToLdif(newEntry));
                    writer.write("\n");
                } else if (ldifEntry.isChangeDelete()) {
                    // A Delete operation
                    LdifEntry newLdifEntry = anonymizeChangeDelete(ldifEntry);
                    if (ldifEntry != null) {
                        writer.write(newLdifEntry.toString());
                        writer.write("\n");
                    }
                } else if (ldifEntry.isChangeAdd()) {
                    // A Add operation
                    LdifEntry newLdifEntry = anonymizeChangeAdd(ldifEntry);
                    if (ldifEntry != null) {
                        writer.write(newLdifEntry.toString());
                        writer.write("\n");
                    }
                } else if (ldifEntry.isChangeModify()) {
                    // A Modify operation
                    LdifEntry newLdifEntry = anonymizeChangeModify(ldifEntry);
                    if (ldifEntry != null) {
                        writer.write(newLdifEntry.toString());
                        writer.write("\n");
                    }
                } else if (ldifEntry.isChangeModDn() || ldifEntry.isChangeModRdn()) {
                    // A MODDN operation
                    LdifEntry newLdifEntry = anonymizeChangeModDn(ldifEntry);
                    if (ldifEntry != null) {
                        writer.write(newLdifEntry.toString());
                        writer.write("\n");
                    }
                }
                System.out.print('.');
                if (count % 100 == 0) {
                    println();
                }
            } catch (Exception e) {
                System.out.print('*');
                if (count % 100 == 0) {
                    println();
                }
                errors.add(ldifEntry);
                errorTexts.add(e.getMessage());
            }
        }
        println();
        if (!errors.isEmpty()) {
            println("There are " + errors.size() + " bad entries");
            int i = 0;
            for (LdifEntry ldifEntry : errors) {
                println("---------------------------------------------------");
                println("error : " + errorTexts.get(i));
                println(ldifEntry.getDn().toString());
                i++;
            }
        }
    } finally {
        println();
        if (!errors.isEmpty()) {
            println("There are " + errors.size() + " bad entries");
        }
        println("Nb entries : " + count);
        ldifReader.close();
    }
}
Also used : LdifReader(org.apache.directory.api.ldap.model.ldif.LdifReader) DefaultEntry(org.apache.directory.api.ldap.model.entry.DefaultEntry) Entry(org.apache.directory.api.ldap.model.entry.Entry) LdifEntry(org.apache.directory.api.ldap.model.ldif.LdifEntry) ArrayList(java.util.ArrayList) File(java.io.File) LdifEntry(org.apache.directory.api.ldap.model.ldif.LdifEntry) LdapInvalidAttributeValueException(org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException) IOException(java.io.IOException) LdapInvalidDnException(org.apache.directory.api.ldap.model.exception.LdapInvalidDnException) LdapException(org.apache.directory.api.ldap.model.exception.LdapException)

Aggregations

LdapException (org.apache.directory.api.ldap.model.exception.LdapException)329 LdapConnection (org.apache.directory.ldap.client.api.LdapConnection)159 ArrayList (java.util.ArrayList)93 CursorException (org.apache.directory.api.ldap.model.cursor.CursorException)91 FinderException (org.apache.directory.fortress.core.FinderException)73 Entry (org.apache.directory.api.ldap.model.entry.Entry)63 Modification (org.apache.directory.api.ldap.model.entry.Modification)63 IOException (java.io.IOException)54 SearchCursor (org.apache.directory.api.ldap.model.cursor.SearchCursor)51 DefaultModification (org.apache.directory.api.ldap.model.entry.DefaultModification)50 DefaultEntry (org.apache.directory.api.ldap.model.entry.DefaultEntry)49 UpdateException (org.apache.directory.fortress.core.UpdateException)41 LdapInvalidDnException (org.apache.directory.api.ldap.model.exception.LdapInvalidDnException)35 Dn (org.apache.directory.api.ldap.model.name.Dn)34 LdapAuthenticationException (org.apache.directory.api.ldap.model.exception.LdapAuthenticationException)25 AttributeType (org.apache.directory.api.ldap.model.schema.AttributeType)25 DecoderException (org.apache.directory.api.asn1.DecoderException)22 LdapNoPermissionException (org.apache.directory.api.ldap.model.exception.LdapNoPermissionException)22 LdapOtherException (org.apache.directory.api.ldap.model.exception.LdapOtherException)22 ConnectException (java.net.ConnectException)21