[security] Allow Client Builder set Dnslookup params (#13503)
diff --git a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/ClientBuilder.java b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/ClientBuilder.java
index 690dfc5..49d79ec 100644
--- a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/ClientBuilder.java
+++ b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/ClientBuilder.java
@@ -539,6 +539,14 @@
ClientBuilder enableTransaction(boolean enableTransaction);
/**
+ * Set dns lookup bind address and port.
+ * @param address dnsBindAddress
+ * @param port dnsBindPort
+ * @return
+ */
+ ClientBuilder dnsLookupBind(String address, int port);
+
+ /**
* Set socks5 proxy address.
* @param socks5ProxyAddress
* @return
diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientBuilderImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientBuilderImpl.java
index 2a0542e..4e803c4 100644
--- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientBuilderImpl.java
+++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientBuilderImpl.java
@@ -339,6 +339,14 @@
}
@Override
+ public ClientBuilder dnsLookupBind(String address, int port) {
+ checkArgument(port >= 0 && port <= 65535, "DnsLookBindPort need to be within the range of 0 and 65535");
+ conf.setDnsLookupBindAddress(address);
+ conf.setDnsLookupBindPort(port);
+ return this;
+ }
+
+ @Override
public ClientBuilder socks5ProxyAddress(InetSocketAddress socks5ProxyAddress) {
conf.setSocks5ProxyAddress(socks5ProxyAddress);
return this;
diff --git a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ClientBuilderImplTest.java b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ClientBuilderImplTest.java
index 8cf9b59..8b129df 100644
--- a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ClientBuilderImplTest.java
+++ b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/ClientBuilderImplTest.java
@@ -70,4 +70,15 @@
}).build();
}
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void testClientBuilderWithIllegalMinusPort() throws PulsarClientException {
+ PulsarClient.builder().dnsLookupBind("localhost", -1).build();
+ }
+
+ @Test(expectedExceptions = IllegalArgumentException.class)
+ public void testClientBuilderWithIllegalLargePort() throws PulsarClientException {
+ PulsarClient.builder().dnsLookupBind("localhost", 65536).build();
+ }
+
+
}