| | |
| | | * A connection factory designed for use with command line tools. |
| | | */ |
| | | final class ArgumentParserConnectionFactory extends |
| | | AbstractConnectionFactory<AsynchronousConnection> implements |
| | | ConnectionFactory<AsynchronousConnection> |
| | | AbstractConnectionFactory implements ConnectionFactory |
| | | { |
| | | /** |
| | | * End Of Line. |
| | |
| | | |
| | | private SSLContext sslContext; |
| | | |
| | | private ConnectionFactory<? extends AsynchronousConnection> connFactory; |
| | | private ConnectionFactory connFactory; |
| | | |
| | | private BindRequest bindRequest = null; |
| | | |
| | |
| | | /** |
| | | * {@inheritDoc} |
| | | */ |
| | | public FutureResult<? extends AsynchronousConnection> getAsynchronousConnection( |
| | | ResultHandler<? super AsynchronousConnection> handler) |
| | | public FutureResult<AsynchronousConnection> getAsynchronousConnection( |
| | | ResultHandler<AsynchronousConnection> handler) |
| | | { |
| | | return connFactory.getAsynchronousConnection(handler); |
| | | } |
| | |
| | | // Couldn't have at the same time bindPassword and bindPasswordFile |
| | | if (bindPasswordArg.isPresent() && bindPasswordFileArg.isPresent()) |
| | | { |
| | | LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS |
| | | .get(bindPasswordArg.getLongIdentifier(), bindPasswordFileArg |
| | | LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get( |
| | | bindPasswordArg.getLongIdentifier(), bindPasswordFileArg |
| | | .getLongIdentifier()); |
| | | throw new ArgumentException(message); |
| | | } |
| | |
| | | // trustStore related arg |
| | | if (trustAllArg.isPresent() && trustStorePathArg.isPresent()) |
| | | { |
| | | LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(trustAllArg |
| | | .getLongIdentifier(), trustStorePathArg.getLongIdentifier()); |
| | | LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get( |
| | | trustAllArg.getLongIdentifier(), trustStorePathArg |
| | | .getLongIdentifier()); |
| | | throw new ArgumentException(message); |
| | | } |
| | | if (trustAllArg.isPresent() && trustStorePasswordArg.isPresent()) |
| | | { |
| | | LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(trustAllArg |
| | | .getLongIdentifier(), trustStorePasswordArg |
| | | .getLongIdentifier()); |
| | | LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get( |
| | | trustAllArg.getLongIdentifier(), trustStorePasswordArg |
| | | .getLongIdentifier()); |
| | | throw new ArgumentException(message); |
| | | } |
| | | if (trustAllArg.isPresent() |
| | | && trustStorePasswordFileArg.isPresent()) |
| | | { |
| | | LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(trustAllArg |
| | | .getLongIdentifier(), trustStorePasswordFileArg |
| | | .getLongIdentifier()); |
| | | LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get( |
| | | trustAllArg.getLongIdentifier(), trustStorePasswordFileArg |
| | | .getLongIdentifier()); |
| | | throw new ArgumentException(message); |
| | | } |
| | | |
| | |
| | | String value = trustStorePathArg.getValue(); |
| | | if (!canRead(trustStorePathArg.getValue())) |
| | | { |
| | | LocalizableMessage message = ERR_CANNOT_READ_TRUSTSTORE.get(value); |
| | | LocalizableMessage message = ERR_CANNOT_READ_TRUSTSTORE |
| | | .get(value); |
| | | throw new ArgumentException(message); |
| | | } |
| | | } |
| | |
| | | String value = keyStorePathArg.getValue(); |
| | | if (!canRead(trustStorePathArg.getValue())) |
| | | { |
| | | LocalizableMessage message = ERR_CANNOT_READ_KEYSTORE.get(value); |
| | | LocalizableMessage message = ERR_CANNOT_READ_KEYSTORE |
| | | .get(value); |
| | | throw new ArgumentException(message); |
| | | } |
| | | } |
| | |
| | | // useSSLArg |
| | | if (useStartTLSArg.isPresent() && useSSLArg.isPresent()) |
| | | { |
| | | LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get(useStartTLSArg |
| | | .getLongIdentifier(), useSSLArg.getLongIdentifier()); |
| | | LocalizableMessage message = ERR_TOOL_CONFLICTING_ARGS.get( |
| | | useStartTLSArg.getLongIdentifier(), useSSLArg |
| | | .getLongIdentifier()); |
| | | throw new ArgumentException(message); |
| | | } |
| | | |
| | |
| | | } |
| | | catch (CLIException e) |
| | | { |
| | | throw new ArgumentException(LocalizableMessage.raw("Error reading input: " |
| | | + e.toString())); |
| | | throw new ArgumentException(LocalizableMessage |
| | | .raw("Error reading input: " + e.toString())); |
| | | } |
| | | if (bindRequest != null) |
| | | { |
| | |
| | | if (bindDnArg.isPresent() || bindPasswordFileArg.isPresent() |
| | | || bindPasswordArg.isPresent()) |
| | | { |
| | | return Requests.newSimpleBindRequest(getBindDN(), getPassword()); |
| | | return Requests |
| | | .newSimpleBindRequest(getBindDN(), getPassword()); |
| | | } |
| | | return null; |
| | | } |
| | |
| | | { |
| | | if (sslContext == null) |
| | | { |
| | | LocalizableMessage message = ERR_TOOL_SASLEXTERNAL_NEEDS_SSL_OR_TLS.get(); |
| | | LocalizableMessage message = ERR_TOOL_SASLEXTERNAL_NEEDS_SSL_OR_TLS |
| | | .get(); |
| | | throw new ArgumentException(message); |
| | | } |
| | | if (!keyStorePathArg.isPresent() && getKeyStore() == null) |
| | | { |
| | | LocalizableMessage message = ERR_TOOL_SASLEXTERNAL_NEEDS_KEYSTORE.get(); |
| | | LocalizableMessage message = ERR_TOOL_SASLEXTERNAL_NEEDS_KEYSTORE |
| | | .get(); |
| | | throw new ArgumentException(message); |
| | | } |
| | | return new ExternalSASLBindRequest(getAuthzID()); |
| | |
| | | } |
| | | else if (app.isInteractive()) |
| | | { |
| | | value = app.readInput(LocalizableMessage.raw("Bind DN:"), bindDnArg |
| | | .getDefaultValue() == null ? value : bindDnArg |
| | | .getDefaultValue()); |
| | | value = app.readInput(LocalizableMessage.raw("Bind DN:"), |
| | | bindDnArg.getDefaultValue() == null ? value : bindDnArg |
| | | .getDefaultValue()); |
| | | } |
| | | |
| | | try |
| | |
| | | } |
| | | if (value == null && app.isInteractive()) |
| | | { |
| | | value = app.readInput(LocalizableMessage.raw("Authentication ID:"), |
| | | value = app.readInput(LocalizableMessage |
| | | .raw("Authentication ID:"), |
| | | bindDnArg.getDefaultValue() == null ? null : "dn: " |
| | | + bindDnArg.getDefaultValue()); |
| | | } |
| | | if (value == null) |
| | | { |
| | | LocalizableMessage message = ERR_LDAPAUTH_SASL_AUTHID_REQUIRED.get(mech); |
| | | LocalizableMessage message = ERR_LDAPAUTH_SASL_AUTHID_REQUIRED |
| | | .get(mech); |
| | | throw new ArgumentException(message); |
| | | } |
| | | return value; |
| | |
| | | } |
| | | if (value.length() == 0 && app.isInteractive()) |
| | | { |
| | | value = app.readLineOfInput(LocalizableMessage.raw("Bind Password:")); |
| | | value = app.readLineOfInput(LocalizableMessage |
| | | .raw("Bind Password:")); |
| | | } |
| | | |
| | | return ByteString.valueOf(value); |