Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
I
Indexer
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
OSDU
OSDU Data Platform
System
Indexer
Commits
e6b87e65
Commit
e6b87e65
authored
4 years ago
by
Riabokon Stanislav(EPAM)[GCP]
Browse files
Options
Downloads
Patches
Plain Diff
Update ElasticClientHandler.java
parent
624e2f7e
No related branches found
Branches containing commit
No related tags found
Tags containing commit
3 merge requests
!46
GCP fix swagger (GONRG-1022)
,
!41
GCP implement index cleanup (GONRG-856)
,
!36
Support for self-signed certificates for ElasticSearch connection(GONRG-776, GONRG-539)
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
indexer-core/src/main/java/org/opengroup/osdu/indexer/util/ElasticClientHandler.java
+152
-152
152 additions, 152 deletions
...org/opengroup/osdu/indexer/util/ElasticClientHandler.java
with
152 additions
and
152 deletions
indexer-core/src/main/java/org/opengroup/osdu/indexer/util/ElasticClientHandler.java
+
152
−
152
View file @
e6b87e65
package
org.opengroup.osdu.indexer.util
;
package
org.opengroup.osdu.indexer.util
;
import
java.security.KeyManagementException
;
import
java.security.KeyManagementException
;
import
java.security.KeyStoreException
;
import
java.security.KeyStoreException
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.Base64
;
import
java.util.Base64
;
import
java.util.Objects
;
import
java.util.Objects
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.SSLContext
;
import
lombok.extern.java.Log
;
import
lombok.extern.java.Log
;
import
org.apache.http.Header
;
import
org.apache.http.Header
;
import
org.apache.http.HttpHost
;
import
org.apache.http.HttpHost
;
import
org.apache.http.HttpStatus
;
import
org.apache.http.HttpStatus
;
import
org.apache.http.conn.ssl.NoopHostnameVerifier
;
import
org.apache.http.conn.ssl.NoopHostnameVerifier
;
import
org.apache.http.conn.ssl.TrustSelfSignedStrategy
;
import
org.apache.http.conn.ssl.TrustSelfSignedStrategy
;
import
org.apache.http.impl.nio.client.HttpAsyncClientBuilder
;
import
org.apache.http.impl.nio.client.HttpAsyncClientBuilder
;
import
org.apache.http.message.BasicHeader
;
import
org.apache.http.message.BasicHeader
;
import
org.apache.http.ssl.SSLContextBuilder
;
import
org.apache.http.ssl.SSLContextBuilder
;
import
org.elasticsearch.client.RestClient
;
import
org.elasticsearch.client.RestClient
;
import
org.elasticsearch.client.RestClientBuilder
;
import
org.elasticsearch.client.RestClientBuilder
;
import
org.elasticsearch.client.RestHighLevelClient
;
import
org.elasticsearch.client.RestHighLevelClient
;
import
org.opengroup.osdu.core.common.model.http.AppException
;
import
org.opengroup.osdu.core.common.model.http.AppException
;
import
org.opengroup.osdu.core.common.model.indexer.IElasticSettingService
;
import
org.opengroup.osdu.core.common.model.indexer.IElasticSettingService
;
import
org.opengroup.osdu.core.common.model.search.ClusterSettings
;
import
org.opengroup.osdu.core.common.model.search.ClusterSettings
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
@Component
@Component
@Log
@Log
public
class
ElasticClientHandler
{
public
class
ElasticClientHandler
{
// Elastic cluster Rest client settings
// Elastic cluster Rest client settings
private
static
final
int
CLOUD_REST_CLIENT_PORT
=
9243
;
private
static
final
int
CLOUD_REST_CLIENT_PORT
=
9243
;
private
static
final
int
REST_CLIENT_CONNECT_TIMEOUT
=
60000
;
private
static
final
int
REST_CLIENT_CONNECT_TIMEOUT
=
60000
;
private
static
final
int
REST_CLIENT_SOCKET_TIMEOUT
=
60000
;
private
static
final
int
REST_CLIENT_SOCKET_TIMEOUT
=
60000
;
private
static
final
int
REST_CLIENT_RETRY_TIMEOUT
=
60000
;
private
static
final
int
REST_CLIENT_RETRY_TIMEOUT
=
60000
;
@Value
(
"#{new Boolean('${security.https.certificate.trust
:false
}')}"
)
@Value
(
"#{new Boolean('${security.https.certificate.trust}')}"
)
private
Boolean
isSecurityHttpsCertificateTrust
;
private
Boolean
isSecurityHttpsCertificateTrust
;
@Autowired
@Autowired
private
IElasticSettingService
elasticSettingService
;
private
IElasticSettingService
elasticSettingService
;
public
RestHighLevelClient
createRestClient
()
{
public
RestHighLevelClient
createRestClient
()
{
return
getCloudRestClient
(
elasticSettingService
.
getElasticClusterInformation
());
return
getCloudRestClient
(
elasticSettingService
.
getElasticClusterInformation
());
}
}
// TODO: Remove this temporary implementation when ECE CCS is utilized
// TODO: Remove this temporary implementation when ECE CCS is utilized
public
RestHighLevelClient
createRestClient
(
final
ClusterSettings
clusterSettings
)
{
public
RestHighLevelClient
createRestClient
(
final
ClusterSettings
clusterSettings
)
{
return
getCloudRestClient
(
clusterSettings
);
return
getCloudRestClient
(
clusterSettings
);
}
}
private
RestHighLevelClient
getCloudRestClient
(
final
ClusterSettings
clusterSettings
)
{
private
RestHighLevelClient
getCloudRestClient
(
final
ClusterSettings
clusterSettings
)
{
String
cluster
=
null
;
String
cluster
=
null
;
String
host
=
null
;
String
host
=
null
;
int
port
=
CLOUD_REST_CLIENT_PORT
;
int
port
=
CLOUD_REST_CLIENT_PORT
;
String
protocolScheme
=
"https"
;
String
protocolScheme
=
"https"
;
String
tls
=
"true"
;
String
tls
=
"true"
;
try
{
try
{
cluster
=
clusterSettings
.
getHost
();
cluster
=
clusterSettings
.
getHost
();
host
=
clusterSettings
.
getHost
();
host
=
clusterSettings
.
getHost
();
port
=
clusterSettings
.
getPort
();
port
=
clusterSettings
.
getPort
();
if
(!
clusterSettings
.
isHttps
())
{
if
(!
clusterSettings
.
isHttps
())
{
protocolScheme
=
"http"
;
protocolScheme
=
"http"
;
}
}
if
(!
clusterSettings
.
isTls
())
{
if
(!
clusterSettings
.
isTls
())
{
tls
=
"false"
;
tls
=
"false"
;
}
}
String
basicEncoded
=
Base64
String
basicEncoded
=
Base64
.
getEncoder
().
encodeToString
(
clusterSettings
.
getUserNameAndPassword
().
getBytes
());
.
getEncoder
().
encodeToString
(
clusterSettings
.
getUserNameAndPassword
().
getBytes
());
String
basicAuthenticationHeaderVal
=
String
.
format
(
"Basic %s"
,
basicEncoded
);
String
basicAuthenticationHeaderVal
=
String
.
format
(
"Basic %s"
,
basicEncoded
);
RestClientBuilder
builder
=
createClientBuilder
(
host
,
basicAuthenticationHeaderVal
,
port
,
RestClientBuilder
builder
=
createClientBuilder
(
host
,
basicAuthenticationHeaderVal
,
port
,
protocolScheme
,
tls
);
protocolScheme
,
tls
);
return
new
RestHighLevelClient
(
builder
);
return
new
RestHighLevelClient
(
builder
);
}
catch
(
AppException
e
)
{
}
catch
(
AppException
e
)
{
throw
e
;
throw
e
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
AppException
(
throw
new
AppException
(
HttpStatus
.
SC_INTERNAL_SERVER_ERROR
,
HttpStatus
.
SC_INTERNAL_SERVER_ERROR
,
"search client error"
,
"search client error"
,
"error creating search client"
,
"error creating search client"
,
String
String
.
format
(
"Elastic client connection params, cluster: %s, host: %s, port: %s"
,
cluster
,
.
format
(
"Elastic client connection params, cluster: %s, host: %s, port: %s"
,
cluster
,
host
,
port
),
host
,
port
),
e
);
e
);
}
}
}
}
public
RestClientBuilder
createClientBuilder
(
String
host
,
String
basicAuthenticationHeaderVal
,
public
RestClientBuilder
createClientBuilder
(
String
host
,
String
basicAuthenticationHeaderVal
,
int
port
,
String
protocolScheme
,
String
tls
)
{
int
port
,
String
protocolScheme
,
String
tls
)
{
RestClientBuilder
builder
=
RestClient
.
builder
(
new
HttpHost
(
host
,
port
,
protocolScheme
));
RestClientBuilder
builder
=
RestClient
.
builder
(
new
HttpHost
(
host
,
port
,
protocolScheme
));
builder
.
setRequestConfigCallback
(
builder
.
setRequestConfigCallback
(
requestConfigBuilder
->
requestConfigBuilder
.
setConnectTimeout
(
REST_CLIENT_CONNECT_TIMEOUT
)
requestConfigBuilder
->
requestConfigBuilder
.
setConnectTimeout
(
REST_CLIENT_CONNECT_TIMEOUT
)
.
setSocketTimeout
(
REST_CLIENT_SOCKET_TIMEOUT
));
.
setSocketTimeout
(
REST_CLIENT_SOCKET_TIMEOUT
));
builder
.
setMaxRetryTimeoutMillis
(
REST_CLIENT_RETRY_TIMEOUT
);
builder
.
setMaxRetryTimeoutMillis
(
REST_CLIENT_RETRY_TIMEOUT
);
Header
[]
defaultHeaders
=
new
Header
[]{
Header
[]
defaultHeaders
=
new
Header
[]{
new
BasicHeader
(
"client.transport.nodes_sampler_interval"
,
"30s"
),
new
BasicHeader
(
"client.transport.nodes_sampler_interval"
,
"30s"
),
new
BasicHeader
(
"client.transport.ping_timeout"
,
"30s"
),
new
BasicHeader
(
"client.transport.ping_timeout"
,
"30s"
),
new
BasicHeader
(
"client.transport.sniff"
,
"false"
),
new
BasicHeader
(
"client.transport.sniff"
,
"false"
),
new
BasicHeader
(
"request.headers.X-Found-Cluster"
,
host
),
new
BasicHeader
(
"request.headers.X-Found-Cluster"
,
host
),
new
BasicHeader
(
"cluster.name"
,
host
),
new
BasicHeader
(
"cluster.name"
,
host
),
new
BasicHeader
(
"xpack.security.transport.ssl.enabled"
,
tls
),
new
BasicHeader
(
"xpack.security.transport.ssl.enabled"
,
tls
),
new
BasicHeader
(
"Authorization"
,
basicAuthenticationHeaderVal
),
new
BasicHeader
(
"Authorization"
,
basicAuthenticationHeaderVal
),
};
};
log
.
info
(
String
.
format
(
log
.
info
(
String
.
format
(
"Elastic client connection uses protocolScheme = %s with a flag "
"Elastic client connection uses protocolScheme = %s with a flag "
+
"'security.https.certificate.trust' = %s"
,
+
"'security.https.certificate.trust' = %s"
,
protocolScheme
,
isSecurityHttpsCertificateTrust
));
protocolScheme
,
isSecurityHttpsCertificateTrust
));
if
(
"https"
.
equals
(
protocolScheme
)
&&
isSecurityHttpsCertificateTrust
)
{
if
(
"https"
.
equals
(
protocolScheme
)
&&
isSecurityHttpsCertificateTrust
)
{
log
.
warning
(
"Elastic client connection uses TrustSelfSignedStrategy()"
);
log
.
warning
(
"Elastic client connection uses TrustSelfSignedStrategy()"
);
SSLContext
sslContext
=
createSSLContext
();
SSLContext
sslContext
=
createSSLContext
();
builder
.
setHttpClientConfigCallback
(
httpClientBuilder
->
builder
.
setHttpClientConfigCallback
(
httpClientBuilder
->
{
{
HttpAsyncClientBuilder
httpAsyncClientBuilder
=
httpClientBuilder
.
setSSLContext
(
sslContext
)
HttpAsyncClientBuilder
httpAsyncClientBuilder
=
httpClientBuilder
.
setSSLContext
(
sslContext
)
.
setSSLHostnameVerifier
(
.
setSSLHostnameVerifier
(
NoopHostnameVerifier
.
INSTANCE
);
NoopHostnameVerifier
.
INSTANCE
);
return
httpAsyncClientBuilder
;
return
httpAsyncClientBuilder
;
});
});
}
}
builder
.
setDefaultHeaders
(
defaultHeaders
);
builder
.
setDefaultHeaders
(
defaultHeaders
);
return
builder
;
return
builder
;
}
}
private
SSLContext
createSSLContext
()
{
private
SSLContext
createSSLContext
()
{
SSLContextBuilder
sslContextBuilder
=
new
SSLContextBuilder
();
SSLContextBuilder
sslContextBuilder
=
new
SSLContextBuilder
();
try
{
try
{
sslContextBuilder
.
loadTrustMaterial
(
null
,
new
TrustSelfSignedStrategy
());
sslContextBuilder
.
loadTrustMaterial
(
null
,
new
TrustSelfSignedStrategy
());
return
sslContextBuilder
.
build
();
return
sslContextBuilder
.
build
();
}
catch
(
NoSuchAlgorithmException
e
)
{
}
catch
(
NoSuchAlgorithmException
e
)
{
log
.
severe
(
e
.
getMessage
());
log
.
severe
(
e
.
getMessage
());
}
catch
(
KeyStoreException
e
)
{
}
catch
(
KeyStoreException
e
)
{
log
.
severe
(
e
.
getMessage
());
log
.
severe
(
e
.
getMessage
());
}
catch
(
KeyManagementException
e
)
{
}
catch
(
KeyManagementException
e
)
{
log
.
severe
(
e
.
getMessage
());
log
.
severe
(
e
.
getMessage
());
}
}
return
null
;
return
null
;
}
}
public
Boolean
isSecurityHttpsCertificateTrust
()
{
public
Boolean
isSecurityHttpsCertificateTrust
()
{
return
isSecurityHttpsCertificateTrust
;
return
isSecurityHttpsCertificateTrust
;
}
}
public
void
setSecurityHttpsCertificateTrust
(
Boolean
isSecurityHttpsCertificateTrust
)
{
public
void
setSecurityHttpsCertificateTrust
(
Boolean
isSecurityHttpsCertificateTrust
)
{
this
.
isSecurityHttpsCertificateTrust
=
isSecurityHttpsCertificateTrust
;
this
.
isSecurityHttpsCertificateTrust
=
isSecurityHttpsCertificateTrust
;
}
}
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment