diff --git a/build/Version.props b/build/Version.props
index 1ff61da970..4223b9f4e7 100644
--- a/build/Version.props
+++ b/build/Version.props
@@ -4,7 +4,7 @@
5.13.1
- 4.7.0
+ 4.7.1
9.11.0
6.0.0
11.0.0
diff --git a/src/Tgstation.Server.Host/Configuration/ElasticsearchConfiguration.cs b/src/Tgstation.Server.Host/Configuration/ElasticsearchConfiguration.cs
index 07a3afd8e0..8c45f2e9f5 100644
--- a/src/Tgstation.Server.Host/Configuration/ElasticsearchConfiguration.cs
+++ b/src/Tgstation.Server.Host/Configuration/ElasticsearchConfiguration.cs
@@ -1,4 +1,6 @@
-namespace Tgstation.Server.Host.Configuration
+using System;
+
+namespace Tgstation.Server.Host.Configuration
{
///
/// Configuration options pertaining to elasticsearch log storage.
@@ -18,7 +20,7 @@
///
/// The host of the elasticsearch endpoint.
///
- public string Host { get; set; }
+ public Uri Host { get; set; }
///
/// Username for elasticsearch.
diff --git a/src/Tgstation.Server.Host/Core/Application.cs b/src/Tgstation.Server.Host/Core/Application.cs
index cada7d1b6c..2697896d5c 100644
--- a/src/Tgstation.Server.Host/Core/Application.cs
+++ b/src/Tgstation.Server.Host/Core/Application.cs
@@ -196,11 +196,7 @@ namespace Tgstation.Server.Host.Core
rollOnFileSizeLimit: true);
},
elasticsearchConfiguration.Enable
- ? new ElasticsearchSinkOptions(
- new Uri(
- String.IsNullOrWhiteSpace(elasticsearchConfiguration.Host)
- ? throw new InvalidOperationException($"Missing {ElasticsearchConfiguration.Section}:{nameof(elasticsearchConfiguration.Host)}!")
- : elasticsearchConfiguration.Host))
+ ? new ElasticsearchSinkOptions(elasticsearchConfiguration.Host ?? throw new InvalidOperationException($"Missing {ElasticsearchConfiguration.Section}:{nameof(elasticsearchConfiguration.Host)}!"))
{
// Yes I know this means they cannot use a self signed cert unless they also have authentication, but lets be real here
// No one is going to be doing one of those but not the other
diff --git a/src/Tgstation.Server.Host/Setup/SetupWizard.cs b/src/Tgstation.Server.Host/Setup/SetupWizard.cs
index 762d0c8aa9..d83aeeb11c 100644
--- a/src/Tgstation.Server.Host/Setup/SetupWizard.cs
+++ b/src/Tgstation.Server.Host/Setup/SetupWizard.cs
@@ -790,11 +790,17 @@ namespace Tgstation.Server.Host.Setup
do
{
await console.WriteAsync("ElasticSearch server endpoint (Include protocol and port, leave blank for http://127.0.0.1:9200): ", false, cancellationToken);
- elasticsearchConfiguration.Host = await console.ReadLineAsync(false, cancellationToken);
- if (!String.IsNullOrWhiteSpace(elasticsearchConfiguration.Host))
+ var hostString = await console.ReadLineAsync(false, cancellationToken);
+ if (String.IsNullOrWhiteSpace(hostString))
+ hostString = "http://127.0.0.1:9200";
+
+ if (Uri.TryCreate(hostString, UriKind.Absolute, out var host))
{
+ elasticsearchConfiguration.Host = host;
break;
}
+
+ await console.WriteAsync("Invalid URI!", true, cancellationToken);
}
while (true);
@@ -803,9 +809,7 @@ namespace Tgstation.Server.Host.Setup
await console.WriteAsync("Enter Elasticsearch username: ", false, cancellationToken);
elasticsearchConfiguration.Username = await console.ReadLineAsync(false, cancellationToken);
if (!String.IsNullOrWhiteSpace(elasticsearchConfiguration.Username))
- {
break;
- }
}
while (true);
@@ -814,9 +818,7 @@ namespace Tgstation.Server.Host.Setup
await console.WriteAsync("Enter password: ", false, cancellationToken);
elasticsearchConfiguration.Password = await console.ReadLineAsync(true, cancellationToken);
if (!String.IsNullOrWhiteSpace(elasticsearchConfiguration.Username))
- {
break;
- }
}
while (true);
}
diff --git a/tests/Tgstation.Server.Host.Tests/Setup/TestSetupWizard.cs b/tests/Tgstation.Server.Host.Tests/Setup/TestSetupWizard.cs
index 91dacecda9..7ad15d9ad0 100644
--- a/tests/Tgstation.Server.Host.Tests/Setup/TestSetupWizard.cs
+++ b/tests/Tgstation.Server.Host.Tests/Setup/TestSetupWizard.cs
@@ -200,7 +200,12 @@ namespace Tgstation.Server.Host.Setup.Tests
//logging config
"no",
// elasticsearch config
- "n", // were not validating this travesty in CI
+ "y",
+ String.Empty,
+ String.Empty,
+ "user",
+ String.Empty,
+ "pass",
//cp config
"y",
"y",
@@ -267,7 +272,11 @@ namespace Tgstation.Server.Host.Setup.Tests
"None",
"Critical",
// elasticsearch config
- "n", // were not validating this travesty in CI
+ "y",
+ "bad url",
+ "http://localhost:929",
+ "user",
+ "pass",
//cp config
"y",
"n",