mirror of
https://github.com/tgstation/tgstation-server.git
synced 2026-08-22 20:47:28 +01:00
Empty User-Agents are still invalid
This commit is contained in:
@@ -144,6 +144,10 @@ namespace Tgstation.Server.Api
|
||||
if (!requestHeaders.Headers.TryGetValue(HeaderNames.UserAgent, out var userAgentValues) || userAgentValues.Count == 0)
|
||||
throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Missing {0} headers!", HeaderNames.UserAgent));
|
||||
|
||||
RawUserAgent = userAgentValues.First();
|
||||
if (String.IsNullOrWhiteSpace(RawUserAgent))
|
||||
throw new InvalidOperationException("Malformed client User-Agent!");
|
||||
|
||||
// make sure the api header matches ours
|
||||
if (!requestHeaders.Headers.TryGetValue(ApiVersionHeader, out var apiUserAgentHeaderValues) || !ProductInfoHeaderValue.TryParse(apiUserAgentHeaderValues.FirstOrDefault(), out var apiUserAgent) || apiUserAgent.Product.Name != AssemblyName.Name)
|
||||
throw new InvalidOperationException("Missing API version!");
|
||||
@@ -152,7 +156,6 @@ namespace Tgstation.Server.Api
|
||||
throw new InvalidOperationException("Malformed API version!");
|
||||
|
||||
ApiVersion = apiVersion;
|
||||
RawUserAgent = userAgentValues.First();
|
||||
|
||||
if (!requestHeaders.Headers.TryGetValue(HeaderNames.Authorization, out StringValues authorization))
|
||||
throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, "Missing {0} header!", HeaderNames.Authorization));
|
||||
|
||||
@@ -30,11 +30,13 @@ namespace Tgstation.Server.Api.Tests
|
||||
|
||||
ApiHeaders TestHeader(string userAgent)
|
||||
{
|
||||
var headers = new HeaderDictionary();
|
||||
headers.Add("Accept", ApiHeaders.ApplicationJson);
|
||||
headers.Add("Api", "Tgstation.Server.Api/4.0.0.0");
|
||||
headers.Add("Authorization", "Bearer asdfasdf");
|
||||
headers.Add("User-Agent", userAgent);
|
||||
var headers = new HeaderDictionary
|
||||
{
|
||||
{ "Accept", ApiHeaders.ApplicationJson },
|
||||
{ "Api", "Tgstation.Server.Api/4.0.0.0" },
|
||||
{ "Authorization", "Bearer asdfasdf" },
|
||||
{ "User-Agent", userAgent }
|
||||
};
|
||||
|
||||
return new ApiHeaders(new RequestHeaders(headers));
|
||||
};
|
||||
@@ -46,6 +48,8 @@ namespace Tgstation.Server.Api.Tests
|
||||
header = TestHeader(ConformantHeader);
|
||||
Assert.AreEqual(ConformantHeader, header.RawUserAgent);
|
||||
Assert.IsNotNull(header.UserAgent);
|
||||
|
||||
Assert.ThrowsException<InvalidOperationException>(() => TestHeader(String.Empty));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user