mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	Merge pull request #3033 from neilsb/autodiscover-url-override
Allow override of address published by auto discovery
This commit is contained in:
		
						commit
						9c00226f11
					
				@ -3,6 +3,7 @@ using System.Threading.Tasks;
 | 
			
		||||
using Emby.Server.Implementations.Udp;
 | 
			
		||||
using MediaBrowser.Controller;
 | 
			
		||||
using MediaBrowser.Controller.Plugins;
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
using Microsoft.Extensions.Logging;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Server.Implementations.EntryPoints
 | 
			
		||||
@ -22,6 +23,7 @@ namespace Emby.Server.Implementations.EntryPoints
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private readonly ILogger _logger;
 | 
			
		||||
        private readonly IServerApplicationHost _appHost;
 | 
			
		||||
        private readonly IConfiguration _config;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// The UDP server.
 | 
			
		||||
@ -35,18 +37,19 @@ namespace Emby.Server.Implementations.EntryPoints
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public UdpServerEntryPoint(
 | 
			
		||||
            ILogger<UdpServerEntryPoint> logger,
 | 
			
		||||
            IServerApplicationHost appHost)
 | 
			
		||||
            IServerApplicationHost appHost,
 | 
			
		||||
            IConfiguration configuration)
 | 
			
		||||
        {
 | 
			
		||||
            _logger = logger;
 | 
			
		||||
            _appHost = appHost;
 | 
			
		||||
 | 
			
		||||
            _config = configuration;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <inheritdoc />
 | 
			
		||||
        public async Task RunAsync()
 | 
			
		||||
        {
 | 
			
		||||
            _udpServer = new UdpServer(_logger, _appHost);
 | 
			
		||||
            _udpServer = new UdpServer(_logger, _appHost, _config);
 | 
			
		||||
            _udpServer.Start(PortNumber, _cancellationTokenSource.Token);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,5 @@
 | 
			
		||||
using System;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Server.Implementations
 | 
			
		||||
{
 | 
			
		||||
    public interface IStartupOptions
 | 
			
		||||
@ -36,5 +38,10 @@ namespace Emby.Server.Implementations
 | 
			
		||||
        /// Gets the value of the --plugin-manifest-url command line option.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        string PluginManifestUrl { get; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the value of the --published-server-url command line option.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        Uri PublishedServerUrl { get; }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -7,6 +7,7 @@ using System.Threading;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using MediaBrowser.Controller;
 | 
			
		||||
using MediaBrowser.Model.ApiClient;
 | 
			
		||||
using Microsoft.Extensions.Configuration;
 | 
			
		||||
using Microsoft.Extensions.Logging;
 | 
			
		||||
 | 
			
		||||
namespace Emby.Server.Implementations.Udp
 | 
			
		||||
@ -21,6 +22,12 @@ namespace Emby.Server.Implementations.Udp
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        private readonly ILogger _logger;
 | 
			
		||||
        private readonly IServerApplicationHost _appHost;
 | 
			
		||||
        private readonly IConfiguration _config;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Address Override Configuration Key.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public const string AddressOverrideConfigKey = "PublishedServerUrl";
 | 
			
		||||
 | 
			
		||||
        private Socket _udpSocket;
 | 
			
		||||
        private IPEndPoint _endpoint;
 | 
			
		||||
@ -31,15 +38,18 @@ namespace Emby.Server.Implementations.Udp
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Initializes a new instance of the <see cref="UdpServer" /> class.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public UdpServer(ILogger logger, IServerApplicationHost appHost)
 | 
			
		||||
        public UdpServer(ILogger logger, IServerApplicationHost appHost, IConfiguration configuration)
 | 
			
		||||
        {
 | 
			
		||||
            _logger = logger;
 | 
			
		||||
            _appHost = appHost;
 | 
			
		||||
            _config = configuration;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private async Task RespondToV2Message(string messageText, EndPoint endpoint, CancellationToken cancellationToken)
 | 
			
		||||
        {
 | 
			
		||||
            var localUrl = await _appHost.GetLocalApiUrl(cancellationToken).ConfigureAwait(false);
 | 
			
		||||
            string localUrl = !string.IsNullOrEmpty(_config[AddressOverrideConfigKey])
 | 
			
		||||
                ? _config[AddressOverrideConfigKey]
 | 
			
		||||
                : await _appHost.GetLocalApiUrl(cancellationToken).ConfigureAwait(false);
 | 
			
		||||
 | 
			
		||||
            if (!string.IsNullOrEmpty(localUrl))
 | 
			
		||||
            {
 | 
			
		||||
@ -105,7 +115,7 @@ namespace Emby.Server.Implementations.Udp
 | 
			
		||||
                }
 | 
			
		||||
                catch (SocketException ex)
 | 
			
		||||
                {
 | 
			
		||||
                    _logger.LogError(ex, "Failed to receive data drom socket");
 | 
			
		||||
                    _logger.LogError(ex, "Failed to receive data from socket");
 | 
			
		||||
                }
 | 
			
		||||
                catch (OperationCanceledException)
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,9 @@
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using CommandLine;
 | 
			
		||||
using Emby.Server.Implementations;
 | 
			
		||||
using Emby.Server.Implementations.EntryPoints;
 | 
			
		||||
using Emby.Server.Implementations.Udp;
 | 
			
		||||
using Emby.Server.Implementations.Updates;
 | 
			
		||||
using MediaBrowser.Controller.Extensions;
 | 
			
		||||
 | 
			
		||||
@ -80,6 +83,10 @@ namespace Jellyfin.Server
 | 
			
		||||
        [Option("plugin-manifest-url", Required = false, HelpText = "A custom URL for the plugin repository JSON manifest")]
 | 
			
		||||
        public string? PluginManifestUrl { get; set; }
 | 
			
		||||
 | 
			
		||||
        /// <inheritdoc />
 | 
			
		||||
        [Option("published-server-url", Required = false, HelpText = "Jellyfin Server URL to publish via auto discover process")]
 | 
			
		||||
        public Uri? PublishedServerUrl { get; set; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the command line options as a dictionary that can be used in the .NET configuration system.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
@ -98,6 +105,11 @@ namespace Jellyfin.Server
 | 
			
		||||
                config.Add(ConfigurationExtensions.HostWebClientKey, bool.FalseString);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (PublishedServerUrl != null)
 | 
			
		||||
            {
 | 
			
		||||
                config.Add(UdpServer.AddressOverrideConfigKey, PublishedServerUrl.ToString());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return config;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user