mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-24 11:05:08 +01:00
updated Mono.Nat
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using MediaBrowser.Controller;
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Dlna;
|
||||
using MediaBrowser.Controller.Plugins;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using Mono.Nat;
|
||||
@@ -7,6 +8,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
|
||||
@@ -17,15 +19,17 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
|
||||
private readonly IServerApplicationHost _appHost;
|
||||
private readonly ILogger _logger;
|
||||
private readonly IServerConfigurationManager _config;
|
||||
private readonly ISsdpHandler _ssdp;
|
||||
|
||||
private Timer _timer;
|
||||
private bool _isStarted;
|
||||
|
||||
public ExternalPortForwarding(ILogManager logmanager, IServerApplicationHost appHost, IServerConfigurationManager config)
|
||||
public ExternalPortForwarding(ILogManager logmanager, IServerApplicationHost appHost, IServerConfigurationManager config, ISsdpHandler ssdp)
|
||||
{
|
||||
_logger = logmanager.GetLogger("PortMapper");
|
||||
_appHost = appHost;
|
||||
_config = config;
|
||||
_ssdp = ssdp;
|
||||
}
|
||||
|
||||
private string _lastConfigIdentifier;
|
||||
@@ -75,10 +79,10 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
|
||||
private void Start()
|
||||
{
|
||||
_logger.Debug("Starting NAT discovery");
|
||||
//NatUtility.EnabledProtocols = new List<NatProtocol>
|
||||
//{
|
||||
// NatProtocol.Pmp
|
||||
//};
|
||||
NatUtility.EnabledProtocols = new List<NatProtocol>
|
||||
{
|
||||
NatProtocol.Pmp
|
||||
};
|
||||
NatUtility.DeviceFound += NatUtility_DeviceFound;
|
||||
|
||||
// Mono.Nat does never rise this event. The event is there however it is useless.
|
||||
@@ -93,11 +97,23 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
|
||||
|
||||
_timer = new Timer(s => _createdRules = new List<string>(), null, TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(5));
|
||||
|
||||
_ssdp.MessageReceived += _ssdp_MessageReceived;
|
||||
|
||||
_lastConfigIdentifier = GetConfigIdentifier();
|
||||
|
||||
_isStarted = true;
|
||||
}
|
||||
|
||||
void _ssdp_MessageReceived(object sender, SsdpMessageEventArgs e)
|
||||
{
|
||||
var endpoint = e.EndPoint as IPEndPoint;
|
||||
|
||||
if (endpoint != null && e.LocalIp != null)
|
||||
{
|
||||
NatUtility.Handle(e.LocalIp, e.Message, endpoint, NatProtocol.Upnp);
|
||||
}
|
||||
}
|
||||
|
||||
void NatUtility_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
var ex = e.ExceptionObject as Exception;
|
||||
@@ -183,6 +199,8 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
|
||||
_timer = null;
|
||||
}
|
||||
|
||||
_ssdp.MessageReceived -= _ssdp_MessageReceived;
|
||||
|
||||
try
|
||||
{
|
||||
// This is not a significant improvement
|
||||
|
||||
@@ -8,7 +8,6 @@ using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Extensions;
|
||||
using MediaBrowser.Model.FileOrganization;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using MediaBrowser.Naming.IO;
|
||||
using MediaBrowser.Server.Implementations.Library;
|
||||
using MediaBrowser.Server.Implementations.Logging;
|
||||
using System;
|
||||
@@ -60,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
|
||||
var namingOptions = ((LibraryManager) _libraryManager).GetNamingOptions();
|
||||
var resolver = new Naming.TV.EpisodeResolver(namingOptions, new PatternsLogger());
|
||||
|
||||
var episodeInfo = resolver.Resolve(path, FileInfoType.File) ??
|
||||
var episodeInfo = resolver.Resolve(path, false) ??
|
||||
new Naming.TV.EpisodeInfo();
|
||||
|
||||
var seriesName = episodeInfo.SeriesName;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using Interfaces.IO;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.IO;
|
||||
using MediaBrowser.Common.Progress;
|
||||
using MediaBrowser.Common.ScheduledTasks;
|
||||
@@ -17,7 +18,6 @@ using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using MediaBrowser.Naming.Audio;
|
||||
using MediaBrowser.Naming.Common;
|
||||
using MediaBrowser.Naming.IO;
|
||||
using MediaBrowser.Naming.TV;
|
||||
using MediaBrowser.Naming.Video;
|
||||
using MediaBrowser.Server.Implementations.Library.Validators;
|
||||
@@ -1767,14 +1767,13 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
var resolver = new EpisodeResolver(GetNamingOptions(),
|
||||
new PatternsLogger());
|
||||
|
||||
var fileType = episode.VideoType == VideoType.BluRay || episode.VideoType == VideoType.Dvd || episode.VideoType == VideoType.HdDvd ?
|
||||
FileInfoType.Directory :
|
||||
FileInfoType.File;
|
||||
var isFolder = episode.VideoType == VideoType.BluRay || episode.VideoType == VideoType.Dvd ||
|
||||
episode.VideoType == VideoType.HdDvd;
|
||||
|
||||
var locationType = episode.LocationType;
|
||||
|
||||
var episodeInfo = locationType == LocationType.FileSystem || locationType == LocationType.Offline ?
|
||||
resolver.Resolve(episode.Path, fileType) :
|
||||
resolver.Resolve(episode.Path, isFolder) :
|
||||
new Naming.TV.EpisodeInfo();
|
||||
|
||||
if (episodeInfo == null)
|
||||
@@ -1928,10 +1927,10 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
|
||||
var videoListResolver = new VideoListResolver(GetNamingOptions(), new PatternsLogger());
|
||||
|
||||
var videos = videoListResolver.Resolve(fileSystemChildren.Select(i => new PortableFileInfo
|
||||
var videos = videoListResolver.Resolve(fileSystemChildren.Select(i => new FileMetadata
|
||||
{
|
||||
FullName = i.FullName,
|
||||
Type = GetFileType(i)
|
||||
Id = i.FullName,
|
||||
IsFolder = ((i.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
|
||||
|
||||
}).ToList());
|
||||
|
||||
@@ -1962,16 +1961,6 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
}).OrderBy(i => i.Path).ToList();
|
||||
}
|
||||
|
||||
private FileInfoType GetFileType(FileSystemInfo info)
|
||||
{
|
||||
if ((info.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
|
||||
{
|
||||
return FileInfoType.Directory;
|
||||
}
|
||||
|
||||
return FileInfoType.File;
|
||||
}
|
||||
|
||||
public IEnumerable<Video> FindExtras(BaseItem owner, List<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService)
|
||||
{
|
||||
var files = fileSystemChildren.OfType<DirectoryInfo>()
|
||||
@@ -1981,10 +1970,10 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
|
||||
var videoListResolver = new VideoListResolver(GetNamingOptions(), new PatternsLogger());
|
||||
|
||||
var videos = videoListResolver.Resolve(fileSystemChildren.Select(i => new PortableFileInfo
|
||||
var videos = videoListResolver.Resolve(fileSystemChildren.Select(i => new FileMetadata
|
||||
{
|
||||
FullName = i.FullName,
|
||||
Type = GetFileType(i)
|
||||
Id = i.FullName,
|
||||
IsFolder = ((i.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
|
||||
|
||||
}).ToList());
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using Interfaces.IO;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Movies;
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
using MediaBrowser.Controller.Library;
|
||||
@@ -6,7 +7,6 @@ using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Controller.Resolvers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Extensions;
|
||||
using MediaBrowser.Naming.IO;
|
||||
using MediaBrowser.Naming.Video;
|
||||
using MediaBrowser.Server.Implementations.Logging;
|
||||
using System;
|
||||
@@ -118,10 +118,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
|
||||
var namingOptions = ((LibraryManager)LibraryManager).GetNamingOptions();
|
||||
|
||||
var resolver = new VideoListResolver(namingOptions, new PatternsLogger());
|
||||
var resolverResult = resolver.Resolve(files.Select(i => new PortableFileInfo
|
||||
var resolverResult = resolver.Resolve(files.Select(i => new FileMetadata
|
||||
{
|
||||
FullName = i.FullName,
|
||||
Type = FileInfoType.File
|
||||
Id = i.FullName,
|
||||
IsFolder = false
|
||||
|
||||
}).ToList(), suppportMultiEditions).ToList();
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@ using MediaBrowser.Controller.Resolvers;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using MediaBrowser.Naming.Common;
|
||||
using MediaBrowser.Naming.IO;
|
||||
using MediaBrowser.Naming.TV;
|
||||
using MediaBrowser.Server.Implementations.Logging;
|
||||
using System;
|
||||
@@ -153,7 +152,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
|
||||
}
|
||||
|
||||
var episodeResolver = new Naming.TV.EpisodeResolver(namingOptions, new PatternsLogger());
|
||||
var episodeInfo = episodeResolver.Resolve(fullName, FileInfoType.File, false);
|
||||
var episodeInfo = episodeResolver.Resolve(fullName, false, false);
|
||||
if (episodeInfo != null && episodeInfo.EpisodeNumber.HasValue)
|
||||
{
|
||||
return true;
|
||||
|
||||
@@ -50,11 +50,11 @@
|
||||
</Reference>
|
||||
<Reference Include="MediaBrowser.Naming, Version=1.0.5509.27636, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\MediaBrowser.Naming.1.0.0.32\lib\portable-net45+sl4+wp71+win8+wpa81\MediaBrowser.Naming.dll</HintPath>
|
||||
<HintPath>..\packages\MediaBrowser.Naming.1.0.0.34\lib\portable-net45+sl4+wp71+win8+wpa81\MediaBrowser.Naming.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Mono.Nat, Version=1.2.23.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<Reference Include="Mono.Nat, Version=1.2.24.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Mono.Nat.1.2.23.0\lib\net40\Mono.Nat.dll</HintPath>
|
||||
<HintPath>..\packages\Mono.Nat.1.2.24.0\lib\net40\Mono.Nat.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MoreLinq, Version=1.1.17511.0, Culture=neutral, PublicKeyToken=384d532d7e88985d, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Interfaces.IO" version="1.0.0.5" targetFramework="net45" />
|
||||
<package id="MediaBrowser.Naming" version="1.0.0.32" targetFramework="net45" />
|
||||
<package id="Mono.Nat" version="1.2.23.0" targetFramework="net45" />
|
||||
<package id="MediaBrowser.Naming" version="1.0.0.34" targetFramework="net45" />
|
||||
<package id="Mono.Nat" version="1.2.24.0" targetFramework="net45" />
|
||||
<package id="morelinq" version="1.1.0" targetFramework="net45" />
|
||||
<package id="Patterns.Logging" version="1.0.0.2" targetFramework="net45" />
|
||||
<package id="SocketHttpListener" version="1.0.0.5" targetFramework="net45" />
|
||||
|
||||
Reference in New Issue
Block a user