Merge pull request #3411 from neilsb/system-plugin-removal

Prevent system plugins from being uninstalled
This commit is contained in:
Bond-009 2020-06-22 15:23:35 +02:00 committed by GitHub
commit 464066f362
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 1 deletions

View File

@ -406,6 +406,12 @@ namespace Emby.Server.Implementations.Updates
/// <param name="plugin">The plugin.</param>
public void UninstallPlugin(IPlugin plugin)
{
if (!plugin.CanUninstall)
{
_logger.LogWarning("Attempt to delete non removable plugin {0}, ignoring request", plugin.Name);
return;
}
plugin.OnUninstalling();
// Remove it the quick way for now

View File

@ -2,6 +2,7 @@
using System;
using System.IO;
using System.Reflection;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Model.Plugins;
using MediaBrowser.Model.Serialization;
@ -49,6 +50,12 @@ namespace MediaBrowser.Common.Plugins
/// <value>The data folder path.</value>
public string DataFolderPath { get; private set; }
/// <summary>
/// Gets a value indicating whether the plugin can be uninstalled.
/// </summary>
public bool CanUninstall => !Path.GetDirectoryName(AssemblyFilePath)
.Equals(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), StringComparison.InvariantCulture);
/// <summary>
/// Gets the plugin info.
/// </summary>
@ -60,7 +67,8 @@ namespace MediaBrowser.Common.Plugins
Name = Name,
Version = Version.ToString(),
Description = Description,
Id = Id.ToString()
Id = Id.ToString(),
CanUninstall = CanUninstall
};
return info;

View File

@ -40,6 +40,11 @@ namespace MediaBrowser.Common.Plugins
/// <value>The assembly file path.</value>
string AssemblyFilePath { get; }
/// <summary>
/// Gets a value indicating whether the plugin can be uninstalled.
/// </summary>
bool CanUninstall { get; }
/// <summary>
/// Gets the full path to the data folder, where the plugin can store any miscellaneous files needed.
/// </summary>

View File

@ -35,6 +35,12 @@ namespace MediaBrowser.Model.Plugins
/// </summary>
/// <value>The unique id.</value>
public string Id { get; set; }
/// <summary>
/// Gets or sets a value indicating whether the plugin can be uninstalled.
/// </summary>
public bool CanUninstall { get; set; }
/// <summary>
/// Gets or sets the image URL.
/// </summary>