Merge pull request #248 from jellyfin/develop

Master 3.5.2-4
This commit is contained in:
Andrew Rabert 2018-12-20 22:10:42 -05:00 committed by GitHub
commit e163fea9d9
15 changed files with 96 additions and 112 deletions

View file

@ -9,10 +9,10 @@ RUN export DOTNET_CLI_TELEMETRY_OPTOUT=1 \
FROM microsoft/dotnet:${DOTNET_VERSION}-runtime FROM microsoft/dotnet:${DOTNET_VERSION}-runtime
COPY --from=builder /jellyfin /jellyfin COPY --from=builder /jellyfin /jellyfin
RUN apt update \
&& apt install -y ffmpeg gosu
EXPOSE 8096 EXPOSE 8096
RUN apt update \
&& apt install -y ffmpeg
VOLUME /config /media VOLUME /config /media
ENV PUID=1000 PGID=1000 ENTRYPOINT if [ -n "$PUID$PGUID" ]; \
ENTRYPOINT chown $PUID:$PGID /config /media \ then echo "PUID/PGID are deprecated. Use Docker user param." >&2; exit 1; \
&& gosu $PUID:$PGID dotnet /jellyfin/jellyfin.dll -programdata /config else dotnet /jellyfin/jellyfin.dll -programdata /config; fi

17
Dockerfile.aarch64 Normal file
View file

@ -0,0 +1,17 @@
ARG DOTNET_VERSION=3.0
FROM microsoft/dotnet:${DOTNET_VERSION}-sdk as builder
WORKDIR /repo
COPY . .
RUN export DOTNET_CLI_TELEMETRY_OPTOUT=1 \
&& find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \; \
&& dotnet clean \
&& dotnet publish --configuration release --output /jellyfin
FROM microsoft/dotnet:${DOTNET_VERSION}-runtime
COPY --from=builder /jellyfin /jellyfin
EXPOSE 8096
RUN apt update \
&& apt install -y ffmpeg
VOLUME /config /media
ENTRYPOINT dotnet /jellyfin/jellyfin.dll -programdata /config

View file

@ -35,7 +35,6 @@ namespace DvdLib.Ifo
private ushort _goupProgramNumber; private ushort _goupProgramNumber;
public readonly ProgramChain Goup; // ?? maybe Group public readonly ProgramChain Goup; // ?? maybe Group
private byte _playbackMode;
public ProgramPlaybackMode PlaybackMode { get; private set; } public ProgramPlaybackMode PlaybackMode { get; private set; }
public uint ProgramCount { get; private set; } public uint ProgramCount { get; private set; }

View file

@ -144,24 +144,17 @@ namespace IsoMounter
return Task.FromResult(false); return Task.FromResult(false);
} }
public async Task<IIsoMount> Mount(string isoPath, CancellationToken cancellationToken) public Task<IIsoMount> Mount(string isoPath, CancellationToken cancellationToken)
{ {
if (MountISO(isoPath, out LinuxMount mountedISO)) {
LinuxMount mountedISO; return Task.FromResult<IIsoMount>(mountedISO);
}
if (MountISO(isoPath, out mountedISO)) { else {
return mountedISO;
}else{
throw new IOException(String.Format( throw new IOException(String.Format(
"An error occurred trying to mount image [$0].", "An error occurred trying to mount image [$0].",
isoPath isoPath
)); ));
} }
} }
#endregion #endregion

View file

@ -1,8 +1,5 @@
using System; using System;
using MediaBrowser.Model.Diagnostics;
using MediaBrowser.Model.IO; using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.System;
namespace IsoMounter namespace IsoMounter
{ {

View file

@ -3179,4 +3179,4 @@ namespace Emby.Server.Implementations.Library
CollectionFolder.SaveLibraryOptions(virtualFolderPath, libraryOptions); CollectionFolder.SaveLibraryOptions(virtualFolderPath, libraryOptions);
} }
} }
} }

View file

@ -109,7 +109,7 @@ namespace Mono.Nat.Pmp
if (attempt == 0) if (attempt == 0)
{ {
Task.Run(() => CreatePortMapListen(udpClient, mapping, cancellationTokenSource.Token)); await Task.Run(() => CreatePortMapListen(udpClient, mapping, cancellationTokenSource.Token));
} }
attempt++; attempt++;
@ -214,4 +214,4 @@ namespace Mono.Nat.Pmp
this.localAddress, this.publicAddress, this.LastSeen); this.localAddress, this.publicAddress, this.LastSeen);
} }
} }
} }

107
README.md
View file

@ -1,76 +1,53 @@
Jellyfin <h1 align="center">Jellyfin</h1>
============ <h3 align="center">The Free Software Media System</h3>
Jellyfin is a personal media server. The Jellyfin project was started as a result of Emby's decision to take their code closed-source, as well as various philosophical differences with the core developers. Jellyfin seeks to be the free software alternative to Emby and Plex to provide media management and streaming from a dedicated server to end-user devices. <p align="center">
Jellyfin is a free software media system that puts you in control of managing and streaming your media.
</p>
-----
<p align="center">
<strong>Want to get started?</strong> Choose from <a href="https://github.com/jellyfin/jellyfin/wiki/Prebuilt-Packages">Prebuilt Packages</a>, or <a href="https://github.com/jellyfin/jellyfin/wiki/Building-from-Source">Build from Source</a>.
</p>
<p align="center">
<strong>Want to contribute?</strong> Check out <a href="https://github.com/jellyfin/jellyfin/wiki/Contributing-to-Jellyfin">our wiki for guidelines</a>.
</p>
---
<p align="center">
<a href="https://github.com/jellyfin/jellyfin"><img alt="GPL 2.0 License" src="https://img.shields.io/github/license/jellyfin/jellyfin.svg"></a>
<a href="https://cloud.drone.io/jellyfin/jellyfin"><img alt="Build Status" src="https://cloud.drone.io/api/badges/jellyfin/jellyfin/status.svg"></a>
<a href="https://hub.docker.com/r/jellyfin/jellyfin"><img alt="Docker Pull Count" src="https://img.shields.io/docker/pulls/jellyfin/jellyfin.svg"></a>
<a href="https://matrix.to/#/#jellyfin:matrix.org"><img alt="Chat on Matrix" src="https://img.shields.io/matrix/!JXmoIxArWgVvbKKqex/matrix.org.svg?logo=matrix"></a>
<a href="https://www.reddit.com/r/jellyfin/"><img alt="Join our Subreddit" src="https://img.shields.io/badge/reddit-r%2Fjellyfin-%23FF5700.svg"></a>
</p>
For further details, please see [our wiki](https://github.com/jellyfin/jellyfin/wiki).
To receive the latest updates, please visit [our public chat on Matrix/Riot](https://matrix.to/#/#jellyfin:matrix.org), our [announce chat](https://matrix.to/#/#jellyfin-announce:matrix.org) for release info, and follow us on [Social Media](https://github.com/jellyfin/jellyfin/wiki/Social-Media).
## About
The Jellyfin project was started as a result of Emby's decision to take their code closed-source, as well as various philosophical differences with the core developers. Jellyfin seeks to be the free software alternative to Emby and Plex to provide media management and streaming from a dedicated server to end-user devices.
Jellyfin is descended from Emby 3.5.2, ported to the .NET Core framework, and aims to contain build facilities for every platform. Jellyfin is descended from Emby 3.5.2, ported to the .NET Core framework, and aims to contain build facilities for every platform.
For further details, please see [our wiki](https://github.com/jellyfin/jellyfin/wiki). To receive the latest project updates feel free to join [our public chat on Matrix/Riot](https://matrix.to/#/#jellyfin:matrix.org) and to subscribe to [our subreddit](https://www.reddit.com/r/jellyfin/). ## Issues and Feature Requests
## Feature Requests
While our first priority is a stable build, we will eventually add features that were missing in Emby or were not well implemented (technically or philosophically).
[Feature Requests](http://feathub.com/jellyfin/jellyfin) <p align="center">
<strong>New idea or improvement?</strong>
<em>Open a <a href="https://github.com/jellyfin/jellyfin/wiki/Feature-Requests">Feature Request</a>.</em>
</p>
<p align="center">
<Strong>Something not working right?</strong>
<em>Open an <a href="https://github.com/jellyfin/jellyfin/wiki/Issue-Guidelines">Issue</a>.</em>
</p>
## Contributing to Jellyfin ## Contributing to Jellyfin
If you're interested in contributing, please see [our wiki for guidelines](https://github.com/jellyfin/jellyfin/wiki/Contributing-to-Jellyfin). If you're interested in contributing, please see [our wiki for guidelines](https://github.com/jellyfin/jellyfin/wiki/Contributing-to-Jellyfin).
## Prebuilt Jellyfin packages
Prebuild packages are available for Debian/Ubuntu and Arch, and via Docker Hub.
### Docker
The Jellyfin Docker image is available on Docker Hub at https://hub.docker.com/r/jellyfin/jellyfin/
### Arch
The Jellyfin package is in the AUR at https://aur.archlinux.org/packages/jellyfin-git/
### Unraid
An Unraid Docker template is available. See [this documentation page](https://github.com/jellyfin/jellyfin/blob/master/unRaid/docker-templates/README.md) for details on installing it.
### Debian/Ubuntu
A package repository is available at https://repo.jellyfin.org.
NOTE: Ubuntu users may find that the `ffmpeg` dependency package is not present in their release or is simply a rebranded `libav` which is not directly compatible. Please [obtain the ffmpeg package directly from the FFMPEG site](https://ffmpeg.org/download.html#build-linux) to use Jellyfin on Ubuntu.
For instructions on using the repository, please see [our wiki](https://github.com/jellyfin/jellyfin/wiki/Jellyfin-Debian-repository).
## Building Jellyfin packages from source
Jellyfin seeks to integrate build facilities for any desired packaging format. Instructions for the various formats can be found below.
NOTE: When building from source, only cloning the full Git repository is supported, rather than using a `.zip`/`.tar` archive, in order to support submodules.
### Debian/Ubuntu
Debian build facilities are integrated into the repo at `debian/`.
0. Install the `dotnet-sdk-2.2` package via [Microsoft's repositories](https://dotnet.microsoft.com/download/dotnet-core/2.2).
0. Run `dpkg-buildpackage -us -uc`.
0. Install the resulting `jellyfin_*.deb` file on your system.
A huge thanks to Carlos Hernandez who created the original Debian build configuration for Emby 3.1.1.
### Windows (64 bit)
A pre-built windows installer will be available soon. Until then it isn't too hard to install Jellyfin from Source.
0. Install the dotnet core SDK 2.2 from [Microsoft's Webpage](https://dotnet.microsoft.com/download/dotnet-core/2.2) and [install Git for Windows](https://gitforwindows.org/)
0. Clone Jellyfin into a directory of your choice.
```
git clone https://github.com/jellyfin/jellyfin.git C:\Jellyfin
```
0. From the Jellyfin directory you can use our Jellyfin build script. Call `Build-Jellyfin.ps1 -InstallFFMPEG` from inside the directory in a powershell window. Make sure you've set your executionpolicy to unrestricted.
Additional flags:
* If you want to optimize for your environment you can use the `-WindowsVersion` and `-Architecture` flags to do so; the default is generic Windows x64.
* The `-InstallLocation` flag lets you select where the compiled binaries go; the default is `$Env:AppData\JellyFin-Server\` .
* The `-InstallFFMPEG` flag will automatically pull the stable ffmpeg binaries appropriate to your architecture (x86/x64 only for now) from [Zeranoe](https://ffmpeg.zeranoe.com/builds/) and place them in your Jellyfin directory.
0. (Optional) Use [NSSM](https://nssm.cc/) to configure JellyFin to run as a service
0. Jellyfin is now available in the default directory (or the directory you chose). Assuming you kept the default directory, to start it from a Powershell window, run, `&"$env:APPDATA\Jellyfin-Server\EmbyServer.exe"`. To start it from CMD, run, `%APPDATA%\Jellyfin-Server\EmbyServer.exe`

View file

@ -17,7 +17,6 @@ namespace Rssdp
#region Fields #region Fields
private SsdpRootDevice _Device;
private DateTimeOffset _AsAt; private DateTimeOffset _AsAt;
#endregion #endregion
@ -55,7 +54,6 @@ namespace Rssdp
if (_AsAt != value) if (_AsAt != value)
{ {
_AsAt = value; _AsAt = value;
_Device = null;
} }
} }
} }
@ -93,4 +91,4 @@ namespace Rssdp
#endregion #endregion
} }
} }

View file

@ -124,7 +124,7 @@ namespace Rssdp.Infrastructure
{ {
await SearchAsync(CancellationToken.None).ConfigureAwait(false); await SearchAsync(CancellationToken.None).ConfigureAwait(false);
} }
catch (Exception ex) catch (Exception)
{ {
} }
@ -621,4 +621,4 @@ namespace Rssdp.Infrastructure
#endregion #endregion
} }
} }

View file

@ -310,11 +310,16 @@ namespace Rssdp.Infrastructure
try try
{ {
await _CommsServer.SendMessage(System.Text.Encoding.UTF8.GetBytes(message), endPoint, receivedOnlocalIpAddress, cancellationToken).ConfigureAwait(false); await _CommsServer.SendMessage(
System.Text.Encoding.UTF8.GetBytes(message),
endPoint,
receivedOnlocalIpAddress,
cancellationToken)
.ConfigureAwait(false);
} }
catch (Exception ex) catch (Exception)
{ {
} }
//WriteTrace(String.Format("Sent search response to " + endPoint.ToString()), device); //WriteTrace(String.Format("Sent search response to " + endPoint.ToString()), device);
@ -558,4 +563,4 @@ namespace Rssdp.Infrastructure
} }
} }
} }
} }

View file

@ -1,19 +1,13 @@
using System; using System;
using System.Net; using System.Net;
using System.Security.Principal; using System.Security.Principal;
using MediaBrowser.Model.Cryptography;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Text;
using SocketHttpListener.Net.WebSockets; using SocketHttpListener.Net.WebSockets;
using SocketHttpListener.Primitives;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace SocketHttpListener.Net namespace SocketHttpListener.Net
{ {
public sealed unsafe partial class HttpListenerContext public sealed unsafe partial class HttpListenerContext
{ {
internal HttpListener _listener;
private HttpListenerResponse _response; private HttpListenerResponse _response;
private IPrincipal _user; private IPrincipal _user;

View file

@ -253,7 +253,7 @@ namespace SocketHttpListener.Net
//if (NetEventSource.IsEnabled) //if (NetEventSource.IsEnabled)
// NetEventSource.Error(this, SR.Format(SR.net_log_listener_cant_convert_percent_value, codePoint)); // NetEventSource.Error(this, SR.Format(SR.net_log_listener_cant_convert_percent_value, codePoint));
} }
catch (EncoderFallbackException e) catch (EncoderFallbackException)
{ {
// If utf8Encoding.GetBytes() fails // If utf8Encoding.GetBytes() fails
//if (NetEventSource.IsEnabled) NetEventSource.Error(this, SR.Format(SR.net_log_listener_cant_convert_to_utf8, unicodeString, e.Message)); //if (NetEventSource.IsEnabled) NetEventSource.Error(this, SR.Format(SR.net_log_listener_cant_convert_to_utf8, unicodeString, e.Message));
@ -303,11 +303,11 @@ namespace SocketHttpListener.Net
return true; return true;
} }
catch (DecoderFallbackException e) catch (DecoderFallbackException)
{ {
//if (NetEventSource.IsEnabled) NetEventSource.Error(this, SR.Format(SR.net_log_listener_cant_convert_bytes, GetOctetsAsString(_rawOctets), e.Message)); //if (NetEventSource.IsEnabled) NetEventSource.Error(this, SR.Format(SR.net_log_listener_cant_convert_bytes, GetOctetsAsString(_rawOctets), e.Message));
} }
catch (EncoderFallbackException e) catch (EncoderFallbackException)
{ {
// If utf8Encoding.GetBytes() fails // If utf8Encoding.GetBytes() fails
//if (NetEventSource.IsEnabled) NetEventSource.Error(this, SR.Format(SR.net_log_listener_cant_convert_to_utf8, decodedString, e.Message)); //if (NetEventSource.IsEnabled) NetEventSource.Error(this, SR.Format(SR.net_log_listener_cant_convert_to_utf8, decodedString, e.Message));

View file

@ -299,7 +299,7 @@ namespace SocketHttpListener
} }
OnError.Emit(this, new ErrorEventArgs(message)); OnError.Emit(this, new ErrorEventArgs(message));
} }
catch (Exception ex) catch (Exception)
{ {
} }
} }
@ -310,7 +310,7 @@ namespace SocketHttpListener
{ {
OnError.Emit(this, new ErrorEventArgs(message)); OnError.Emit(this, new ErrorEventArgs(message));
} }
catch (Exception ex) catch (Exception)
{ {
} }
} }
@ -423,8 +423,6 @@ namespace SocketHttpListener
private bool processPingFrame(WebSocketFrame frame) private bool processPingFrame(WebSocketFrame frame)
{ {
var mask = Mask.Unmask;
return true; return true;
} }
@ -796,4 +794,4 @@ namespace SocketHttpListener
#endregion #endregion
} }
} }

6
debian/changelog vendored
View file

@ -1,3 +1,9 @@
jellyfin (3.5.2-4) unstable; urgency=medium
* Correct manifest.json bug and vdpau
-- Joshua Boniface <joshua@boniface.me> Thu, 20 Dec 2018 18:31:43 -0500
jellyfin (3.5.2-3) unstable; urgency=medium jellyfin (3.5.2-3) unstable; urgency=medium
* Correct several bugs in 3.5.2-2 packaging * Correct several bugs in 3.5.2-2 packaging