2017-10-02 03:05:28 +00:00
using System ;
2014-08-28 17:35:23 +00:00
using System.Linq ;
using System.Reflection ;
2014-03-14 10:15:30 +00:00
using NLog ;
using NzbDrone.Common.EnvironmentInfo ;
namespace NzbDrone.Core.HealthCheck.Checks
{
2014-04-10 00:15:13 +00:00
public class MonoVersionCheck : HealthCheckBase
2014-03-14 10:15:30 +00:00
{
2017-01-04 02:36:47 +00:00
private readonly IPlatformInfo _platformInfo ;
2014-03-14 10:15:30 +00:00
private readonly Logger _logger ;
2017-01-04 02:36:47 +00:00
public MonoVersionCheck ( IPlatformInfo platformInfo , Logger logger )
2014-03-14 10:15:30 +00:00
{
2017-01-04 02:36:47 +00:00
_platformInfo = platformInfo ;
2014-03-14 10:15:30 +00:00
_logger = logger ;
}
2014-04-10 00:15:13 +00:00
public override HealthCheck Check ( )
2014-03-14 10:15:30 +00:00
{
2017-01-04 02:36:47 +00:00
if ( ! PlatformInfo . IsMono )
2014-03-14 10:15:30 +00:00
{
2014-04-10 00:15:13 +00:00
return new HealthCheck ( GetType ( ) ) ;
2014-03-14 10:15:30 +00:00
}
2017-01-04 02:36:47 +00:00
var monoVersion = _platformInfo . Version ;
2014-03-14 10:15:30 +00:00
2018-01-26 03:01:53 +00:00
if ( monoVersion = = new Version ( "4.4" ) | | monoVersion = = new Version ( "4.4.1" ) )
2017-01-04 02:36:47 +00:00
{
_logger . Debug ( "Mono version {0}" , monoVersion ) ;
2017-10-02 03:05:28 +00:00
return new HealthCheck ( GetType ( ) , HealthCheckResult . Error , $"Your Mono version {monoVersion} has a bug that causes issues connecting to indexers/download clients. You should upgrade to a higher version" ) ;
2017-01-04 02:36:47 +00:00
}
2017-10-02 03:05:28 +00:00
if ( monoVersion > = new Version ( "4.4" ) )
2017-01-04 02:36:47 +00:00
{
2018-01-26 03:01:53 +00:00
_logger . Debug ( "Mono version is 4.4 or better: {0}" , monoVersion ) ;
2017-01-04 02:36:47 +00:00
return new HealthCheck ( GetType ( ) ) ;
}
return new HealthCheck ( GetType ( ) , HealthCheckResult . Warning , "You are running an old and unsupported version of Mono. Please upgrade Mono for improved stability." ) ;
2014-04-10 00:15:13 +00:00
}
2016-12-09 06:54:15 +00:00
public override bool CheckOnSchedule = > false ;
2014-08-28 17:35:23 +00:00
2014-03-14 10:15:30 +00:00
}
2017-10-02 03:05:28 +00:00
}