diff --git a/src/Jackett.Common/Jackett.Common.csproj b/src/Jackett.Common/Jackett.Common.csproj
index b1848da18..5aa92ef1d 100644
--- a/src/Jackett.Common/Jackett.Common.csproj
+++ b/src/Jackett.Common/Jackett.Common.csproj
@@ -19,7 +19,6 @@
-
diff --git a/src/Jackett.Common/Services/Interfaces/IFilePermissionService.cs b/src/Jackett.Common/Services/Interfaces/IFilePermissionService.cs
new file mode 100644
index 000000000..df817df1a
--- /dev/null
+++ b/src/Jackett.Common/Services/Interfaces/IFilePermissionService.cs
@@ -0,0 +1,7 @@
+namespace Jackett.Common.Services.Interfaces
+{
+ public interface IFilePermissionService
+ {
+ void MakeFileExecutable(string path);
+ }
+}
diff --git a/src/Jackett.Common/Services/UpdateService.cs b/src/Jackett.Common/Services/UpdateService.cs
index cf0643523..d8199f070 100644
--- a/src/Jackett.Common/Services/UpdateService.cs
+++ b/src/Jackett.Common/Services/UpdateService.cs
@@ -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;
diff --git a/src/Jackett.Server/Jackett.Server.csproj b/src/Jackett.Server/Jackett.Server.csproj
index d5a66a3b6..596bd97a7 100644
--- a/src/Jackett.Server/Jackett.Server.csproj
+++ b/src/Jackett.Server/Jackett.Server.csproj
@@ -22,6 +22,7 @@
+
diff --git a/src/Jackett.Server/Services/FilePermissionService.cs b/src/Jackett.Server/Services/FilePermissionService.cs
new file mode 100644
index 000000000..3b5ee07a5
--- /dev/null
+++ b/src/Jackett.Server/Services/FilePermissionService.cs
@@ -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
+ }
+ }
+}
diff --git a/src/Jackett.Server/Startup.cs b/src/Jackett.Server/Startup.cs
index 17fb5506c..52b6259e6 100644
--- a/src/Jackett.Server/Startup.cs
+++ b/src/Jackett.Server/Startup.cs
@@ -83,6 +83,7 @@ namespace Jackett.Server
builder.RegisterType().As().SingleInstance();
builder.RegisterType().As().SingleInstance();
builder.RegisterType().As().SingleInstance();
+ builder.RegisterType().As().SingleInstance();
IContainer container = builder.Build();
Helper.ApplicationContainer = container;
diff --git a/src/Jackett.Updater/Program.cs b/src/Jackett.Updater/Program.cs
index 8d3f539ff..8aac956f3 100644
--- a/src/Jackett.Updater/Program.cs
+++ b/src/Jackett.Updater/Program.cs
@@ -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);
}