diff --git a/MediaBrowser.Api/PluginService.cs b/MediaBrowser.Api/PluginService.cs
index 29cc7baf8..d6c854734 100644
--- a/MediaBrowser.Api/PluginService.cs
+++ b/MediaBrowser.Api/PluginService.cs
@@ -7,12 +7,12 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Plugins;
using MediaBrowser.Model.Serialization;
using ServiceStack;
+using ServiceStack.Text.Controller;
+using ServiceStack.Web;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
-using ServiceStack.Text.Controller;
-using ServiceStack.Web;
namespace MediaBrowser.Api
{
@@ -190,8 +190,7 @@ namespace MediaBrowser.Api
var result = new PluginSecurityInfo
{
IsMBSupporter = _securityManager.IsMBSupporter,
- SupporterKey = _securityManager.SupporterKey,
- LegacyKey = _securityManager.LegacyKey
+ SupporterKey = _securityManager.SupporterKey
};
return ToOptimizedSerializedResultUsingCache(result);
@@ -206,7 +205,6 @@ namespace MediaBrowser.Api
var info = request;
_securityManager.SupporterKey = info.SupporterKey;
- _securityManager.LegacyKey = info.LegacyKey;
}
///
diff --git a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
index abb2f2089..2af671a6a 100644
--- a/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
+++ b/MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
@@ -99,7 +99,6 @@
-
@@ -135,4 +134,4 @@ xcopy "$(TargetPath)" "$(SolutionDir)\Nuget\dlls\" /y /d /r /i
-->
-
+
\ No newline at end of file
diff --git a/MediaBrowser.Common.Implementations/Security/MBRegistration.cs b/MediaBrowser.Common.Implementations/Security/MBRegistration.cs
deleted file mode 100644
index dbb1b13e1..000000000
--- a/MediaBrowser.Common.Implementations/Security/MBRegistration.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Net;
-using MediaBrowser.Model.Entities;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.Serialization;
-using System;
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Common.Implementations.Security
-{
- public static class MBRegistration
- {
-
- private static MBLicenseFile _licenseFile;
- private const string MBValidateUrl = Constants.Constants.MbAdminUrl + "service/registration/validate";
-
- private static IApplicationPaths _appPaths;
- private static INetworkManager _networkManager;
- private static ILogger _logger;
- private static IApplicationHost _applicationHost;
-
- private static MBLicenseFile LicenseFile
- {
- get { return _licenseFile ?? (_licenseFile = new MBLicenseFile(_appPaths)); }
- }
-
- public static string SupporterKey
- {
- get { return LicenseFile.RegKey; }
- set { LicenseFile.RegKey = value; LicenseFile.Save(); }
- }
-
- public static string LegacyKey
- {
- get { return LicenseFile.LegacyKey; }
- set { LicenseFile.LegacyKey = value; LicenseFile.Save(); }
- }
-
- public static void Init(IApplicationPaths appPaths, INetworkManager networkManager, ILogManager logManager, IApplicationHost appHost)
- {
- // Ugly alert (static init)
-
- _appPaths = appPaths;
- _networkManager = networkManager;
- _logger = logManager.GetLogger("SecurityManager");
- _applicationHost = appHost;
- }
-
- public static async Task GetRegistrationStatus(IHttpClient httpClient, IJsonSerializer jsonSerializer, string feature, string mb2Equivalent = null, string version = null)
- {
- //check the reg file first to alleviate strain on the MB admin server - must actually check in every 30 days tho
- var reg = new RegRecord { registered = LicenseFile.LastChecked(feature) > DateTime.UtcNow.AddDays(-30) };
- var success = reg.registered;
-
- if (!reg.registered)
- {
- var mac = _networkManager.GetMacAddress();
- var data = new Dictionary
- {
- { "feature", feature },
- { "key", SupporterKey },
- { "mac", mac },
- { "mb2equiv", mb2Equivalent },
- { "legacykey", LegacyKey },
- { "ver", version },
- { "platform", Environment.OSVersion.VersionString },
- { "isservice", _applicationHost.IsRunningAsService.ToString().ToLower() }
- };
-
- try
- {
- using (var json = await httpClient.Post(MBValidateUrl, data, CancellationToken.None).ConfigureAwait(false))
- {
- reg = jsonSerializer.DeserializeFromStream(json);
- success = true;
- }
-
- if (reg.registered)
- {
- LicenseFile.AddRegCheck(feature);
- }
- else
- {
- LicenseFile.RemoveRegCheck(feature);
- }
-
- }
- catch (Exception e)
- {
- _logger.ErrorException("Error checking registration status of {0}", e, feature);
- }
- }
-
- return new MBRegistrationRecord { IsRegistered = reg.registered, ExpirationDate = reg.expDate, RegChecked = true, RegError = !success};
- }
- }
-}
diff --git a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs
index d0b108c7d..b464baffc 100644
--- a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs
+++ b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs
@@ -17,6 +17,8 @@ namespace MediaBrowser.Common.Implementations.Security
///
public class PluginSecurityManager : ISecurityManager
{
+ private const string MBValidateUrl = Constants.Constants.MbAdminUrl + "service/registration/validate";
+
///
/// The _is MB supporter
///
@@ -38,16 +40,23 @@ namespace MediaBrowser.Common.Implementations.Security
{
get
{
- LazyInitializer.EnsureInitialized(ref _isMbSupporter, ref _isMbSupporterInitialized, ref _isMbSupporterSyncLock, () => GetRegistrationStatus("MBSupporter", null, _appHost.ApplicationVersion.ToString()).Result.IsRegistered);
+ LazyInitializer.EnsureInitialized(ref _isMbSupporter, ref _isMbSupporterInitialized, ref _isMbSupporterSyncLock, () => GetSupporterRegistrationStatus().Result.IsRegistered);
return _isMbSupporter.Value;
}
}
+ private MBLicenseFile _licenseFile;
+ private MBLicenseFile LicenseFile
+ {
+ get { return _licenseFile ?? (_licenseFile = new MBLicenseFile(_appPaths)); }
+ }
+
private readonly IHttpClient _httpClient;
private readonly IJsonSerializer _jsonSerializer;
private readonly IApplicationHost _appHost;
- private readonly IApplicationPaths _applciationPaths;
+ private readonly ILogger _logger;
private readonly INetworkManager _networkManager;
+ private readonly IApplicationPaths _appPaths;
private IEnumerable _registeredEntities;
protected IEnumerable RegisteredEntities
@@ -69,12 +78,12 @@ namespace MediaBrowser.Common.Implementations.Security
throw new ArgumentNullException("httpClient");
}
- _applciationPaths = appPaths;
- _networkManager = networkManager;
_appHost = appHost;
_httpClient = httpClient;
_jsonSerializer = jsonSerializer;
- MBRegistration.Init(_applciationPaths, _networkManager, logManager, _appHost);
+ _networkManager = networkManager;
+ _appPaths = appPaths;
+ _logger = logManager.GetLogger("SecurityManager");
}
///
@@ -97,9 +106,9 @@ namespace MediaBrowser.Common.Implementations.Security
/// The feature.
/// The MB2 equivalent.
/// Task{MBRegistrationRecord}.
- public async Task GetRegistrationStatus(string feature, string mb2Equivalent = null)
+ public Task GetRegistrationStatus(string feature, string mb2Equivalent = null)
{
- return await MBRegistration.GetRegistrationStatus(_httpClient, _jsonSerializer, feature, mb2Equivalent).ConfigureAwait(false);
+ return GetRegistrationStatusInternal(feature, mb2Equivalent);
}
///
@@ -109,9 +118,14 @@ namespace MediaBrowser.Common.Implementations.Security
/// The MB2 equivalent.
/// The version of this feature
/// Task{MBRegistrationRecord}.
- public async Task GetRegistrationStatus(string feature, string mb2Equivalent, string version)
+ public Task GetRegistrationStatus(string feature, string mb2Equivalent, string version)
{
- return await MBRegistration.GetRegistrationStatus(_httpClient, _jsonSerializer, feature, mb2Equivalent, version).ConfigureAwait(false);
+ return GetRegistrationStatusInternal(feature, mb2Equivalent, version);
+ }
+
+ public Task GetSupporterRegistrationStatus()
+ {
+ return GetRegistrationStatusInternal("MBSupporter", null, _appHost.ApplicationVersion.ToString());
}
///
@@ -122,40 +136,80 @@ namespace MediaBrowser.Common.Implementations.Security
{
get
{
- return MBRegistration.SupporterKey;
+ return LicenseFile.RegKey;
}
set
{
- if (value != MBRegistration.SupporterKey)
+ if (value != LicenseFile.RegKey)
{
- MBRegistration.SupporterKey = value;
+ LicenseFile.RegKey = value;
+ LicenseFile.Save();
+
// re-load registration info
Task.Run(() => LoadAllRegistrationInfo());
}
}
}
- ///
- /// Gets or sets the legacy key.
- ///
- /// The legacy key.
- public string LegacyKey
+ private async Task GetRegistrationStatusInternal(string feature,
+ string mb2Equivalent = null,
+ string version = null)
{
- get
+ //check the reg file first to alleviate strain on the MB admin server - must actually check in every 30 days tho
+ var reg = new RegRecord
{
- return MBRegistration.LegacyKey;
- }
- set
+ registered = LicenseFile.LastChecked(feature) > DateTime.UtcNow.AddDays(-15)
+ };
+
+ var success = reg.registered;
+
+ if (!reg.registered)
{
- if (value != MBRegistration.LegacyKey)
+ var mac = _networkManager.GetMacAddress();
+ var data = new Dictionary
{
- MBRegistration.LegacyKey = value;
- // re-load registration info
- Task.Run(() => LoadAllRegistrationInfo());
+ { "feature", feature },
+ { "key", SupporterKey },
+ { "mac", mac },
+ { "mb2equiv", mb2Equivalent },
+ { "ver", version },
+ { "platform", Environment.OSVersion.VersionString },
+ { "isservice", _appHost.IsRunningAsService.ToString().ToLower() }
+ };
+
+ try
+ {
+ using (var json = await _httpClient.Post(MBValidateUrl, data, CancellationToken.None).ConfigureAwait(false))
+ {
+ reg = _jsonSerializer.DeserializeFromStream(json);
+ success = true;
+ }
+
+ if (reg.registered)
+ {
+ LicenseFile.AddRegCheck(feature);
+ }
+ else
+ {
+ LicenseFile.RemoveRegCheck(feature);
+ }
+
+ }
+ catch (Exception e)
+ {
+ _logger.ErrorException("Error checking registration status of {0}", e, feature);
}
}
- }
+ return new MBRegistrationRecord
+ {
+ IsRegistered = reg.registered,
+ ExpirationDate = reg.expDate,
+ RegChecked = true,
+ RegError = !success
+ };
+ }
+
///
/// Resets the supporter info.
///
diff --git a/MediaBrowser.Common/Security/ISecurityManager.cs b/MediaBrowser.Common/Security/ISecurityManager.cs
index 1555f1d86..a23a786f2 100644
--- a/MediaBrowser.Common/Security/ISecurityManager.cs
+++ b/MediaBrowser.Common/Security/ISecurityManager.cs
@@ -1,5 +1,5 @@
-using System.Threading.Tasks;
using MediaBrowser.Model.Entities;
+using System.Threading.Tasks;
namespace MediaBrowser.Common.Security
{
@@ -17,18 +17,11 @@ namespace MediaBrowser.Common.Security
/// The supporter key.
string SupporterKey { get; set; }
- ///
- /// Gets or sets the legacy key.
- ///
- /// The legacy key.
- string LegacyKey { get; set; }
-
///
/// Gets the registration status. Overload to support existing plug-ins.
///
/// The feature.
/// The MB2 equivalent.
- /// The version of the feature
/// Task{MBRegistrationRecord}.
Task GetRegistrationStatus(string feature, string mb2Equivalent = null);
@@ -40,6 +33,7 @@ namespace MediaBrowser.Common.Security
/// The version of the feature
/// Task{MBRegistrationRecord}.
Task GetRegistrationStatus(string feature, string mb2Equivalent, string version);
+
///
/// Load all registration info for all entities that require registration
///
diff --git a/MediaBrowser.Model/Entities/PluginSecurityInfo.cs b/MediaBrowser.Model/Entities/PluginSecurityInfo.cs
index e338e43f8..5cab55013 100644
--- a/MediaBrowser.Model/Entities/PluginSecurityInfo.cs
+++ b/MediaBrowser.Model/Entities/PluginSecurityInfo.cs
@@ -12,12 +12,6 @@ namespace MediaBrowser.Model.Entities
/// The supporter key.
public string SupporterKey { get; set; }
- ///
- /// Gets or sets the legacy supporter key.
- ///
- /// The legacy supporter key
- public string LegacyKey { get; set; }
-
///
/// Gets or sets a value indicating whether this instance is MB supporter.
///