From e73672dccaba8c4208c5128efe51f9325c995223 Mon Sep 17 00:00:00 2001 From: jzonthemtn Date: Wed, 25 Sep 2024 16:56:02 -0400 Subject: [PATCH] #146 Adding http basic auth credentials to PhEyeFilter. --- .../phileas/services/FilterPolicyLoader.java | 2 ++ .../filters/ai/pheye/PhEyeConfiguration.java | 20 +++++++++++- .../filters/ai/pheye/PhEyeFilter.java | 32 ++++++++++++------- .../filters/pheye/PhEyeConfiguration.java | 26 ++++++++++++++- 4 files changed, 67 insertions(+), 13 deletions(-) diff --git a/phileas-core/src/main/java/ai/philterd/phileas/services/FilterPolicyLoader.java b/phileas-core/src/main/java/ai/philterd/phileas/services/FilterPolicyLoader.java index 3b82cad3..4bc55cc5 100644 --- a/phileas-core/src/main/java/ai/philterd/phileas/services/FilterPolicyLoader.java +++ b/phileas-core/src/main/java/ai/philterd/phileas/services/FilterPolicyLoader.java @@ -1057,6 +1057,8 @@ public List getFiltersForPolicy(final Policy policy, final Map getLabels() { public void setLabels(Collection labels) { this.labels = labels; } - + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + } diff --git a/phileas-core/src/main/java/ai/philterd/phileas/services/filters/ai/pheye/PhEyeFilter.java b/phileas-core/src/main/java/ai/philterd/phileas/services/filters/ai/pheye/PhEyeFilter.java index 9eab2e99..19eb2b0b 100644 --- a/phileas-core/src/main/java/ai/philterd/phileas/services/filters/ai/pheye/PhEyeFilter.java +++ b/phileas-core/src/main/java/ai/philterd/phileas/services/filters/ai/pheye/PhEyeFilter.java @@ -15,7 +15,6 @@ */ package ai.philterd.phileas.services.filters.ai.pheye; -import ai.philterd.phileas.model.configuration.PhileasConfiguration; import ai.philterd.phileas.model.enums.FilterType; import ai.philterd.phileas.model.filter.FilterConfiguration; import ai.philterd.phileas.model.filter.dynamic.NerFilter; @@ -24,11 +23,9 @@ import ai.philterd.phileas.model.objects.Span; import ai.philterd.phileas.model.policy.Policy; import ai.philterd.phileas.model.services.MetricsService; -import com.amazonaws.services.s3.model.TagSet; import com.google.common.reflect.TypeToken; import com.google.gson.Gson; -import okhttp3.ConnectionPool; -import okhttp3.OkHttpClient; +import okhttp3.*; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics; @@ -39,6 +36,7 @@ import retrofit2.converter.gson.GsonConverterFactory; import retrofit2.converter.scalars.ScalarsConverterFactory; +import javax.annotation.Nullable; import java.io.IOException; import java.lang.reflect.Type; import java.util.*; @@ -65,13 +63,25 @@ public PhEyeFilter(final FilterConfiguration filterConfiguration, this.removePunctuation = removePunctuation; this.labels = phEyeConfiguration.getLabels(); - final OkHttpClient okHttpClient = new OkHttpClient.Builder() - .retryOnConnectionFailure(true) - .connectTimeout(phEyeConfiguration.getTimeout(), TimeUnit.SECONDS) - .writeTimeout(phEyeConfiguration.getTimeout(), TimeUnit.SECONDS) - .readTimeout(phEyeConfiguration.getTimeout(), TimeUnit.SECONDS) - .connectionPool(new ConnectionPool(phEyeConfiguration.getMaxIdleConnections(), phEyeConfiguration.getKeepAliveDurationMs(), TimeUnit.MILLISECONDS)) - .build(); + final OkHttpClient.Builder builder = new OkHttpClient.Builder(); + + if(StringUtils.isNotEmpty(phEyeConfiguration.getUsername()) && StringUtils.isNotEmpty(phEyeConfiguration.getPassword())) { + builder.authenticator(new Authenticator() { + @Override + public Request authenticate(final Route route, final okhttp3.Response response) { + final String credential = Credentials.basic(phEyeConfiguration.getUsername(), phEyeConfiguration.getPassword()); + return response.request().newBuilder().header("Authorization", credential).build(); + } + }); + } + + builder.retryOnConnectionFailure(true); + builder.connectTimeout(phEyeConfiguration.getTimeout(), TimeUnit.SECONDS); + builder.writeTimeout(phEyeConfiguration.getTimeout(), TimeUnit.SECONDS); + builder.readTimeout(phEyeConfiguration.getTimeout(), TimeUnit.SECONDS); + builder.connectionPool(new ConnectionPool(phEyeConfiguration.getMaxIdleConnections(), phEyeConfiguration.getKeepAliveDurationMs(), TimeUnit.MILLISECONDS)); + + final OkHttpClient okHttpClient = builder.build(); final Retrofit retrofit = new Retrofit.Builder() .baseUrl(phEyeConfiguration.getEndpoint()) diff --git a/phileas-model/src/main/java/ai/philterd/phileas/model/policy/filters/pheye/PhEyeConfiguration.java b/phileas-model/src/main/java/ai/philterd/phileas/model/policy/filters/pheye/PhEyeConfiguration.java index 17be66ac..734814c0 100644 --- a/phileas-model/src/main/java/ai/philterd/phileas/model/policy/filters/pheye/PhEyeConfiguration.java +++ b/phileas-model/src/main/java/ai/philterd/phileas/model/policy/filters/pheye/PhEyeConfiguration.java @@ -12,6 +12,14 @@ public class PhEyeConfiguration { @Expose protected String endpoint = "http://localhost:18080/"; + @SerializedName("username") + @Expose + protected String username; + + @SerializedName("password") + @Expose + protected String password; + @SerializedName("timeout") @Expose protected int timeout = 600; @@ -67,5 +75,21 @@ public Collection getLabels() { public void setLabels(Collection labels) { this.labels = labels; } - + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getPassword() { + return password; + } + }