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",