mirror of
https://github.com/Jackett/Jackett
synced 2025-02-21 22:07:10 +00:00
Make Mono.Posix usage conditional on .NET Core
This commit is contained in:
parent
a5f0e2b5db
commit
a25f2016dc
7 changed files with 71 additions and 23 deletions
|
@ -19,7 +19,6 @@
|
|||
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.CSharp" Version="4.5.0" />
|
||||
<PackageReference Include="MimeMapping" Version="1.0.1.12" />
|
||||
<!--<PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" />-->
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
|
||||
<PackageReference Include="NLog" Version="4.5.11" />
|
||||
<PackageReference Include="SharpZipLib" Version="1.1.0" />
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
namespace Jackett.Common.Services.Interfaces
|
||||
{
|
||||
public interface IFilePermissionService
|
||||
{
|
||||
void MakeFileExecutable(string path);
|
||||
}
|
||||
}
|
|
@ -17,7 +17,6 @@ using Jackett.Common.Models.GitHub;
|
|||
using Jackett.Common.Services.Interfaces;
|
||||
using Jackett.Common.Utils;
|
||||
using Jackett.Common.Utils.Clients;
|
||||
//using Mono.Posix;
|
||||
using Newtonsoft.Json;
|
||||
using NLog;
|
||||
|
||||
|
@ -33,11 +32,12 @@ namespace Jackett.Common.Services
|
|||
ITrayLockService lockService;
|
||||
IProcessService processService;
|
||||
IServiceConfigService windowsService;
|
||||
IFilePermissionService filePermissionService;
|
||||
private ServerConfig serverConfig;
|
||||
bool forceupdatecheck = false;
|
||||
Variants.JackettVariant variant = Variants.JackettVariant.NotFound;
|
||||
|
||||
public UpdateService(Logger l, WebClient c, IConfigurationService cfg, ITrayLockService ls, IProcessService ps, IServiceConfigService ws, ServerConfig sc)
|
||||
public UpdateService(Logger l, WebClient c, IConfigurationService cfg, ITrayLockService ls, IProcessService ps, IServiceConfigService ws, IFilePermissionService fps, ServerConfig sc)
|
||||
{
|
||||
logger = l;
|
||||
client = c;
|
||||
|
@ -46,6 +46,7 @@ namespace Jackett.Common.Services
|
|||
processService = ps;
|
||||
windowsService = ws;
|
||||
serverConfig = sc;
|
||||
filePermissionService = fps;
|
||||
}
|
||||
|
||||
private string ExePath()
|
||||
|
@ -290,29 +291,20 @@ namespace Jackett.Common.Services
|
|||
gzipStream.Close();
|
||||
inStream.Close();
|
||||
|
||||
//Disabled as the Mono.Posix.NETStandard library causes issues outside of .NET Core
|
||||
//https://github.com/xamarin/XamarinComponents/issues/282
|
||||
//if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreLinuxAmdx64
|
||||
//|| variant == Variants.JackettVariant.CoreLinuxArm32 || variant == Variants.JackettVariant.CoreLinuxArm64)
|
||||
//{
|
||||
// // When the files get extracted, the execute permission for jackett and JackettUpdater don't get carried across
|
||||
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreLinuxAmdx64
|
||||
|| variant == Variants.JackettVariant.CoreLinuxArm32 || variant == Variants.JackettVariant.CoreLinuxArm64)
|
||||
{
|
||||
//Calling the file permission service to limit usage to netcoreapp. The Mono.Posix.NETStandard library causes issues outside of .NET Core
|
||||
//https://github.com/xamarin/XamarinComponents/issues/282
|
||||
|
||||
// string jackettPath = tempDir + "/Jackett/jackett";
|
||||
// logger.Debug($"Giving execute permission to jackett from: {jackettPath}");
|
||||
// When the files get extracted, the execute permission for jackett and JackettUpdater don't get carried across
|
||||
|
||||
// UnixFileInfo jackettFI = new UnixFileInfo(jackettPath)
|
||||
// {
|
||||
// FileAccessPermissions = FileAccessPermissions.UserReadWriteExecute | FileAccessPermissions.GroupRead | FileAccessPermissions.OtherRead
|
||||
// };
|
||||
string jackettPath = tempDir + "/Jackett/jackett";
|
||||
filePermissionService.MakeFileExecutable(jackettPath);
|
||||
|
||||
// string jackettUpdaterPath = tempDir + "/Jackett/JackettUpdater";
|
||||
// logger.Debug($"Giving execute permission to JackettUpdater from: {jackettUpdaterPath}");
|
||||
|
||||
// UnixFileInfo jackettUpdaterFI = new UnixFileInfo(jackettUpdaterPath)
|
||||
// {
|
||||
// FileAccessPermissions = FileAccessPermissions.UserReadWriteExecute | FileAccessPermissions.GroupRead | FileAccessPermissions.OtherRead
|
||||
// };
|
||||
//}
|
||||
string jackettUpdaterPath = tempDir + "/Jackett/JackettUpdater";
|
||||
filePermissionService.MakeFileExecutable(jackettUpdaterPath);
|
||||
}
|
||||
}
|
||||
|
||||
return tempDir;
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
|
||||
<!-- Conditionally obtain references for the .NET Core App 2.2 target -->
|
||||
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.2' ">
|
||||
<PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" />
|
||||
<PackageReference Include="System.Security.Cryptography.ProtectedData" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
|
||||
|
|
41
src/Jackett.Server/Services/FilePermissionService.cs
Normal file
41
src/Jackett.Server/Services/FilePermissionService.cs
Normal file
|
@ -0,0 +1,41 @@
|
|||
using Jackett.Common.Services.Interfaces;
|
||||
using NLog;
|
||||
using System;
|
||||
#if NETCOREAPP2_2
|
||||
using Mono.Unix;
|
||||
#endif
|
||||
|
||||
namespace Jackett.Server.Services
|
||||
{
|
||||
public class FilePermissionService : IFilePermissionService
|
||||
{
|
||||
private Logger logger;
|
||||
|
||||
public FilePermissionService(Logger l)
|
||||
{
|
||||
logger = l;
|
||||
}
|
||||
|
||||
public void MakeFileExecutable(string path)
|
||||
{
|
||||
#if NETCOREAPP2_2
|
||||
|
||||
//Calling the file permission service to limit usage to netcoreapp. The Mono.Posix.NETStandard library causes issues outside of .NET Core
|
||||
//https://github.com/xamarin/XamarinComponents/issues/282
|
||||
|
||||
logger.Debug($"Attempting to give execute permission to: {path}");
|
||||
try
|
||||
{
|
||||
UnixFileInfo jackettUpdaterFI = new UnixFileInfo(path)
|
||||
{
|
||||
FileAccessPermissions = FileAccessPermissions.UserReadWriteExecute | FileAccessPermissions.GroupRead | FileAccessPermissions.OtherRead
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error(ex);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
|
@ -83,6 +83,7 @@ namespace Jackett.Server
|
|||
builder.RegisterType<ServerService>().As<IServerService>().SingleInstance();
|
||||
builder.RegisterType<ProtectionService>().As<IProtectionService>().SingleInstance();
|
||||
builder.RegisterType<ServiceConfigService>().As<IServiceConfigService>().SingleInstance();
|
||||
builder.RegisterType<FilePermissionService>().As<IFilePermissionService>().SingleInstance();
|
||||
|
||||
IContainer container = builder.Build();
|
||||
Helper.ApplicationContainer = container;
|
||||
|
|
|
@ -377,6 +377,13 @@ namespace Jackett.Updater
|
|||
startInfo.FileName = "mono";
|
||||
}
|
||||
|
||||
if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreLinuxAmdx64
|
||||
|| variant == Variants.JackettVariant.CoreLinuxArm32 || variant == Variants.JackettVariant.CoreLinuxArm64)
|
||||
{
|
||||
startInfo.UseShellExecute = false;
|
||||
startInfo.CreateNoWindow = true;
|
||||
}
|
||||
|
||||
logger.Info("Starting Jackett: " + startInfo.FileName + " " + startInfo.Arguments);
|
||||
Process.Start(startInfo);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue