Skip to content

Commit 581c885

Browse files
author
Julien Ruaux
committed
feat: Added username and password config properties. Resolves #13
1 parent fd42a13 commit 581c885

File tree

1 file changed

+63
-31
lines changed

1 file changed

+63
-31
lines changed

src/main/java/com/redis/kafka/connect/common/RedisEnterpriseConfig.java

Lines changed: 63 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,50 +15,82 @@
1515
*/
1616
package com.redis.kafka.connect.common;
1717

18-
import com.github.jcustenborder.kafka.connect.utils.config.ConfigKeyBuilder;
19-
import com.github.jcustenborder.kafka.connect.utils.config.validators.Validators;
20-
import io.lettuce.core.RedisURI;
18+
import java.util.Map;
19+
2120
import org.apache.kafka.common.config.AbstractConfig;
2221
import org.apache.kafka.common.config.ConfigDef;
2322

24-
import java.util.Map;
23+
import com.github.jcustenborder.kafka.connect.utils.config.ConfigKeyBuilder;
24+
import com.github.jcustenborder.kafka.connect.utils.config.ConfigUtils;
25+
import com.github.jcustenborder.kafka.connect.utils.config.validators.Validators;
26+
27+
import io.lettuce.core.RedisURI;
2528

2629
public class RedisEnterpriseConfig extends AbstractConfig {
2730

28-
public static final String REDIS_URI_CONFIG = "redis.uri";
29-
private static final String REDIS_URI_DEFAULT = "redis://localhost:6379";
30-
private static final String REDIS_URI_DOC = "URI of the Redis Enterprise database to connect to, e.g. redis://redis-12000.redis.com:12000";
31+
public static final String REDIS_URI_CONFIG = "redis.uri";
32+
private static final String REDIS_URI_DEFAULT = "redis://localhost:6379";
33+
private static final String REDIS_URI_DOC = "URI of the Redis Enterprise database to connect to, e.g. redis://redis-12000.redis.com:12000. For secure connections use rediss URI scheme, e.g. rediss://...";
34+
35+
public static final String INSECURE_CONFIG = "redis.insecure";
36+
public static final String INSECURE_DEFAULT = "false";
37+
public static final String INSECURE_DOC = "Allow insecure connections (e.g. invalid certificates) to Redis Enterprise when using SSL.";
38+
39+
public static final String REDIS_USERNAME_CONFIG = "redis.username";
40+
private static final String REDIS_USERNAME_DEFAULT = null;
41+
private static final String REDIS_USERNAME_DOC = "Username to use to connect to Redis Enterprise database";
42+
43+
public static final String REDIS_PASSWORD_CONFIG = "redis.password";
44+
private static final String REDIS_PASSWORD_DEFAULT = null;
45+
private static final String REDIS_PASSWORD_DOC = "Password to use to connect to Redis Enterprise database";
3146

32-
public static final String INSECURE_CONFIG = "redis.insecure";
33-
public static final String INSECURE_DEFAULT = "false";
34-
public static final String INSECURE_DOC = "Allow insecure connections (e.g. invalid certificates) to Redis Enterprise when using SSL.";
47+
public RedisEnterpriseConfig(ConfigDef config, Map<?, ?> originals) {
48+
super(config, originals);
49+
}
3550

36-
public RedisEnterpriseConfig(ConfigDef config, Map<?, ?> originals) {
37-
super(config, originals);
38-
}
51+
public RedisURI getRedisURI() {
52+
RedisURI uri = RedisURI.create(ConfigUtils.uri(this, REDIS_URI_CONFIG));
53+
uri.setVerifyPeer(!getBoolean(INSECURE_CONFIG));
54+
String username = getString(REDIS_URI_CONFIG);
55+
if (!isEmpty(username)) {
56+
uri.setUsername(username);
57+
}
58+
if (get(REDIS_PASSWORD_CONFIG) != null) {
59+
char[] password = ConfigUtils.passwordCharArray(this, REDIS_PASSWORD_CONFIG);
60+
if (password.length > 0) {
61+
uri.setPassword(password);
62+
}
63+
}
64+
return uri;
65+
}
3966

40-
public RedisURI getRedisURI() {
41-
RedisURI uri = RedisURI.create(getString(REDIS_URI_CONFIG));
42-
uri.setVerifyPeer(!getBoolean(INSECURE_CONFIG));
43-
return uri;
44-
}
67+
protected static boolean isEmpty(String string) {
68+
return string == null || string.isEmpty();
69+
}
4570

46-
protected static class RedisEnterpriseConfigDef extends ConfigDef {
71+
protected static class RedisEnterpriseConfigDef extends ConfigDef {
4772

48-
protected RedisEnterpriseConfigDef() {
49-
defineConfigs();
50-
}
73+
protected RedisEnterpriseConfigDef() {
74+
defineConfigs();
75+
}
5176

52-
protected RedisEnterpriseConfigDef(ConfigDef base) {
53-
super(base);
54-
defineConfigs();
55-
}
77+
protected RedisEnterpriseConfigDef(ConfigDef base) {
78+
super(base);
79+
defineConfigs();
80+
}
5681

57-
private void defineConfigs() {
58-
define(ConfigKeyBuilder.of(REDIS_URI_CONFIG, ConfigDef.Type.STRING).documentation(REDIS_URI_DOC).defaultValue(REDIS_URI_DEFAULT).importance(ConfigDef.Importance.HIGH).validator(Validators.validURI("redis", "rediss")).build());
59-
define(ConfigKeyBuilder.of(INSECURE_CONFIG, ConfigDef.Type.BOOLEAN).documentation(INSECURE_DOC).defaultValue(INSECURE_DEFAULT).importance(ConfigDef.Importance.MEDIUM).build());
60-
}
82+
private void defineConfigs() {
83+
define(ConfigKeyBuilder.of(REDIS_URI_CONFIG, ConfigDef.Type.STRING).documentation(REDIS_URI_DOC)
84+
.defaultValue(REDIS_URI_DEFAULT).importance(ConfigDef.Importance.HIGH)
85+
.validator(Validators.validURI("redis", "rediss")).build());
86+
define(ConfigKeyBuilder.of(REDIS_USERNAME_CONFIG, ConfigDef.Type.STRING).documentation(REDIS_USERNAME_DOC)
87+
.defaultValue(REDIS_USERNAME_DEFAULT).importance(ConfigDef.Importance.MEDIUM).build());
88+
define(ConfigKeyBuilder.of(REDIS_PASSWORD_CONFIG, ConfigDef.Type.PASSWORD).documentation(REDIS_PASSWORD_DOC)
89+
.defaultValue(REDIS_PASSWORD_DEFAULT).importance(ConfigDef.Importance.MEDIUM).build());
90+
define(ConfigKeyBuilder.of(INSECURE_CONFIG, ConfigDef.Type.BOOLEAN).documentation(INSECURE_DOC)
91+
.defaultValue(INSECURE_DEFAULT).importance(ConfigDef.Importance.MEDIUM).build());
92+
}
6193

62-
}
94+
}
6395

6496
}

0 commit comments

Comments
 (0)