Your ROOT_URL in app.ini is https://git.cloudchain.link/ but you are visiting https://dash.bss.nz/open-source-mirrors/Lidarr/commit/f87a8fa9f5e084e1b19f88dd2d9e7b8715c5ea45
You should set ROOT_URL correctly, otherwise the web may not work correctly.
7 changed files with
42 additions and
3 deletions
@ -45,6 +45,7 @@ namespace Lidarr.Api.V1.Config
public string BackupFolder { get ; set ; }
public int BackupInterval { get ; set ; }
public int BackupRetention { get ; set ; }
public bool TrustCgnatIpAddresses { get ; set ; }
}
public static class HostConfigResourceMapper
@ -27,10 +27,13 @@ namespace NzbDrone.Http.Authentication
if ( _authenticationRequired = = AuthenticationRequiredType . DisabledForLocalAddresses )
{
if ( context . Resource is HttpContext httpContext & &
IPAddress . TryParse ( httpContext . GetRemoteIP ( ) , out var ipAddress ) & &
ipAddress . IsLocalAddress ( ) )
IPAddress . TryParse ( httpContext . GetRemoteIP ( ) , out var ipAddress ) )
{
context . Succeed ( requirement ) ;
if ( ipAddress . IsLocalAddress ( ) | |
( _configService . TrustCgnatIpAddresses & & ipAddress . IsCgnatIpAddress ( ) ) )
{
context . Succeed ( requirement ) ;
}
}
}
@ -21,9 +21,28 @@ namespace NzbDrone.Common.Test.ExtensionTests
[TestCase("1.2.3.4")]
[TestCase("172.55.0.1")]
[TestCase("192.55.0.1")]
[TestCase("100.64.0.1")]
[TestCase("100.127.255.254")]
public void should_return_false_for_public_ip_address ( string ipAddress )
{
IPAddress . Parse ( ipAddress ) . IsLocalAddress ( ) . Should ( ) . BeFalse ( ) ;
}
[TestCase("100.64.0.1")]
[TestCase("100.127.255.254")]
[TestCase("100.100.100.100")]
public void should_return_true_for_cgnat_ip_address ( string ipAddress )
{
IPAddress . Parse ( ipAddress ) . IsCgnatIpAddress ( ) . Should ( ) . BeTrue ( ) ;
}
[TestCase("1.2.3.4")]
[TestCase("192.168.5.1")]
[TestCase("100.63.255.255")]
[TestCase("100.128.0.0")]
public void should_return_false_for_non_cgnat_ip_address ( string ipAddress )
{
IPAddress . Parse ( ipAddress ) . IsCgnatIpAddress ( ) . Should ( ) . BeFalse ( ) ;
}
}
}
@ -52,5 +52,11 @@ namespace NzbDrone.Common.Extensions
return isLinkLocal | | isClassA | | isClassC | | isClassB ;
}
public static bool IsCgnatIpAddress ( this IPAddress ipAddress )
{
var bytes = ipAddress . GetAddressBytes ( ) ;
return bytes . Length = = 4 & & bytes [ 0 ] = = 100 & & bytes [ 1 ] > = 64 & & bytes [ 1 ] < = 127 ;
}
}
}
@ -6,4 +6,5 @@ public class AuthOptions
public bool? Enabled { get ; set ; }
public string Method { get ; set ; }
public string Required { get ; set ; }
public bool? TrustCgnatIpAddresses { get ; set ; }
}
@ -64,6 +64,7 @@ namespace NzbDrone.Core.Configuration
string PostgresPassword { get ; }
string PostgresMainDb { get ; }
string PostgresLogDb { get ; }
bool TrustCgnatIpAddresses { get ; }
}
public class ConfigFileProvider : IConfigFileProvider
@ -470,5 +471,7 @@ namespace NzbDrone.Core.Configuration
{
SetValue ( "ApiKey" , GenerateApiKey ( ) ) ;
}
public bool TrustCgnatIpAddresses = > _authOptions . TrustCgnatIpAddresses ? ? GetValueBoolean ( "TrustCgnatIpAddresses" , false , persist : false ) ;
}
}
@ -426,6 +426,12 @@ namespace NzbDrone.Core.Configuration
public string ApplicationUrl = > GetValue ( "ApplicationUrl" , string . Empty ) ;
public bool TrustCgnatIpAddresses
{
get { return GetValueBoolean ( "TrustCgnatIpAddresses" , false ) ; }
set { SetValue ( "TrustCgnatIpAddresses" , value ) ; }
}
private string GetValue ( string key )
{
return GetValue ( key , string . Empty ) ;