From 32320b329ac8f013248557b721627c2f1bf6e10a Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 29 Apr 2015 14:48:34 -0400 Subject: updated Mono.Nat --- .../EntryPoints/ExternalPortForwarding.cs | 28 ++++++++++++++---- .../FileOrganization/EpisodeFileOrganizer.cs | 3 +- .../Library/LibraryManager.cs | 33 ++++++++-------------- .../Library/Resolvers/Movies/MovieResolver.cs | 10 +++---- .../Library/Resolvers/TV/SeriesResolver.cs | 3 +- .../MediaBrowser.Server.Implementations.csproj | 6 ++-- .../packages.config | 4 +-- 7 files changed, 46 insertions(+), 41 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs b/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs index 06cbb9317..b5b63181a 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/ExternalPortForwarding.cs @@ -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.Pmp - //}; + NatUtility.EnabledProtocols = new List + { + 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(), 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 diff --git a/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs b/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs index 106e3c76b..e134670e3 100644 --- a/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs +++ b/MediaBrowser.Server.Implementations/FileOrganization/EpisodeFileOrganizer.cs @@ -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; diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index dcdf2aa7d..bafbecbc5 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -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