Merge master in develop (#55)

* Fix reachable and IP leak test (#44)

* Fix reachable check

Fixes failing reachable checks when Basic Authentication is enabled in
Sonarr, Radarr, etc.

* Add option to disable IP leak test

* Revert "Fix reachable and IP leak test (#44)" (#46)

This reverts commit 3f5d7bbef3.

* Release 0.6.1 (#48)

* Fix typo

* Fix typos

* Fix typos

* Fix typo

* Clarify error message

* Fix reachable and ipleak test (#47)

* Fix reachable check

Fixes failing reachable checks when Basic Authentication is enabled in
Sonarr, Radarr, etc.

* Add option to disable IP leak test

---------

Co-authored-by: Jonas F <github@pcjones.de>

* Add IpLeakTest environment variable to docker compose

---------

Co-authored-by: akuntsch <github@akuntsch.de>

* Create Dockerfile.arm64

---------

Co-authored-by: akuntsch <github@akuntsch.de>
This commit is contained in:
Jonas F
2025-01-13 18:49:26 +01:00
committed by GitHub
parent 17456c6f90
commit e117826c6a
4 changed files with 43 additions and 32 deletions

11
Dockerfile.arm64 Normal file
View File

@@ -0,0 +1,11 @@
FROM --platform=linux/arm64 mcr.microsoft.com/dotnet/sdk:8.0 AS build-env
WORKDIR /app
COPY . ./
RUN dotnet restore
RUN dotnet publish -c Release -o out
FROM --platform=linux/arm64 mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "UmlautAdaptarr.dll"]

View File

@@ -68,7 +68,7 @@ public static class ServicesExtensions
Console.WriteLine(($"Property {failure.PropertyName } failed validation. Error was: {failure.ErrorMessage}")); Console.WriteLine(($"Property {failure.PropertyName } failed validation. Error was: {failure.ErrorMessage}"));
} }
throw new Exception("Please fix your environment variables and then Start UmlautAdaptarr again"); throw new Exception("Please fix cour environment variables and then Start UmlautAdaptarr again");
} }
var instanceState = (bool)(typeof(TOptions).GetProperty("Enabled")?.GetValue(option, null) ?? false); var instanceState = (bool)(typeof(TOptions).GetProperty("Enabled")?.GetValue(option, null) ?? false);

View File

@@ -35,38 +35,38 @@ public class GlobalInstanceOptionsValidator : AbstractValidator<GlobalInstanceOp
&& (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
} }
private static async Task<bool> BeReachable(GlobalInstanceOptions opts, CancellationToken cancellationToken) private static async Task<bool> BeReachable(GlobalInstanceOptions opts, CancellationToken cancellationToken)
{ {
var endTime = DateTime.Now.AddMinutes(3); var endTime = DateTime.Now.AddMinutes(3);
var reachable = false; var reachable = false;
var url = $"{opts.Host}/api?apikey={opts.ApiKey}"; var url = $"{opts.Host}/api?apikey={opts.ApiKey}";
while (DateTime.Now < endTime) while (DateTime.Now < endTime)
{ {
try try
{ {
using var response = await httpClient.GetAsync(url, cancellationToken); using var response = await httpClient.GetAsync(url, cancellationToken);
if (response.IsSuccessStatusCode) if (response.IsSuccessStatusCode)
{ {
reachable = true; reachable = true;
break; break;
} }
else else
{ {
Console.WriteLine($"Reachable check got unexpected status code {response.StatusCode}."); Console.WriteLine($"Reachable check got unexpected status code {response.StatusCode}.");
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
} }
// Wait for 15 seconds for next try // Wait for 15 seconds for next try
Console.WriteLine($"The URL \"{opts.Host}/api?apikey=[REDACTED]\" is not reachable. Next attempt in 15 seconds..."); Console.WriteLine($"The URL \"{opts.Host}/api?apikey=[REDACTED]\" is not reachable. Next attempt in 15 seconds...");
Thread.Sleep(15000); Thread.Sleep(15000);
} }
return reachable; return reachable;
} }
} }

View File

@@ -23,7 +23,7 @@ services:
- LIDARR__ENABLED=false - LIDARR__ENABLED=false
- LIDARR__HOST=http://localhost:8686 - LIDARR__HOST=http://localhost:8686
- LIDARR__APIKEY=APIKEY - LIDARR__APIKEY=APIKEY
#- IpLeakTest_Enabled=false # uncomment and set to true to enable IP leak test #- IpLeakTest__Enabled=false # uncomment and set to true to enable IP leak test
### example for multiple instances of same type ### example for multiple instances of same type
#- SONARR__0__NAME=NAME 1 (optional) #- SONARR__0__NAME=NAME 1 (optional)
#- SONARR__0__ENABLED=false #- SONARR__0__ENABLED=false