use NetworkUtils instead of InetAddress.getLocalHost
Prior to this commit, we were InetAddress.getLocalHost() to get the hostname and host address when auditing. This is different than how we report the node's hostname and host address in other places where we use NetworkUtils. This caused false failures to be seen with the IndexAuditTrail tests. This commit switches the audit trails to use the NetworkUtils methods. Closes elastic/elasticsearch#285 Original commit: elastic/x-pack-elasticsearch@c0bd7e94f6
This commit is contained in:
parent
ed6f38b3b0
commit
3713b3dfdd
|
@ -237,16 +237,8 @@ public class IndexAuditTrail extends AbstractComponent implements AuditTrail {
|
||||||
*/
|
*/
|
||||||
public void start(boolean master) {
|
public void start(boolean master) {
|
||||||
if (state.compareAndSet(State.INITIALIZED, State.STARTING)) {
|
if (state.compareAndSet(State.INITIALIZED, State.STARTING)) {
|
||||||
String hostname = "n/a";
|
this.nodeHostName = NetworkUtils.getLocalHostName("n/a");
|
||||||
String hostaddr = "n/a";
|
this.nodeHostAddress = NetworkUtils.getLocalHostAddress("n/a");
|
||||||
try {
|
|
||||||
hostname = InetAddress.getLocalHost().getHostName();
|
|
||||||
hostaddr = InetAddress.getLocalHost().getHostAddress();
|
|
||||||
} catch (UnknownHostException e) {
|
|
||||||
logger.warn("unable to resolve local host name", e);
|
|
||||||
}
|
|
||||||
this.nodeHostName = hostname;
|
|
||||||
this.nodeHostAddress = hostaddr;
|
|
||||||
|
|
||||||
if (client == null) {
|
if (client == null) {
|
||||||
initializeClient();
|
initializeClient();
|
||||||
|
|
|
@ -24,7 +24,6 @@ import org.elasticsearch.transport.TransportRequest;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.UnknownHostException;
|
|
||||||
|
|
||||||
import static org.elasticsearch.common.Strings.arrayToCommaDelimitedString;
|
import static org.elasticsearch.common.Strings.arrayToCommaDelimitedString;
|
||||||
import static org.elasticsearch.shield.audit.AuditUtil.indices;
|
import static org.elasticsearch.shield.audit.AuditUtil.indices;
|
||||||
|
@ -274,19 +273,15 @@ public class LoggingAuditTrail implements AuditTrail {
|
||||||
static String resolvePrefix(Settings settings) {
|
static String resolvePrefix(Settings settings) {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
if (settings.getAsBoolean("shield.audit.logfile.prefix.emit_node_host_address", false)) {
|
if (settings.getAsBoolean("shield.audit.logfile.prefix.emit_node_host_address", false)) {
|
||||||
try {
|
String address = NetworkUtils.getLocalHostAddress(null);
|
||||||
String address = InetAddress.getLocalHost().getHostAddress();
|
if (address != null) {
|
||||||
builder.append("[").append(address).append("] ");
|
builder.append("[").append(address).append("] ");
|
||||||
} catch (UnknownHostException e) {
|
|
||||||
// ignore
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (settings.getAsBoolean("shield.audit.logfile.prefix.emit_node_host_name", false)) {
|
if (settings.getAsBoolean("shield.audit.logfile.prefix.emit_node_host_name", false)) {
|
||||||
try {
|
String hostName = NetworkUtils.getLocalHostName(null);
|
||||||
String hostName = InetAddress.getLocalHost().getHostName();
|
if (hostName != null) {
|
||||||
builder.append("[").append(hostName).append("] ");
|
builder.append("[").append(hostName).append("] ");
|
||||||
} catch (UnknownHostException e) {
|
|
||||||
// ignore
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (settings.getAsBoolean("shield.audit.logfile.prefix.emit_node_name", true)) {
|
if (settings.getAsBoolean("shield.audit.logfile.prefix.emit_node_name", true)) {
|
||||||
|
|
|
@ -14,6 +14,7 @@ import org.elasticsearch.action.search.SearchResponse;
|
||||||
import org.elasticsearch.action.support.IndicesOptions;
|
import org.elasticsearch.action.support.IndicesOptions;
|
||||||
import org.elasticsearch.client.Client;
|
import org.elasticsearch.client.Client;
|
||||||
import org.elasticsearch.common.inject.util.Providers;
|
import org.elasticsearch.common.inject.util.Providers;
|
||||||
|
import org.elasticsearch.common.network.NetworkUtils;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
||||||
import org.elasticsearch.common.transport.LocalTransportAddress;
|
import org.elasticsearch.common.transport.LocalTransportAddress;
|
||||||
|
@ -586,8 +587,8 @@ public class IndexAuditTrailTests extends ShieldIntegrationTest {
|
||||||
DateTime dateTime = ISODateTimeFormat.dateTimeParser().withZoneUTC().parseDateTime((String) hit.field("@timestamp").getValue());
|
DateTime dateTime = ISODateTimeFormat.dateTimeParser().withZoneUTC().parseDateTime((String) hit.field("@timestamp").getValue());
|
||||||
assertThat(dateTime.isBefore(DateTime.now(DateTimeZone.UTC)), is(true));
|
assertThat(dateTime.isBefore(DateTime.now(DateTimeZone.UTC)), is(true));
|
||||||
|
|
||||||
assertThat(clusterService().localNode().getHostName(), equalTo(hit.field("node_host_name").getValue()));
|
assertThat(NetworkUtils.getLocalHostName("n/a"), equalTo(hit.field("node_host_name").getValue()));
|
||||||
assertThat(clusterService().localNode().getHostAddress(), equalTo(hit.field("node_host_address").getValue()));
|
assertThat(NetworkUtils.getLocalHostAddress("n/a"), equalTo(hit.field("node_host_address").getValue()));
|
||||||
|
|
||||||
assertEquals(layer, hit.field("layer").getValue());
|
assertEquals(layer, hit.field("layer").getValue());
|
||||||
assertEquals(type, hit.field("event_type").getValue());
|
assertEquals(type, hit.field("event_type").getValue());
|
||||||
|
|
Loading…
Reference in New Issue