diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-11-14 00:45:13 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-11-14 00:45:13 -0500 |
| commit | 04a71e3a31a5c26a3d0c80d5f463071403239cad (patch) | |
| tree | b9adffc2ec48a02126d5818430192fe4a5e5bc6c | |
| parent | 9fb11f1a5692344715dfd6bc09410e3baf7e3fe1 (diff) | |
update mac project
| -rw-r--r-- | MediaBrowser.Server.Mac/Main.cs | 109 |
1 files changed, 100 insertions, 9 deletions
diff --git a/MediaBrowser.Server.Mac/Main.cs b/MediaBrowser.Server.Mac/Main.cs index 9d646547e..5aa6d9eea 100644 --- a/MediaBrowser.Server.Mac/Main.cs +++ b/MediaBrowser.Server.Mac/Main.cs @@ -1,17 +1,22 @@ -using System; +using MediaBrowser.Model.Logging; +using MediaBrowser.Server.Mono.Native; +using MediaBrowser.Server.Startup.Common; +using MediaBrowser.Server.Startup.Common.IO; +using MediaBrowser.Server.Implementations; +using System; using System.Diagnostics; -using System.Drawing; +using System.Globalization; using System.IO; using System.Linq; using System.Net; using System.Net.Security; using System.Reflection; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using System.Drawing; using System.Runtime.InteropServices; using System.Security.Cryptography.X509Certificates; using System.Threading; -using System.Threading.Tasks; -using MediaBrowser.Model.Logging; -using MediaBrowser.Server.Implementations; using MonoMac.AppKit; using MonoMac.Foundation; using MonoMac.ObjCRuntime; @@ -20,8 +25,8 @@ using Emby.Common.Implementations.Logging; using Emby.Server.Mac.Native; using Emby.Server.Implementations.IO; using Emby.Common.Implementations.Networking; -using MediaBrowser.Server.Startup.Common; -using MediaBrowser.Server.Startup.Common.IO; +using Emby.Common.Implementations.Security; +using Mono.Unix.Native; namespace MediaBrowser.Server.Mac { @@ -124,9 +129,95 @@ namespace MediaBrowser.Server.Mac Console.WriteLine ("appHost.Init"); Task.Run (() => StartServer(CancellationToken.None)); - } + } + + private static void GenerateCertificate(string certPath, string certHost) + { + CertificateGenerator.CreateSelfSignCertificatePfx(certPath, certHost, _logger); + } + + private static MonoEnvironmentInfo GetEnvironmentInfo() + { + var info = new MonoEnvironmentInfo(); + + var uname = GetUnixName(); + + var sysName = uname.sysname ?? string.Empty; + + if (string.Equals(sysName, "Darwin", StringComparison.OrdinalIgnoreCase)) + { + //info.OperatingSystem = Startup.Common.OperatingSystem.Osx; + } + else if (string.Equals(sysName, "Linux", StringComparison.OrdinalIgnoreCase)) + { + //info.OperatingSystem = Startup.Common.OperatingSystem.Linux; + } + else if (string.Equals(sysName, "BSD", StringComparison.OrdinalIgnoreCase)) + { + //info.OperatingSystem = Startup.Common.OperatingSystem.Bsd; + info.IsBsd = true; + } + + var archX86 = new Regex("(i|I)[3-6]86"); + + if (archX86.IsMatch(uname.machine)) + { + info.CustomArchitecture = Architecture.X86; + } + else if (string.Equals(uname.machine, "x86_64", StringComparison.OrdinalIgnoreCase)) + { + info.CustomArchitecture = Architecture.X64; + } + else if (uname.machine.StartsWith("arm", StringComparison.OrdinalIgnoreCase)) + { + info.CustomArchitecture = Architecture.Arm; + } + else if (System.Environment.Is64BitOperatingSystem) + { + info.CustomArchitecture = Architecture.X64; + } + else + { + info.CustomArchitecture = Architecture.X86; + } + + return info; + } + + private static Uname _unixName; + + private static Uname GetUnixName() + { + if (_unixName == null) + { + var uname = new Uname(); + try + { + Utsname utsname; + var callResult = Syscall.uname(out utsname); + if (callResult == 0) + { + uname.sysname = utsname.sysname ?? string.Empty; + uname.machine = utsname.machine ?? string.Empty; + } + + } + catch (Exception ex) + { + _logger.ErrorException("Error getting unix name", ex); + } + _unixName = uname; + } + return _unixName; + } + + public class Uname + { + public string sysname = string.Empty; + public string machine = string.Empty; + } - private static async void StartServer(CancellationToken cancellationToken) + private static async void StartServer(CancellationToken cancellationToken) { var initProgress = new Progress<double>(); |
