main app cleanup.
This commit is contained in:
parent
da2c0d1d65
commit
8900bbb3a1
|
@ -11,14 +11,14 @@ namespace NzbDrone.App.Test
|
||||||
[Test]
|
[Test]
|
||||||
public void Kernel_can_get_kernel()
|
public void Kernel_can_get_kernel()
|
||||||
{
|
{
|
||||||
CentralDispatch.Container.Should().NotBeNull();
|
NzbDroneBootstrapper.Container.Should().NotBeNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Kernel_should_return_same_kernel()
|
public void Kernel_should_return_same_kernel()
|
||||||
{
|
{
|
||||||
var firstKernel = CentralDispatch.Container;
|
var firstKernel = NzbDroneBootstrapper.Container;
|
||||||
var secondKernel = CentralDispatch.Container;
|
var secondKernel = NzbDroneBootstrapper.Container;
|
||||||
|
|
||||||
firstKernel.Should().BeSameAs(secondKernel);
|
firstKernel.Should().BeSameAs(secondKernel);
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ namespace NzbDrone.App.Test
|
||||||
[Test]
|
[Test]
|
||||||
public void Kernel_should_be_able_to_resolve_ApplicationServer()
|
public void Kernel_should_be_able_to_resolve_ApplicationServer()
|
||||||
{
|
{
|
||||||
var appServer = CentralDispatch.Container.Resolve<ApplicationServer>();
|
var appServer = NzbDroneBootstrapper.Container.Resolve<ApplicationServer>();
|
||||||
|
|
||||||
appServer.Should().NotBeNull();
|
appServer.Should().NotBeNull();
|
||||||
}
|
}
|
||||||
|
@ -34,8 +34,8 @@ namespace NzbDrone.App.Test
|
||||||
[Test]
|
[Test]
|
||||||
public void Kernel_should_resolve_same_ApplicationServer_instance()
|
public void Kernel_should_resolve_same_ApplicationServer_instance()
|
||||||
{
|
{
|
||||||
var appServer1 = CentralDispatch.Container.Resolve<ApplicationServer>();
|
var appServer1 = NzbDroneBootstrapper.Container.Resolve<ApplicationServer>();
|
||||||
var appServer2 = CentralDispatch.Container.Resolve<ApplicationServer>();
|
var appServer2 = NzbDroneBootstrapper.Container.Resolve<ApplicationServer>();
|
||||||
|
|
||||||
appServer1.Should().BeSameAs(appServer2);
|
appServer1.Should().BeSameAs(appServer2);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@ using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common;
|
using NzbDrone.Common;
|
||||||
using NzbDrone.Common.Model;
|
using NzbDrone.Common.Model;
|
||||||
using NzbDrone.Providers;
|
|
||||||
using NzbDrone.Test.Common;
|
using NzbDrone.Test.Common;
|
||||||
|
|
||||||
namespace NzbDrone.App.Test
|
namespace NzbDrone.App.Test
|
||||||
|
@ -24,14 +23,14 @@ namespace NzbDrone.App.Test
|
||||||
|
|
||||||
Mocker.GetMock<ProcessProvider>().Setup(c => c.GetProcessById(It.IsAny<int>())).Returns((ProcessInfo)null);
|
Mocker.GetMock<ProcessProvider>().Setup(c => c.GetProcessById(It.IsAny<int>())).Returns((ProcessInfo)null);
|
||||||
|
|
||||||
Mocker.Resolve<MonitoringProvider>().EnsurePriority(null);
|
Mocker.Resolve<PriorityMonitor>().EnsurePriority(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Ensure_should_log_warn_exception_rather_than_throw()
|
public void Ensure_should_log_warn_exception_rather_than_throw()
|
||||||
{
|
{
|
||||||
Mocker.GetMock<ProcessProvider>().Setup(c => c.GetCurrentProcess()).Throws<InvalidOperationException>();
|
Mocker.GetMock<ProcessProvider>().Setup(c => c.GetCurrentProcess()).Throws<InvalidOperationException>();
|
||||||
Mocker.Resolve<MonitoringProvider>().EnsurePriority(null);
|
Mocker.Resolve<PriorityMonitor>().EnsurePriority(null);
|
||||||
|
|
||||||
ExceptionVerification.ExpectedWarns(1);
|
ExceptionVerification.ExpectedWarns(1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
using System.IO;
|
using System.ServiceProcess;
|
||||||
using System.ServiceProcess;
|
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
using Moq;
|
using Moq;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using NzbDrone.Common;
|
using NzbDrone.Common;
|
||||||
using NzbDrone.Model;
|
|
||||||
using NzbDrone.Test.Common;
|
using NzbDrone.Test.Common;
|
||||||
using NzbDrone.Test.Common.AutoMoq;
|
|
||||||
|
|
||||||
namespace NzbDrone.App.Test
|
namespace NzbDrone.App.Test
|
||||||
{
|
{
|
||||||
|
@ -14,34 +11,34 @@ namespace NzbDrone.App.Test
|
||||||
public class RouterTest : TestBase
|
public class RouterTest : TestBase
|
||||||
{
|
{
|
||||||
|
|
||||||
[TestCase(null, ApplicationMode.Console)]
|
[TestCase(null, ApplicationModes.Console)]
|
||||||
[TestCase("", ApplicationMode.Console)]
|
[TestCase("", ApplicationModes.Console)]
|
||||||
[TestCase("1", ApplicationMode.Help)]
|
[TestCase("1", ApplicationModes.Help)]
|
||||||
[TestCase("ii", ApplicationMode.Help)]
|
[TestCase("ii", ApplicationModes.Help)]
|
||||||
[TestCase("uu", ApplicationMode.Help)]
|
[TestCase("uu", ApplicationModes.Help)]
|
||||||
[TestCase("i", ApplicationMode.InstallService)]
|
[TestCase("i", ApplicationModes.InstallService)]
|
||||||
[TestCase("I", ApplicationMode.InstallService)]
|
[TestCase("I", ApplicationModes.InstallService)]
|
||||||
[TestCase("/I", ApplicationMode.InstallService)]
|
[TestCase("/I", ApplicationModes.InstallService)]
|
||||||
[TestCase("/i", ApplicationMode.InstallService)]
|
[TestCase("/i", ApplicationModes.InstallService)]
|
||||||
[TestCase("-I", ApplicationMode.InstallService)]
|
[TestCase("-I", ApplicationModes.InstallService)]
|
||||||
[TestCase("-i", ApplicationMode.InstallService)]
|
[TestCase("-i", ApplicationModes.InstallService)]
|
||||||
[TestCase("u", ApplicationMode.UninstallService)]
|
[TestCase("u", ApplicationModes.UninstallService)]
|
||||||
[TestCase("U", ApplicationMode.UninstallService)]
|
[TestCase("U", ApplicationModes.UninstallService)]
|
||||||
[TestCase("/U", ApplicationMode.UninstallService)]
|
[TestCase("/U", ApplicationModes.UninstallService)]
|
||||||
[TestCase("/u", ApplicationMode.UninstallService)]
|
[TestCase("/u", ApplicationModes.UninstallService)]
|
||||||
[TestCase("-U", ApplicationMode.UninstallService)]
|
[TestCase("-U", ApplicationModes.UninstallService)]
|
||||||
[TestCase("-u", ApplicationMode.UninstallService)]
|
[TestCase("-u", ApplicationModes.UninstallService)]
|
||||||
public void GetApplicationMode_single_arg(string arg, ApplicationMode mode)
|
public void GetApplicationMode_single_arg(string arg, ApplicationModes modes)
|
||||||
{
|
{
|
||||||
Router.GetApplicationMode(new[] { arg }).Should().Be(mode);
|
Router.GetApplicationMode(new[] { arg }).Should().Be(modes);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase("", "", ApplicationMode.Console)]
|
[TestCase("", "", ApplicationModes.Console)]
|
||||||
[TestCase("", null, ApplicationMode.Console)]
|
[TestCase("", null, ApplicationModes.Console)]
|
||||||
[TestCase("i", "n", ApplicationMode.Help)]
|
[TestCase("i", "n", ApplicationModes.Help)]
|
||||||
public void GetApplicationMode_two_args(string a, string b, ApplicationMode mode)
|
public void GetApplicationMode_two_args(string a, string b, ApplicationModes modes)
|
||||||
{
|
{
|
||||||
Router.GetApplicationMode(new[] { a, b }).Should().Be(mode);
|
Router.GetApplicationMode(new[] { a, b }).Should().Be(modes);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
@ -53,7 +50,7 @@ namespace NzbDrone.App.Test
|
||||||
serviceProviderMock.Setup(c => c.Start(ServiceProvider.NZBDRONE_SERVICE_NAME));
|
serviceProviderMock.Setup(c => c.Start(ServiceProvider.NZBDRONE_SERVICE_NAME));
|
||||||
Mocker.GetMock<EnvironmentProvider>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
Mocker.GetMock<EnvironmentProvider>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
||||||
|
|
||||||
Mocker.Resolve<Router>().Route(ApplicationMode.InstallService);
|
Mocker.Resolve<Router>().Route(ApplicationModes.InstallService);
|
||||||
|
|
||||||
serviceProviderMock.Verify(c => c.Install(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Once());
|
serviceProviderMock.Verify(c => c.Install(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Once());
|
||||||
}
|
}
|
||||||
|
@ -67,7 +64,7 @@ namespace NzbDrone.App.Test
|
||||||
Mocker.GetMock<EnvironmentProvider>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
Mocker.GetMock<EnvironmentProvider>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
||||||
serviceProviderMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(true);
|
serviceProviderMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(true);
|
||||||
|
|
||||||
Mocker.Resolve<Router>().Route(ApplicationMode.UninstallService);
|
Mocker.Resolve<Router>().Route(ApplicationModes.UninstallService);
|
||||||
|
|
||||||
serviceProviderMock.Verify(c => c.UnInstall(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Once());
|
serviceProviderMock.Verify(c => c.UnInstall(ServiceProvider.NZBDRONE_SERVICE_NAME), Times.Once());
|
||||||
}
|
}
|
||||||
|
@ -81,17 +78,17 @@ namespace NzbDrone.App.Test
|
||||||
appServerProvider.Setup(c => c.Start());
|
appServerProvider.Setup(c => c.Start());
|
||||||
Mocker.GetMock<EnvironmentProvider>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
Mocker.GetMock<EnvironmentProvider>().SetupGet(c => c.IsUserInteractive).Returns(true);
|
||||||
|
|
||||||
Mocker.Resolve<Router>().Route(ApplicationMode.Console);
|
Mocker.Resolve<Router>().Route(ApplicationModes.Console);
|
||||||
|
|
||||||
consoleProvider.Verify(c => c.WaitForClose(), Times.Once());
|
consoleProvider.Verify(c => c.WaitForClose(), Times.Once());
|
||||||
appServerProvider.Verify(c => c.Start(), Times.Once());
|
appServerProvider.Verify(c => c.Start(), Times.Once());
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestCase(ApplicationMode.Console)]
|
[TestCase(ApplicationModes.Console)]
|
||||||
[TestCase(ApplicationMode.InstallService)]
|
[TestCase(ApplicationModes.InstallService)]
|
||||||
[TestCase(ApplicationMode.UninstallService)]
|
[TestCase(ApplicationModes.UninstallService)]
|
||||||
[TestCase(ApplicationMode.Help)]
|
[TestCase(ApplicationModes.Help)]
|
||||||
public void Route_should_call_service_start_when_run_in_service_more(ApplicationMode applicationMode)
|
public void Route_should_call_service_start_when_run_in_service_more(ApplicationModes applicationModes)
|
||||||
{
|
{
|
||||||
var envMock = Mocker.GetMock<EnvironmentProvider>();
|
var envMock = Mocker.GetMock<EnvironmentProvider>();
|
||||||
var serviceProvider = Mocker.GetMock<ServiceProvider>();
|
var serviceProvider = Mocker.GetMock<ServiceProvider>();
|
||||||
|
@ -100,7 +97,7 @@ namespace NzbDrone.App.Test
|
||||||
|
|
||||||
serviceProvider.Setup(c => c.Run(It.IsAny<ServiceBase>()));
|
serviceProvider.Setup(c => c.Run(It.IsAny<ServiceBase>()));
|
||||||
|
|
||||||
Mocker.Resolve<Router>().Route(applicationMode);
|
Mocker.Resolve<Router>().Route(applicationModes);
|
||||||
|
|
||||||
serviceProvider.Verify(c => c.Run(It.IsAny<ServiceBase>()), Times.Once());
|
serviceProvider.Verify(c => c.Run(It.IsAny<ServiceBase>()), Times.Once());
|
||||||
}
|
}
|
||||||
|
@ -116,7 +113,7 @@ namespace NzbDrone.App.Test
|
||||||
consoleMock.Setup(c => c.PrintServiceAlreadyExist());
|
consoleMock.Setup(c => c.PrintServiceAlreadyExist());
|
||||||
serviceMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(true);
|
serviceMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(true);
|
||||||
|
|
||||||
Mocker.Resolve<Router>().Route(ApplicationMode.InstallService);
|
Mocker.Resolve<Router>().Route(ApplicationModes.InstallService);
|
||||||
|
|
||||||
Mocker.VerifyAllMocks();
|
Mocker.VerifyAllMocks();
|
||||||
}
|
}
|
||||||
|
@ -131,7 +128,7 @@ namespace NzbDrone.App.Test
|
||||||
consoleMock.Setup(c => c.PrintServiceDoestExist());
|
consoleMock.Setup(c => c.PrintServiceDoestExist());
|
||||||
serviceMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(false);
|
serviceMock.Setup(c => c.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME)).Returns(false);
|
||||||
|
|
||||||
Mocker.Resolve<Router>().Route(ApplicationMode.UninstallService);
|
Mocker.Resolve<Router>().Route(ApplicationModes.UninstallService);
|
||||||
|
|
||||||
Mocker.VerifyAllMocks();
|
Mocker.VerifyAllMocks();
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,11 +35,12 @@ namespace NzbDrone.Common
|
||||||
public void StartServer()
|
public void StartServer()
|
||||||
{
|
{
|
||||||
_host = new NancyHost(new Uri(AppUrl), _bootstrapper);
|
_host = new NancyHost(new Uri(AppUrl), _bootstrapper);
|
||||||
|
_host.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string AppUrl
|
public string AppUrl
|
||||||
{
|
{
|
||||||
get { return string.Format("http://localhost:{0}/", _configFileProvider.Port); }
|
get { return string.Format("http://localhost:{0}", _configFileProvider.Port); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace NzbDrone.Console
|
||||||
|
{
|
||||||
|
public static class AppMain
|
||||||
|
{
|
||||||
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
NzbDrone.AppMain.Main(args);
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
System.Console.WriteLine(e.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
System.Console.WriteLine("Press enter to exit...");
|
||||||
|
System.Console.ReadLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
<ProjectGuid>{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}</ProjectGuid>
|
<ProjectGuid>{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}</ProjectGuid>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>NzbDrone</RootNamespace>
|
<RootNamespace>NzbDrone.Console</RootNamespace>
|
||||||
<AssemblyName>NzbDrone.Console</AssemblyName>
|
<AssemblyName>NzbDrone.Console</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
<OutputPath>..\NzbDrone\bin\Debug\</OutputPath>
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
|
@ -55,75 +55,35 @@
|
||||||
<IntermediateOutputPath>C:\Users\Mark\AppData\Local\Temp\vs1A55.tmp\x86\Release\</IntermediateOutputPath>
|
<IntermediateOutputPath>C:\Users\Mark\AppData\Local\Temp\vs1A55.tmp\x86\Release\</IntermediateOutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ApplicationIcon>NzbDrone.ico</ApplicationIcon>
|
<ApplicationIcon>
|
||||||
|
</ApplicationIcon>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<StartupObject>NzbDrone.AppMain</StartupObject>
|
<StartupObject>NzbDrone.Console.AppMain</StartupObject>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
|
<RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Autofac, Version=3.0.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\Autofac.3.0.1\lib\net40\Autofac.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Autofac.Configuration, Version=3.0.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\Autofac.3.0.1\lib\net40\Autofac.Configuration.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Exceptron.Client, Version=1.0.20.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\Exceptron.Client.1.0.20\lib\net20\Exceptron.Client.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Exceptron.NLog">
|
|
||||||
<HintPath>..\packages\Exceptron.Nlog.1.0.11\lib\net20\Exceptron.NLog.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Nancy, Version=0.16.1.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\Nancy.0.16.1\lib\net40\Nancy.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Nancy.Bootstrappers.Autofac, Version=0.16.1.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\Nancy.Bootstrappers.Autofac.0.16.1\lib\net40\Nancy.Bootstrappers.Autofac.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Nancy.Hosting.Self, Version=0.16.1.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\packages\Nancy.Hosting.Self.0.16.1\lib\net40\Nancy.Hosting.Self.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="NLog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\NLog.2.0.0.2000\lib\net40\NLog.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.ServiceProcess" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="..\NzbDrone.Common\Properties\SharedAssemblyInfo.cs">
|
<Compile Include="..\NzbDrone.Common\Properties\SharedAssemblyInfo.cs">
|
||||||
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
<Link>Properties\SharedAssemblyInfo.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="ApplicationServer.cs">
|
|
||||||
<SubType>Component</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="CentralDispatch.cs" />
|
|
||||||
<Compile Include="Model\ApplicationMode.cs" />
|
|
||||||
<Compile Include="AppMain.cs" />
|
<Compile Include="AppMain.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Providers\MonitoringProvider.cs" />
|
|
||||||
<Compile Include="Router.cs" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="app.config" />
|
<None Include="..\NzbDrone\NLog.config">
|
||||||
<Content Include="NLog.config">
|
<Link>NLog.config</Link>
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
</None>
|
||||||
</Content>
|
<None Include="..\NzbDrone\NLog.xsd">
|
||||||
<None Include="NLog.xsd">
|
<Link>NLog.xsd</Link>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</None>
|
</None>
|
||||||
<None Include="packages.config" />
|
<None Include="app.config" />
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="NzbDrone.ico" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
|
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
|
||||||
|
@ -148,19 +108,16 @@
|
||||||
</BootstrapperPackage>
|
</BootstrapperPackage>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\NzbDrone.Api\NzbDrone.Api.csproj">
|
<ProjectReference Include="..\NzbDrone\NzbDrone.csproj">
|
||||||
<Project>{fd286df8-2d3a-4394-8ad5-443fade55fb2}</Project>
|
<Project>{d12f7f2f-8a3c-415f-88fa-6dd061a84869}</Project>
|
||||||
<Name>NzbDrone.Api</Name>
|
<Name>NzbDrone</Name>
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\NzbDrone.Common\NzbDrone.Common.csproj">
|
|
||||||
<Project>{F2BE0FDF-6E47-4827-A420-DD4EF82407F8}</Project>
|
|
||||||
<Name>NzbDrone.Common</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\NzbDrone.Core\NzbDrone.Core.csproj">
|
|
||||||
<Project>{FF5EE3B6-913B-47CE-9CEB-11C51B4E1205}</Project>
|
|
||||||
<Name>NzbDrone.Core</Name>
|
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="..\NzbDrone\NzbDrone.ico">
|
||||||
|
<Link>NzbDrone.ico</Link>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PreBuildEvent>
|
<PreBuildEvent>
|
|
@ -0,0 +1,15 @@
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
// General Information about an assembly is controlled through the following
|
||||||
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
// associated with an assembly.
|
||||||
|
|
||||||
|
[assembly: AssemblyTitle("NzbDrone.exe")]
|
||||||
|
[assembly: Guid("67AADCD9-89AA-4D95-8281-3193740E70E5")]
|
||||||
|
|
||||||
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
|
// by using the '*' as shown below:
|
||||||
|
|
||||||
|
[assembly: AssemblyVersion("1.0.0.*")]
|
||||||
|
[assembly: AssemblyFileVersion("1.0.0.*")]
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<startup useLegacyV2RuntimeActivationPolicy="true">
|
||||||
|
<supportedRuntime version="v4.0" />
|
||||||
|
</startup>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.5.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
|
</configuration>
|
|
@ -1,5 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Sqo;
|
using Sqo;
|
||||||
|
|
||||||
|
@ -16,6 +17,37 @@ namespace NzbDrone.Core.Datastore
|
||||||
void DeleteMany<T>(IEnumerable<T> objects) where T : ModelBase;
|
void DeleteMany<T>(IEnumerable<T> objects) where T : ModelBase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class SiaqodbLogger
|
||||||
|
{
|
||||||
|
public static void ListenTo(Siaqodb db)
|
||||||
|
{
|
||||||
|
db.DeletedObject += OnDeletedObject;
|
||||||
|
db.LoadingObject +=OnLoadingObject;
|
||||||
|
db.LoadedObject +=OnLoadedObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void OnLoadedObject(object sender, LoadedObjectEventArgs e)
|
||||||
|
{
|
||||||
|
Write("Loaded", e.Object.GetType(), e.OID);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void OnLoadingObject(object sender, LoadingObjectEventArgs e)
|
||||||
|
{
|
||||||
|
Write("Loading", e.ObjectType, e.OID);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void OnDeletedObject(object sender, DeletedEventsArgs e)
|
||||||
|
{
|
||||||
|
Write("Deleted", e.ObjectType, e.OID);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Write(string operation, Type modelType, int id)
|
||||||
|
{
|
||||||
|
var message = string.Format("{0} {1}[{2}]", operation, modelType.Name, id);
|
||||||
|
Trace.WriteLine(message, "Siaqodb");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class SiaqodbProxy : IObjectDatabase
|
public class SiaqodbProxy : IObjectDatabase
|
||||||
{
|
{
|
||||||
private readonly Siaqodb _db;
|
private readonly Siaqodb _db;
|
||||||
|
@ -23,8 +55,11 @@ namespace NzbDrone.Core.Datastore
|
||||||
public SiaqodbProxy(Siaqodb db)
|
public SiaqodbProxy(Siaqodb db)
|
||||||
{
|
{
|
||||||
_db = db;
|
_db = db;
|
||||||
|
//SiaqodbConfigurator.SetRaiseLoadEvents(true);
|
||||||
|
//SiaqodbLogger.ListenTo(_db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -32,7 +67,7 @@ namespace NzbDrone.Core.Datastore
|
||||||
|
|
||||||
public IEnumerable<T> AsQueryable<T>()
|
public IEnumerable<T> AsQueryable<T>()
|
||||||
{
|
{
|
||||||
return _db.Cast<T>();
|
return _db.LoadAllLazy<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public T Insert<T>(T obj) where T : ModelBase
|
public T Insert<T>(T obj) where T : ModelBase
|
||||||
|
|
|
@ -23,15 +23,7 @@ namespace NzbDrone.Core.Instrumentation
|
||||||
|
|
||||||
private static object GetLogger(Type type)
|
private static object GetLogger(Type type)
|
||||||
{
|
{
|
||||||
const string STRING_TO_REMOVE = "NzbDrone";
|
return LogManager.GetLogger(type.Name);
|
||||||
|
|
||||||
var loggerName = type.FullName;
|
|
||||||
if (loggerName.StartsWith(STRING_TO_REMOVE))
|
|
||||||
{
|
|
||||||
loggerName = loggerName.Substring(STRING_TO_REMOVE.Length + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return LogManager.GetLogger(loggerName);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -12,7 +12,6 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: Guid("3C29FEF7-4B07-49ED-822E-1C29DC49BFAB")]
|
[assembly: Guid("3C29FEF7-4B07-49ED-822E-1C29DC49BFAB")]
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("NzbDrone.Core.Test")]
|
[assembly: InternalsVisibleTo("NzbDrone.Core.Test")]
|
||||||
[assembly: InternalsVisibleTo("NzbDrone.Web")]
|
|
||||||
|
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
|
|
40
NzbDrone.sln
40
NzbDrone.sln
|
@ -40,8 +40,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{1E6B3C
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone.Api", "NzbDrone.Api\NzbDrone.Api.csproj", "{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone.Api", "NzbDrone.Api\NzbDrone.Api.csproj", "{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone.Console", "NzbDrone\NzbDrone.Console.csproj", "{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E0BC607C-90DC-4B3B-A2FB-7DC5B45338A4}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E0BC607C-90DC-4B3B-A2FB-7DC5B45338A4}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
JSLintOptions.xml = JSLintOptions.xml
|
JSLintOptions.xml = JSLintOptions.xml
|
||||||
|
@ -53,6 +51,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone.Backbone", "NzbDro
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Autofac.Integration.Mvc", "Autofac.Integration.Mvc\Autofac.Integration.Mvc.csproj", "{DD874E64-C7EC-464D-925F-CF4A709EDEEF}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Autofac.Integration.Mvc", "Autofac.Integration.Mvc\Autofac.Integration.Mvc.csproj", "{DD874E64-C7EC-464D-925F-CF4A709EDEEF}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NzbDrone.Console", "NzbDrone.Console\NzbDrone.Console.csproj", "{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
@ -320,24 +320,6 @@ Global
|
||||||
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Services|Mixed Platforms.Build.0 = Release|Any CPU
|
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Services|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Services|x64.ActiveCfg = Release|Any CPU
|
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Services|x64.ActiveCfg = Release|Any CPU
|
||||||
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Services|x86.ActiveCfg = Release|Any CPU
|
{FD286DF8-2D3A-4394-8AD5-443FADE55FB2}.Services|x86.ActiveCfg = Release|Any CPU
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|Any CPU.ActiveCfg = Debug|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|x64.ActiveCfg = Debug|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|x86.ActiveCfg = Debug|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|x86.Build.0 = Debug|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|Any CPU.ActiveCfg = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|Mixed Platforms.Build.0 = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|x64.ActiveCfg = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|x86.ActiveCfg = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|x86.Build.0 = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|Any CPU.ActiveCfg = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|Mixed Platforms.ActiveCfg = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|Mixed Platforms.Build.0 = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|x64.ActiveCfg = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|x86.ActiveCfg = Release|x86
|
|
||||||
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|x86.Build.0 = Release|x86
|
|
||||||
{64E5482F-0C4F-46C6-9377-699D3EADBA9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{64E5482F-0C4F-46C6-9377-699D3EADBA9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{64E5482F-0C4F-46C6-9377-699D3EADBA9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{64E5482F-0C4F-46C6-9377-699D3EADBA9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{64E5482F-0C4F-46C6-9377-699D3EADBA9E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
{64E5482F-0C4F-46C6-9377-699D3EADBA9E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||||
|
@ -389,6 +371,24 @@ Global
|
||||||
{DD874E64-C7EC-464D-925F-CF4A709EDEEF}.Services|Mixed Platforms.Build.0 = Release|Any CPU
|
{DD874E64-C7EC-464D-925F-CF4A709EDEEF}.Services|Mixed Platforms.Build.0 = Release|Any CPU
|
||||||
{DD874E64-C7EC-464D-925F-CF4A709EDEEF}.Services|x64.ActiveCfg = Release|Any CPU
|
{DD874E64-C7EC-464D-925F-CF4A709EDEEF}.Services|x64.ActiveCfg = Release|Any CPU
|
||||||
{DD874E64-C7EC-464D-925F-CF4A709EDEEF}.Services|x86.ActiveCfg = Release|Any CPU
|
{DD874E64-C7EC-464D-925F-CF4A709EDEEF}.Services|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|x64.ActiveCfg = Debug|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|Any CPU.ActiveCfg = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|x64.ActiveCfg = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Release|x86.Build.0 = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|Any CPU.ActiveCfg = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|Mixed Platforms.ActiveCfg = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|Mixed Platforms.Build.0 = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|x64.ActiveCfg = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|x86.ActiveCfg = Release|x86
|
||||||
|
{3DCA7B58-B8B3-49AC-9D9E-56F4A0460976}.Services|x86.Build.0 = Release|x86
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
@ -1,18 +1,23 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using NzbDrone.Providers;
|
|
||||||
using Autofac;
|
using Autofac;
|
||||||
|
using NLog;
|
||||||
|
|
||||||
namespace NzbDrone
|
namespace NzbDrone
|
||||||
{
|
{
|
||||||
public static class AppMain
|
public static class AppMain
|
||||||
{
|
{
|
||||||
|
private static readonly Logger logger = LogManager.GetLogger("AppMain");
|
||||||
|
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Console.WriteLine("Starting NzbDrone Console. Version " + Assembly.GetExecutingAssembly().GetName().Version);
|
logger.Info("Starting NzbDrone Console. Version {0}", Assembly.GetExecutingAssembly().GetName().Version);
|
||||||
|
|
||||||
|
AppDomain.CurrentDomain.UnhandledException += ((s, e) => AppDomainException(e.ExceptionObject as Exception));
|
||||||
|
|
||||||
//Check if full version .NET is installed.
|
//Check if full version .NET is installed.
|
||||||
try
|
try
|
||||||
|
@ -21,29 +26,35 @@ namespace NzbDrone
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
Console.WriteLine("It looks like you don't have full version of .NET Framework installed. Press any key and you will be directed to the download page.");
|
logger.Error("It looks like you don't have full version of .NET Framework installed. Press any key and you will be directed to the download page.");
|
||||||
Console.Read();
|
Console.Read();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Process.Start("http://www.microsoft.com/download/en/details.aspx?id=17851");
|
Process.Start("http://www.microsoft.com/download/en/details.aspx?id=17851");
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Opps. can't start default browser. Please visit http://www.microsoft.com/download/en/details.aspx?id=17851 to download .NET Framework 4.");
|
logger.Warn("Oops. can't start default browser. Please visit http://www.microsoft.com/download/en/details.aspx?id=17851 to download .NET Framework 4.");
|
||||||
Console.ReadLine();
|
Console.ReadLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CentralDispatch.Container.Resolve<Router>().Route(args);
|
NzbDroneBootstrapper.Container.Resolve<Router>().Route(args);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
MonitoringProvider.AppDomainException(e);
|
AppDomainException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void AppDomainException(Exception exception)
|
||||||
|
{
|
||||||
|
Console.WriteLine("EPIC FAIL: {0}", exception);
|
||||||
|
logger.FatalException("EPIC FAIL: " + exception.Message, exception);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,12 +1,11 @@
|
||||||
namespace NzbDrone.Model
|
namespace NzbDrone
|
||||||
{
|
{
|
||||||
public enum ApplicationMode
|
public enum ApplicationModes
|
||||||
{
|
{
|
||||||
Console,
|
Console,
|
||||||
Help,
|
Help,
|
||||||
InstallService,
|
InstallService,
|
||||||
UninstallService,
|
UninstallService,
|
||||||
Service,
|
Service,
|
||||||
Nancy
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,10 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.ServiceProcess;
|
using System.ServiceProcess;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common;
|
using NzbDrone.Common;
|
||||||
using NzbDrone.Providers;
|
|
||||||
|
|
||||||
|
|
||||||
namespace NzbDrone
|
namespace NzbDrone
|
||||||
|
@ -17,22 +14,20 @@ namespace NzbDrone
|
||||||
private readonly EnvironmentProvider _environmentProvider;
|
private readonly EnvironmentProvider _environmentProvider;
|
||||||
private readonly IHostController _hostController;
|
private readonly IHostController _hostController;
|
||||||
private readonly ProcessProvider _processProvider;
|
private readonly ProcessProvider _processProvider;
|
||||||
private readonly MonitoringProvider _monitoringProvider;
|
private readonly PriorityMonitor _priorityMonitor;
|
||||||
private readonly SecurityProvider _securityProvider;
|
private readonly SecurityProvider _securityProvider;
|
||||||
private readonly DiskProvider _diskProvider;
|
|
||||||
|
|
||||||
public ApplicationServer(ConfigFileProvider configFileProvider, IHostController hostController,
|
public ApplicationServer(ConfigFileProvider configFileProvider, IHostController hostController,
|
||||||
EnvironmentProvider environmentProvider,
|
EnvironmentProvider environmentProvider,
|
||||||
ProcessProvider processProvider, MonitoringProvider monitoringProvider,
|
ProcessProvider processProvider, PriorityMonitor priorityMonitor,
|
||||||
SecurityProvider securityProvider, DiskProvider diskProvider)
|
SecurityProvider securityProvider)
|
||||||
{
|
{
|
||||||
_configFileProvider = configFileProvider;
|
_configFileProvider = configFileProvider;
|
||||||
_hostController = hostController;
|
_hostController = hostController;
|
||||||
_environmentProvider = environmentProvider;
|
_environmentProvider = environmentProvider;
|
||||||
_processProvider = processProvider;
|
_processProvider = processProvider;
|
||||||
_monitoringProvider = monitoringProvider;
|
_priorityMonitor = priorityMonitor;
|
||||||
_securityProvider = securityProvider;
|
_securityProvider = securityProvider;
|
||||||
_diskProvider = diskProvider;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ApplicationServer()
|
public ApplicationServer()
|
||||||
|
@ -47,19 +42,9 @@ namespace NzbDrone
|
||||||
|
|
||||||
public virtual void Start()
|
public virtual void Start()
|
||||||
{
|
{
|
||||||
_hostController.StopServer();
|
|
||||||
_securityProvider.MakeAccessible();
|
_securityProvider.MakeAccessible();
|
||||||
|
|
||||||
if(_securityProvider.IsCurrentUserAdmin())
|
|
||||||
{
|
|
||||||
var tempFiles = Path.Combine(RuntimeEnvironment.GetRuntimeDirectory(), "Temporary ASP.NET Files");
|
|
||||||
logger.Debug("Creating Temporary ASP.Net folder: {0}", tempFiles);
|
|
||||||
_diskProvider.CreateDirectory(tempFiles);
|
|
||||||
}
|
|
||||||
|
|
||||||
_hostController.StartServer();
|
_hostController.StartServer();
|
||||||
//Todo: verify that IIS is actually started
|
|
||||||
|
|
||||||
|
|
||||||
if (_environmentProvider.IsUserInteractive && _configFileProvider.LaunchBrowser)
|
if (_environmentProvider.IsUserInteractive && _configFileProvider.LaunchBrowser)
|
||||||
{
|
{
|
||||||
|
@ -74,7 +59,7 @@ namespace NzbDrone
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_monitoringProvider.Start();
|
_priorityMonitor.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnStop()
|
protected override void OnStop()
|
||||||
|
|
|
@ -68,6 +68,12 @@
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\packages\Autofac.3.0.1\lib\net40\Autofac.dll</HintPath>
|
<HintPath>..\packages\Autofac.3.0.1\lib\net40\Autofac.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="Exceptron.Client">
|
||||||
|
<HintPath>..\packages\Exceptron.Client.1.0.20\lib\net20\Exceptron.Client.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Exceptron.NLog">
|
||||||
|
<HintPath>..\packages\Exceptron.Nlog.1.0.11\lib\net20\Exceptron.NLog.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="Nancy">
|
<Reference Include="Nancy">
|
||||||
<HintPath>..\packages\Nancy.0.16.1\lib\net40\Nancy.dll</HintPath>
|
<HintPath>..\packages\Nancy.0.16.1\lib\net40\Nancy.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
@ -92,15 +98,21 @@
|
||||||
<Compile Include="ApplicationServer.cs">
|
<Compile Include="ApplicationServer.cs">
|
||||||
<SubType>Component</SubType>
|
<SubType>Component</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="CentralDispatch.cs" />
|
<Compile Include="NzbDroneBootstrapper.cs" />
|
||||||
<Compile Include="Model\ApplicationMode.cs" />
|
<Compile Include="ApplicationMode.cs" />
|
||||||
<Compile Include="AppMain.cs" />
|
<Compile Include="AppMain.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Providers\MonitoringProvider.cs" />
|
<Compile Include="PriorityMonitor.cs" />
|
||||||
<Compile Include="Router.cs" />
|
<Compile Include="Router.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="app.config" />
|
<None Include="app.config" />
|
||||||
|
<None Include="NLog.config">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="NLog.xsd">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</None>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
<ProjectConfiguration>
|
|
||||||
<CopyReferencedAssembliesToWorkspace>false</CopyReferencedAssembliesToWorkspace>
|
|
||||||
<ConsiderInconclusiveTestsAsPassing>false</ConsiderInconclusiveTestsAsPassing>
|
|
||||||
<PreloadReferencedAssemblies>false</PreloadReferencedAssemblies>
|
|
||||||
<AllowDynamicCodeContractChecking>true</AllowDynamicCodeContractChecking>
|
|
||||||
<AllowStaticCodeContractChecking>false</AllowStaticCodeContractChecking>
|
|
||||||
<IgnoreThisComponentCompletely>false</IgnoreThisComponentCompletely>
|
|
||||||
<RunPreBuildEvents>false</RunPreBuildEvents>
|
|
||||||
<RunPostBuildEvents>false</RunPostBuildEvents>
|
|
||||||
<PreviouslyBuiltSuccessfully>true</PreviouslyBuiltSuccessfully>
|
|
||||||
<InstrumentAssembly>true</InstrumentAssembly>
|
|
||||||
<PreventSigningOfAssembly>false</PreventSigningOfAssembly>
|
|
||||||
<AnalyseExecutionTimes>true</AnalyseExecutionTimes>
|
|
||||||
<IncludeStaticReferencesInWorkspace>true</IncludeStaticReferencesInWorkspace>
|
|
||||||
<DefaultTestTimeout>60000</DefaultTestTimeout>
|
|
||||||
<UseBuildConfiguration></UseBuildConfiguration>
|
|
||||||
<UseBuildPlatform />
|
|
||||||
<ProxyProcessPath></ProxyProcessPath>
|
|
||||||
<UseCPUArchitecture>AutoDetect</UseCPUArchitecture>
|
|
||||||
<HiddenWarnings>PostBuildEventDisabled</HiddenWarnings>
|
|
||||||
</ProjectConfiguration>
|
|
|
@ -7,12 +7,12 @@ using NzbDrone.Core.Instrumentation;
|
||||||
|
|
||||||
namespace NzbDrone
|
namespace NzbDrone
|
||||||
{
|
{
|
||||||
public static class CentralDispatch
|
public static class NzbDroneBootstrapper
|
||||||
{
|
{
|
||||||
private static readonly IContainer container;
|
private static readonly IContainer container;
|
||||||
private static readonly Logger logger = LogManager.GetLogger("Host.CentralDispatch");
|
private static readonly Logger logger = LogManager.GetLogger("NzbDroneBootstrapper");
|
||||||
|
|
||||||
static CentralDispatch()
|
static NzbDroneBootstrapper()
|
||||||
{
|
{
|
||||||
var builder = new ContainerBuilder();
|
var builder = new ContainerBuilder();
|
||||||
BindKernel(builder);
|
BindKernel(builder);
|
|
@ -1,29 +1,27 @@
|
||||||
using System;
|
using System.Linq;
|
||||||
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common;
|
using NzbDrone.Common;
|
||||||
|
|
||||||
namespace NzbDrone.Providers
|
namespace NzbDrone
|
||||||
{
|
{
|
||||||
public class MonitoringProvider
|
public class PriorityMonitor
|
||||||
{
|
{
|
||||||
private static readonly Logger logger = LogManager.GetLogger("Host.MonitoringProvider");
|
|
||||||
|
|
||||||
private readonly ProcessProvider _processProvider;
|
private readonly ProcessProvider _processProvider;
|
||||||
|
private readonly Logger _logger;
|
||||||
|
|
||||||
private Timer _processPriorityCheckTimer;
|
private Timer _processPriorityCheckTimer;
|
||||||
|
|
||||||
public MonitoringProvider(ProcessProvider processProvider)
|
public PriorityMonitor(ProcessProvider processProvider, Logger logger)
|
||||||
{
|
{
|
||||||
_processProvider = processProvider;
|
_processProvider = processProvider;
|
||||||
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Start()
|
public void Start()
|
||||||
{
|
{
|
||||||
AppDomain.CurrentDomain.UnhandledException += ((s, e) => AppDomainException(e.ExceptionObject as Exception));
|
|
||||||
|
|
||||||
|
|
||||||
_processPriorityCheckTimer = new Timer(EnsurePriority);
|
_processPriorityCheckTimer = new Timer(EnsurePriority);
|
||||||
_processPriorityCheckTimer.Change(TimeSpan.FromSeconds(15), TimeSpan.FromMinutes(30));
|
_processPriorityCheckTimer.Change(TimeSpan.FromSeconds(15), TimeSpan.FromMinutes(30));
|
||||||
|
|
||||||
|
@ -48,14 +46,8 @@ namespace NzbDrone.Providers
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
logger.WarnException("Unable to verify priority", e);
|
_logger.WarnException("Unable to verify priority", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void AppDomainException(Exception excepion)
|
|
||||||
{
|
|
||||||
Console.WriteLine("EPIC FAIL: {0}", excepion);
|
|
||||||
logger.FatalException("EPIC FAIL: " + excepion.Message, excepion);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,34 +2,29 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
using Nancy.Hosting.Self;
|
|
||||||
using NzbDrone.Api;
|
|
||||||
using NzbDrone.Common;
|
using NzbDrone.Common;
|
||||||
using NzbDrone.Common.SysTray;
|
using NzbDrone.Common.SysTray;
|
||||||
using NzbDrone.Model;
|
|
||||||
|
|
||||||
namespace NzbDrone
|
namespace NzbDrone
|
||||||
{
|
{
|
||||||
public class Router
|
public class Router
|
||||||
{
|
{
|
||||||
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
|
|
||||||
|
|
||||||
private readonly ApplicationServer _applicationServer;
|
private readonly ApplicationServer _applicationServer;
|
||||||
private readonly ServiceProvider _serviceProvider;
|
private readonly ServiceProvider _serviceProvider;
|
||||||
private readonly ConsoleProvider _consoleProvider;
|
private readonly ConsoleProvider _consoleProvider;
|
||||||
private readonly EnvironmentProvider _environmentProvider;
|
private readonly EnvironmentProvider _environmentProvider;
|
||||||
private readonly SysTrayProvider _sysTrayProvider;
|
private readonly SysTrayProvider _sysTrayProvider;
|
||||||
private readonly ProcessProvider _processProvider;
|
private readonly Logger _logger;
|
||||||
|
|
||||||
public Router(ApplicationServer applicationServer, ServiceProvider serviceProvider,
|
public Router(ApplicationServer applicationServer, ServiceProvider serviceProvider,
|
||||||
ConsoleProvider consoleProvider, EnvironmentProvider environmentProvider, SysTrayProvider sysTrayProvider, ProcessProvider processProvider)
|
ConsoleProvider consoleProvider, EnvironmentProvider environmentProvider, SysTrayProvider sysTrayProvider, Logger logger)
|
||||||
{
|
{
|
||||||
_applicationServer = applicationServer;
|
_applicationServer = applicationServer;
|
||||||
_serviceProvider = serviceProvider;
|
_serviceProvider = serviceProvider;
|
||||||
_consoleProvider = consoleProvider;
|
_consoleProvider = consoleProvider;
|
||||||
_environmentProvider = environmentProvider;
|
_environmentProvider = environmentProvider;
|
||||||
_sysTrayProvider = sysTrayProvider;
|
_sysTrayProvider = sysTrayProvider;
|
||||||
_processProvider = processProvider;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Route(IEnumerable<string> args)
|
public void Route(IEnumerable<string> args)
|
||||||
|
@ -37,41 +32,27 @@ namespace NzbDrone
|
||||||
Route(GetApplicationMode(args));
|
Route(GetApplicationMode(args));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Route(ApplicationMode applicationMode)
|
public void Route(ApplicationModes applicationModes)
|
||||||
{
|
{
|
||||||
if (!_environmentProvider.IsUserInteractive)
|
if (!_environmentProvider.IsUserInteractive)
|
||||||
{
|
{
|
||||||
applicationMode = ApplicationMode.Service;
|
applicationModes = ApplicationModes.Service;
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Info("Application mode: {0}", applicationMode);
|
_logger.Info("Application mode: {0}", applicationModes);
|
||||||
|
|
||||||
switch (applicationMode)
|
switch (applicationModes)
|
||||||
{
|
{
|
||||||
case ApplicationMode.Nancy:
|
case ApplicationModes.Service:
|
||||||
{
|
{
|
||||||
|
_logger.Trace("Service selected");
|
||||||
var nancyHost = new NancyHost(new Uri("http://localhost:8282"), new NancyBootstrapper());
|
|
||||||
nancyHost.Start();
|
|
||||||
|
|
||||||
|
|
||||||
_processProvider.Start("http://localhost:8282");
|
|
||||||
|
|
||||||
_consoleProvider.WaitForClose();
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case ApplicationMode.Service:
|
|
||||||
{
|
|
||||||
logger.Trace("Service selected");
|
|
||||||
_serviceProvider.Run(_applicationServer);
|
_serviceProvider.Run(_applicationServer);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case ApplicationMode.Console:
|
case ApplicationModes.Console:
|
||||||
{
|
{
|
||||||
logger.Trace("Console selected");
|
_logger.Trace("Console selected");
|
||||||
_applicationServer.Start();
|
_applicationServer.Start();
|
||||||
if (ConsoleProvider.IsConsoleApplication)
|
if (ConsoleProvider.IsConsoleApplication)
|
||||||
_consoleProvider.WaitForClose();
|
_consoleProvider.WaitForClose();
|
||||||
|
@ -83,9 +64,9 @@ namespace NzbDrone
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ApplicationMode.InstallService:
|
case ApplicationModes.InstallService:
|
||||||
{
|
{
|
||||||
logger.Trace("Install Service selected");
|
_logger.Trace("Install Service selected");
|
||||||
if (_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME))
|
if (_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME))
|
||||||
{
|
{
|
||||||
_consoleProvider.PrintServiceAlreadyExist();
|
_consoleProvider.PrintServiceAlreadyExist();
|
||||||
|
@ -97,9 +78,9 @@ namespace NzbDrone
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ApplicationMode.UninstallService:
|
case ApplicationModes.UninstallService:
|
||||||
{
|
{
|
||||||
logger.Trace("Uninstall Service selected");
|
_logger.Trace("Uninstall Service selected");
|
||||||
if (!_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME))
|
if (!_serviceProvider.ServiceExist(ServiceProvider.NZBDRONE_SERVICE_NAME))
|
||||||
{
|
{
|
||||||
_consoleProvider.PrintServiceDoestExist();
|
_consoleProvider.PrintServiceDoestExist();
|
||||||
|
@ -119,21 +100,20 @@ namespace NzbDrone
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ApplicationMode GetApplicationMode(IEnumerable<string> args)
|
public static ApplicationModes GetApplicationMode(IEnumerable<string> args)
|
||||||
{
|
{
|
||||||
if (args == null) return ApplicationMode.Console;
|
if (args == null) return ApplicationModes.Console;
|
||||||
|
|
||||||
var cleanArgs = args.Where(c => c != null && !String.IsNullOrWhiteSpace(c)).ToList();
|
var cleanArgs = args.Where(c => c != null && !String.IsNullOrWhiteSpace(c)).ToList();
|
||||||
if (cleanArgs.Count == 0) return ApplicationMode.Console;
|
if (cleanArgs.Count == 0) return ApplicationModes.Console;
|
||||||
if (cleanArgs.Count != 1) return ApplicationMode.Help;
|
if (cleanArgs.Count != 1) return ApplicationModes.Help;
|
||||||
|
|
||||||
var arg = cleanArgs.First().Trim('/', '\\', '-').ToLower();
|
var arg = cleanArgs.First().Trim('/', '\\', '-').ToLower();
|
||||||
|
|
||||||
if (arg == "i") return ApplicationMode.InstallService;
|
if (arg == "i") return ApplicationModes.InstallService;
|
||||||
if (arg == "u") return ApplicationMode.UninstallService;
|
if (arg == "u") return ApplicationModes.UninstallService;
|
||||||
if (arg == "n") return ApplicationMode.Nancy;
|
|
||||||
|
|
||||||
return ApplicationMode.Help;
|
return ApplicationModes.Help;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue