diff options
| -rw-r--r-- | Emby.Server.Implementations/ApplicationHost.cs | 10 | ||||
| -rw-r--r-- | Emby.Server.Implementations/Updates/InstallationManager.cs | 40 | ||||
| -rw-r--r-- | SharedVersion.cs | 4 | ||||
| -rw-r--r-- | deployment/debian-package-x64/pkg-src/changelog | 100 | ||||
| -rw-r--r-- | deployment/fedora-package-x64/pkg-src/jellyfin.spec | 100 | ||||
| -rwxr-xr-x | deployment/win-x64/package.sh | 3 |
6 files changed, 222 insertions, 35 deletions
diff --git a/Emby.Server.Implementations/ApplicationHost.cs b/Emby.Server.Implementations/ApplicationHost.cs index bb475eb2c..353824406 100644 --- a/Emby.Server.Implementations/ApplicationHost.cs +++ b/Emby.Server.Implementations/ApplicationHost.cs @@ -564,7 +564,7 @@ namespace Emby.Server.Implementations { try { - var assembly = Assembly.Load(File.ReadAllBytes(file)); + var assembly = Assembly.LoadFrom(file); return new Tuple<Assembly, string>(assembly, file); } @@ -777,12 +777,12 @@ namespace Emby.Server.Implementations SocketFactory = new SocketFactory(); RegisterSingleInstance(SocketFactory); - InstallationManager = new InstallationManager(LoggerFactory, this, ApplicationPaths, HttpClient, JsonSerializer, ServerConfigurationManager, FileSystemManager, CryptographyProvider, PackageRuntime); - RegisterSingleInstance(InstallationManager); - ZipClient = new ZipClient(FileSystemManager); RegisterSingleInstance(ZipClient); + InstallationManager = new InstallationManager(LoggerFactory, this, ApplicationPaths, HttpClient, JsonSerializer, ServerConfigurationManager, FileSystemManager, CryptographyProvider, ZipClient, PackageRuntime); + RegisterSingleInstance(InstallationManager); + HttpResultFactory = new HttpResultFactory(LoggerFactory, FileSystemManager, JsonSerializer, CreateBrotliCompressor()); RegisterSingleInstance(HttpResultFactory); @@ -1603,7 +1603,7 @@ namespace Emby.Server.Implementations { try { - return FilterAssembliesToLoad(Directory.EnumerateFiles(path, "*.dll", SearchOption.TopDirectoryOnly)) + return FilterAssembliesToLoad(Directory.EnumerateFiles(path, "*.dll", SearchOption.AllDirectories)) .Select(LoadAssembly) .Where(a => a != null) .ToList(); diff --git a/Emby.Server.Implementations/Updates/InstallationManager.cs b/Emby.Server.Implementations/Updates/InstallationManager.cs index dc7f57f27..301802b8a 100644 --- a/Emby.Server.Implementations/Updates/InstallationManager.cs +++ b/Emby.Server.Implementations/Updates/InstallationManager.cs @@ -116,6 +116,7 @@ namespace Emby.Server.Implementations.Updates private readonly IApplicationHost _applicationHost; private readonly ICryptoProvider _cryptographyProvider; + private readonly IZipClient _zipClient; // netframework or netcore private readonly string _packageRuntime; @@ -129,6 +130,7 @@ namespace Emby.Server.Implementations.Updates IServerConfigurationManager config, IFileSystem fileSystem, ICryptoProvider cryptographyProvider, + IZipClient zipClient, string packageRuntime) { if (loggerFactory == null) @@ -146,6 +148,7 @@ namespace Emby.Server.Implementations.Updates _config = config; _fileSystem = fileSystem; _cryptographyProvider = cryptographyProvider; + _zipClient = zipClient; _packageRuntime = packageRuntime; _logger = loggerFactory.CreateLogger(nameof(InstallationManager)); } @@ -526,14 +529,18 @@ namespace Emby.Server.Implementations.Updates private async Task PerformPackageInstallation(IProgress<double> progress, string target, PackageVersionInfo package, CancellationToken cancellationToken) { - // Target based on if it is an archive or single assembly - // zip archives are assumed to contain directory structures relative to our ProgramDataPath var extension = Path.GetExtension(package.targetFilename); - var isArchive = string.Equals(extension, ".zip", StringComparison.OrdinalIgnoreCase) || string.Equals(extension, ".rar", StringComparison.OrdinalIgnoreCase) || string.Equals(extension, ".7z", StringComparison.OrdinalIgnoreCase); + var isArchive = string.Equals(extension, ".zip", StringComparison.OrdinalIgnoreCase); + + if (!isArchive) + { + _logger.LogError("Only zip packages are supported. {Filename} is not a zip archive.", package.targetFilename); + return; + } if (target == null) { - target = Path.Combine(isArchive ? _appPaths.TempUpdatePath : _appPaths.PluginsPath, package.targetFilename); + target = Path.Combine(_appPaths.PluginsPath, Path.GetFileNameWithoutExtension(package.targetFilename)); } // Download to temporary file so that, if interrupted, it won't destroy the existing installation @@ -547,36 +554,19 @@ namespace Emby.Server.Implementations.Updates cancellationToken.ThrowIfCancellationRequested(); - // Validate with a checksum - var packageChecksum = string.IsNullOrWhiteSpace(package.checksum) ? Guid.Empty : new Guid(package.checksum); - if (!packageChecksum.Equals(Guid.Empty)) // support for legacy uploads for now - { - using (var stream = File.OpenRead(tempFile)) - { - var check = Guid.Parse(BitConverter.ToString(_cryptographyProvider.ComputeMD5(stream)).Replace("-", string.Empty)); - if (check != packageChecksum) - { - throw new Exception(string.Format("Download validation failed for {0}. Probably corrupted during transfer.", package.name)); - } - } - } - - cancellationToken.ThrowIfCancellationRequested(); + // TODO: Validate with a checksum, *properly* // Success - move it to the real target try { - Directory.CreateDirectory(Path.GetDirectoryName(target)); - File.Copy(tempFile, target, true); - //If it is an archive - write out a version file so we know what it is - if (isArchive) + using (var stream = File.OpenRead(tempFile)) { - File.WriteAllText(target + ".ver", package.versionStr); + _zipClient.ExtractAllFromZip(stream, target, true); } } catch (IOException ex) { - _logger.LogError(ex, "Error attempting to move file from {TempFile} to {TargetFile}", tempFile, target); + _logger.LogError(ex, "Error attempting to extract {TempFile} to {TargetFile}", tempFile, target); throw; } diff --git a/SharedVersion.cs b/SharedVersion.cs index 70c309674..294748b77 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("10.1.0")] -[assembly: AssemblyFileVersion("10.1.0")] +[assembly: AssemblyVersion("10.2.0")] +[assembly: AssemblyFileVersion("10.2.0")] diff --git a/deployment/debian-package-x64/pkg-src/changelog b/deployment/debian-package-x64/pkg-src/changelog index 7f3f12b00..d5872e4a7 100644 --- a/deployment/debian-package-x64/pkg-src/changelog +++ b/deployment/debian-package-x64/pkg-src/changelog @@ -1,3 +1,103 @@ +jellyfin (10.2.0~rc1) unstable; urgency=medium + + * jellyfin: + * PR452 Use EF Core for Activity database + * PR535 Clean up streambuilder + * PR651 Release 10.1.0 + * PR655 Support trying local branches in submodule + * PR656 Do some logging in MediaInfoService + * PR657 Remove conditions that are always true/false + * PR661 Fix NullRef from progress report + * PR663 Use TagLibSharp Nuget package + * PR664 Revert "Fix segment_time_delta for ffmpeg 4.1" + * PR666 Add cross-platform build for arm64 + * PR668 Return Audio objects from MusicAlbum.Tracks + * PR671 Set EnableRaisingEvents correctly + * PR672 Remove unconditional caching, modified since header and use ETags + * PR677 Fix arm32 Docker + * PR681 Fix Windows build script errors + pin ffmpeg to 4.0 + * PR686 Disable some StyleCop warnings + * PR687 Fix some analyzer warnings + * PR689 Fix RPM package build for fedora + * PR702 Fix debug build on windows + * PR706 Make another docker layer reusable + * PR709 Fix always null expressions + * PR710 Fix a spelling mistake + * PR711 Remove remnants of system events + * PR713 Fix empty statement in DidlBuilder.cs + * PR716 Remove more compile time warnings + * PR721 Change image dimentions from double to int + * PR723 Minor improvements to db code + * PR724 Move Skia back into it's own project + * PR726 Clean up IFileSystem wrappers around stdlib. + * PR727 Change default aspect ratio to 2/3 from 0 + * PR728 Use ffmpeg from jrottenberg/ffmpeg + * PR732 Reworked LocalizationManager to load data async + * PR733 Remove unused function + * PR734 Fix more analyzer warnings + * PR736 Start startup tasks async + * PR737 Add AssemblyInfo for Jellyfin.Drawing.Skia + * PR739 Change multi version logic for movies + * PR740 Remove code for pre-installed plugins & properly check if file exists + * PR756 Make cache dir configurable + * PR757 Fix default aspect ratio + * PR758 Add password field to initial setup + * PR764 Remove dead code, made some functions properly async + * PR769 Fix conditions where the ! was swallowed in #726 + * PR774 reimplement support for plugin repository + * PR782 Remove commented file MediaBrowser.LocalMetadata.Savers.PersonXmlSaver + * PR783 Update builds to use #749 and #756 + * PR788 Fix more warnings + * PR794 Remove MoreLINQ + * PR797 Fix all warnings + * PR798 Cleanup around the api endpoints + * PR800 Add CentOS and update rpm spec for the cachedir option + * PR802 Fix build error + * PR804 Handle new option parser properly + * PR805 Add weblate translation status to README + * PR807 Fix restart script in OS packages + * PR810 Fix loading of rating files + * PR812 Fix up the explicit docs links in the README + * PR819 Some small changes in Device.cs and DidlBuilder.cs + * PR822 Complete rename ImageSize -> ImageDimensions + * PR824 Improved Docker pkgbuild + * PR831 Move some arrays to generics + * PR833 Add await to GetCountries in LocalizationService + * PR834 Add donation badge and reorganize badges + * PR838 Quick style fix + * PR840 Fix more warnings + * PR841 Fix OC badge to all and add forum badge + * PR842 Use VAAPI-enabled ffmpeg + * PR852 Use SQLitePCL.pretty.netstandard on NuGet + * PR853 Fix poor handling of cache directories + * PR8 rebase to latest master + * jellyfin-web: + * PR24 Add Master codeowners + * PR34 Revert "Add Master codeowners" + * PR49 Release 10.1.0 + * PR51 remove more code for sync and camera roll + * PR56 Use English for fallback translations and clean up language files + * PR58 Css slider fixes + * PR62 remove BOM markers + * PR65 Fix profile image not being shown on profile page + * PR73 Dev sync + * PR74 Add download menu option to media items + * PR75 User profile fixes + * PR76 Fix syntax error caused by deminification + * PR79 Remove unused Connect related from the frontend + * PR80 Remove games + * PR92 Added frontend support for a password field on setup + * PR94 Update british strings + * PR95 add display language option back + * PR112 Removed seasonal theme support + * PR116 Consolidate all strings into a single file per language + * PR118 Enable and fix PiP for Safari + * PR119 Make the toggle track visible on all themes + * PR121 Fix syntax error in site.js + * PR127 Change sharedcomponents module to core + + -- Jellyfin Packaging Team <packaging@jellyfin.org> Sun, 10 Feb 2019 01:18:23 -0500 + jellyfin (10.1.0-1) unstable; urgency=medium * jellyfin: diff --git a/deployment/fedora-package-x64/pkg-src/jellyfin.spec b/deployment/fedora-package-x64/pkg-src/jellyfin.spec index 851c40044..343d23e91 100644 --- a/deployment/fedora-package-x64/pkg-src/jellyfin.spec +++ b/deployment/fedora-package-x64/pkg-src/jellyfin.spec @@ -7,8 +7,8 @@ %endif Name: jellyfin -Version: 10.1.0 -Release: 1%{?dist} +Version: 10.2.0 +Release: rc1%{?dist} Summary: The Free Software Media Browser License: GPLv2 URL: https://jellyfin.media @@ -140,6 +140,102 @@ fi %systemd_postun_with_restart jellyfin.service %changelog +* Sun Feb 10 2019 Jellyfin Packaging Team <packaging@jellyfin.org> +- jellyfin: +- PR452 Use EF Core for Activity database +- PR535 Clean up streambuilder +- PR651 Release 10.1.0 +- PR655 Support trying local branches in submodule +- PR656 Do some logging in MediaInfoService +- PR657 Remove conditions that are always true/false +- PR661 Fix NullRef from progress report +- PR663 Use TagLibSharp Nuget package +- PR664 Revert "Fix segment_time_delta for ffmpeg 4.1" +- PR666 Add cross-platform build for arm64 +- PR668 Return Audio objects from MusicAlbum.Tracks +- PR671 Set EnableRaisingEvents correctly +- PR672 Remove unconditional caching, modified since header and use ETags +- PR677 Fix arm32 Docker +- PR681 Fix Windows build script errors + pin ffmpeg to 4.0 +- PR686 Disable some StyleCop warnings +- PR687 Fix some analyzer warnings +- PR689 Fix RPM package build for fedora +- PR702 Fix debug build on windows +- PR706 Make another docker layer reusable +- PR709 Fix always null expressions +- PR710 Fix a spelling mistake +- PR711 Remove remnants of system events +- PR713 Fix empty statement in DidlBuilder.cs +- PR716 Remove more compile time warnings +- PR721 Change image dimentions from double to int +- PR723 Minor improvements to db code +- PR724 Move Skia back into it's own project +- PR726 Clean up IFileSystem wrappers around stdlib. +- PR727 Change default aspect ratio to 2/3 from 0 +- PR728 Use ffmpeg from jrottenberg/ffmpeg +- PR732 Reworked LocalizationManager to load data async +- PR733 Remove unused function +- PR734 Fix more analyzer warnings +- PR736 Start startup tasks async +- PR737 Add AssemblyInfo for Jellyfin.Drawing.Skia +- PR739 Change multi version logic for movies +- PR740 Remove code for pre-installed plugins & properly check if file exists +- PR756 Make cache dir configurable +- PR757 Fix default aspect ratio +- PR758 Add password field to initial setup +- PR764 Remove dead code, made some functions properly async +- PR769 Fix conditions where the ! was swallowed in #726 +- PR774 reimplement support for plugin repository +- PR782 Remove commented file MediaBrowser.LocalMetadata.Savers.PersonXmlSaver +- PR783 Update builds to use #749 and #756 +- PR788 Fix more warnings +- PR794 Remove MoreLINQ +- PR797 Fix all warnings +- PR798 Cleanup around the api endpoints +- PR800 Add CentOS and update rpm spec for the cachedir option +- PR802 Fix build error +- PR804 Handle new option parser properly +- PR805 Add weblate translation status to README +- PR807 Fix restart script in OS packages +- PR810 Fix loading of rating files +- PR812 Fix up the explicit docs links in the README +- PR819 Some small changes in Device.cs and DidlBuilder.cs +- PR822 Complete rename ImageSize -> ImageDimensions +- PR824 Improved Docker pkgbuild +- PR831 Move some arrays to generics +- PR833 Add await to GetCountries in LocalizationService +- PR834 Add donation badge and reorganize badges +- PR838 Quick style fix +- PR840 Fix more warnings +- PR841 Fix OC badge to all and add forum badge +- PR842 Use VAAPI-enabled ffmpeg +- PR852 Use SQLitePCL.pretty.netstandard on NuGet +- PR853 Fix poor handling of cache directories +- PR8 rebase to latest master +- jellyfin-web: +- PR24 Add Master codeowners +- PR34 Revert "Add Master codeowners" +- PR49 Release 10.1.0 +- PR51 remove more code for sync and camera roll +- PR56 Use English for fallback translations and clean up language files +- PR58 Css slider fixes +- PR62 remove BOM markers +- PR65 Fix profile image not being shown on profile page +- PR73 Dev sync +- PR74 Add download menu option to media items +- PR75 User profile fixes +- PR76 Fix syntax error caused by deminification +- PR79 Remove unused Connect related from the frontend +- PR80 Remove games +- PR92 Added frontend support for a password field on setup +- PR94 Update british strings +- PR95 add display language option back +- PR112 Removed seasonal theme support +- PR116 Consolidate all strings into a single file per language +- PR118 Enable and fix PiP for Safari +- PR119 Make the toggle track visible on all themes +- PR121 Fix syntax error in site.js +- PR127 Change sharedcomponents module to core * Sun Jan 20 2019 Jellyfin Packaging Team <packaging@jellyfin.org> - jellyfin: - PR335 Build scripts and build system consolidation. diff --git a/deployment/win-x64/package.sh b/deployment/win-x64/package.sh index befddb2e7..d21e3b532 100755 --- a/deployment/win-x64/package.sh +++ b/deployment/win-x64/package.sh @@ -1,4 +1,5 @@ #!/usr/bin/env bash +set -x package_win64() ( local NSSM_VERSION="nssm-2.24-101-g897c7ad" local NSSM_URL="https://nssm.cc/ci/${NSSM_VERSION}.zip" @@ -15,7 +16,7 @@ package_win64() ( wget ${NSSM_URL} -O ${TEMP_DIR}/nssm.zip wget ${FFMPEG_URL} -O ${TEMP_DIR}/ffmpeg.zip unzip ${TEMP_DIR}/nssm.zip -d $TEMP_DIR - cp ${TEMP_DIR}/${NSSM_VERSION}}/win64/nssm.exe ${OUTPUT_DIR}/nssm.exe + cp ${TEMP_DIR}/${NSSM_VERSION}/win64/nssm.exe ${OUTPUT_DIR}/nssm.exe unzip ${TEMP_DIR}/ffmpeg.zip -d $TEMP_DIR cp ${TEMP_DIR}/${FFMPEG_VERSION}/bin/ffmpeg.exe ${OUTPUT_DIR}/ffmpeg.exe cp ${TEMP_DIR}/${FFMPEG_VERSION}/bin/ffprobe.exe ${OUTPUT_DIR}/ffprobe.exe |
