From b72ad9a7f57d0d1c9149ff2c66150ba9696679d1 Mon Sep 17 00:00:00 2001 From: Diego Heras Date: Wed, 30 Oct 2019 02:58:11 +0100 Subject: [PATCH] updater: improvements in systemd jackett_launcher (#6270) --- build.cake | 21 +++++++++++++++++--- install_service_systemd.sh | 19 +----------------- jackett_launcher.sh | 19 ++++++++++++++++++ src/Jackett.Common/Services/UpdateService.cs | 11 +++++++++- 4 files changed, 48 insertions(+), 22 deletions(-) create mode 100755 jackett_launcher.sh diff --git a/build.cake b/build.cake index cc7661901..936cdc08f 100644 --- a/build.cake +++ b/build.cake @@ -185,6 +185,7 @@ Task("Package-DotNetCore-LinuxAMDx64") DeleteDirectory(updaterOutputPath, new DeleteDirectorySettings {Recursive = true, Force = true}); CopyFileToDirectory("./install_service_systemd.sh", buildOutputPath); + CopyFileToDirectory("./jackett_launcher.sh", buildOutputPath); Gzip($"./BuildOutput/{netCoreFramework}/{runtimeId}", $"./{artifactsDirName}", "Jackett", "Jackett.Binaries.LinuxAMDx64.tar.gz"); }); @@ -204,6 +205,7 @@ Task("Package-DotNetCore-LinuxARM32") DeleteDirectory(updaterOutputPath, new DeleteDirectorySettings {Recursive = true, Force = true}); CopyFileToDirectory("./install_service_systemd.sh", buildOutputPath); + CopyFileToDirectory("./jackett_launcher.sh", buildOutputPath); Gzip($"./BuildOutput/{netCoreFramework}/{runtimeId}", $"./{artifactsDirName}", "Jackett", "Jackett.Binaries.LinuxARM32.tar.gz"); }); @@ -223,6 +225,7 @@ Task("Package-DotNetCore-LinuxARM64") DeleteDirectory(updaterOutputPath, new DeleteDirectorySettings {Recursive = true, Force = true}); CopyFileToDirectory("./install_service_systemd.sh", buildOutputPath); + CopyFileToDirectory("./jackett_launcher.sh", buildOutputPath); Gzip($"./BuildOutput/{netCoreFramework}/{runtimeId}", $"./{artifactsDirName}", "Jackett", "Jackett.Binaries.LinuxARM64.tar.gz"); }); @@ -406,16 +409,28 @@ private void Gzip(string sourceFolder, string outputDirectory, string tarCdirect RunLinuxCommand("chmod", $"755 {MakeAbsolute(Directory(sourceFolder))}/Jackett/jackett"); RunLinuxCommand("chmod", $"755 {MakeAbsolute(Directory(sourceFolder))}/Jackett/JackettUpdater"); + string macOsServiceScript = MakeAbsolute(Directory(sourceFolder)) + "/Jackett/install_service_macos"; + if (FileExists(macOsServiceScript)) + { + RunLinuxCommand("chmod", $"755 {macOsServiceScript}"); + } + + string systemdMonoScript = MakeAbsolute(Directory(sourceFolder)) + "/Jackett/install_service_systemd_mono.sh"; + if (FileExists(systemdMonoScript)) + { + RunLinuxCommand("chmod", $"755 {systemdMonoScript}"); + } + string systemdScript = MakeAbsolute(Directory(sourceFolder)) + "/Jackett/install_service_systemd.sh"; if (FileExists(systemdScript)) { RunLinuxCommand("chmod", $"755 {systemdScript}"); } - string macOsServiceScript = MakeAbsolute(Directory(sourceFolder)) + "/Jackett/install_service_macos"; - if (FileExists(macOsServiceScript)) + string launcherScript = MakeAbsolute(Directory(sourceFolder)) + "/Jackett/jackett_launcher.sh"; + if (FileExists(launcherScript)) { - RunLinuxCommand("chmod", $"755 {macOsServiceScript}"); + RunLinuxCommand("chmod", $"755 {launcherScript}"); } RunLinuxCommand("tar", $"-C {sourceFolder} -zcvf {outputDirectory}/{tarFileName}.gz {tarCdirectoryOption}"); diff --git a/install_service_systemd.sh b/install_service_systemd.sh index 09cd9049c..91e1b8a37 100755 --- a/install_service_systemd.sh +++ b/install_service_systemd.sh @@ -32,23 +32,6 @@ if [[ $(systemctl status ${jackettservice} | grep "active (running)") ]]; then exit 1 fi -# Write the Jackett's launcher -cat >"/bin/jackett_launcher.sh" < /dev/null ; do - sleep 1 -done - -echo "Jackett update complete" - -EOL - -# Give execution permissions -chmod +x "/bin/jackett_launcher.sh" - # Write the systemd service descriptor cat >"/etc/systemd/system/${jackettservice}" </dev/null 2>&1 && pwd )" + +# Launch Jackett +${JACKETT_DIR}/jackett + +# Get user running the service +JACKETT_USER=$(whoami) + +# Wait until the updater ends +while pgrep -u ${JACKETT_USER} JackettUpdater > /dev/null ; do + sleep 1 +done + +echo "Jackett update complete" diff --git a/src/Jackett.Common/Services/UpdateService.cs b/src/Jackett.Common/Services/UpdateService.cs index a3842deb6..3c4aaff13 100644 --- a/src/Jackett.Common/Services/UpdateService.cs +++ b/src/Jackett.Common/Services/UpdateService.cs @@ -292,7 +292,8 @@ namespace Jackett.Common.Services inStream.Close(); if (variant == Variants.JackettVariant.CoreMacOs || variant == Variants.JackettVariant.CoreLinuxAmdx64 - || variant == Variants.JackettVariant.CoreLinuxArm32 || variant == Variants.JackettVariant.CoreLinuxArm64) + || variant == Variants.JackettVariant.CoreLinuxArm32 || variant == Variants.JackettVariant.CoreLinuxArm64 + || variant == Variants.JackettVariant.Mono) { //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 @@ -310,10 +311,18 @@ namespace Jackett.Common.Services string macosServicePath = tempDir + "/Jackett/install_service_macos"; filePermissionService.MakeFileExecutable(macosServicePath); } + else if (variant == Variants.JackettVariant.Mono) + { + string systemdPath = tempDir + "/Jackett/install_service_systemd_mono.sh"; + filePermissionService.MakeFileExecutable(systemdPath); + } else { string systemdPath = tempDir + "/Jackett/install_service_systemd.sh"; filePermissionService.MakeFileExecutable(systemdPath); + + string launcherPath = tempDir + "/Jackett/jackett_launcher.sh"; + filePermissionService.MakeFileExecutable(launcherPath); } } }