2020-04-20 12:20:47 +02:00
|
|
|
|
using Microsoft.AspNetCore.Http.Extensions;
|
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
2014-02-26 04:15:14 +11:00
|
|
|
|
using Umbraco.Core;
|
|
|
|
|
|
using Umbraco.Core.Configuration;
|
2020-04-03 11:03:06 +11:00
|
|
|
|
using Umbraco.Core.Hosting;
|
2020-04-02 17:41:00 +11:00
|
|
|
|
using Umbraco.Core.WebAssets;
|
2020-05-07 10:08:23 +02:00
|
|
|
|
using Umbraco.Extensions;
|
2020-04-27 10:09:10 +02:00
|
|
|
|
using Umbraco.Web.Common.Filters;
|
2020-04-20 12:20:47 +02:00
|
|
|
|
using Umbraco.Web.Install;
|
2014-02-26 04:15:14 +11:00
|
|
|
|
using Umbraco.Web.Security;
|
|
|
|
|
|
|
2020-04-20 12:20:47 +02:00
|
|
|
|
namespace Umbraco.Web.Common.Install
|
2014-02-26 04:15:14 +11:00
|
|
|
|
{
|
2014-03-11 18:09:54 +11:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// The MVC Installation controller
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <remarks>
|
|
|
|
|
|
/// NOTE: All views must have their full paths as we do not have a custom view engine for the installation views!
|
|
|
|
|
|
/// </remarks>
|
2016-09-01 19:06:08 +02:00
|
|
|
|
[InstallAuthorize]
|
2014-02-26 04:15:14 +11:00
|
|
|
|
public class InstallController : Controller
|
|
|
|
|
|
{
|
2019-02-14 12:40:45 +01:00
|
|
|
|
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
|
2018-04-06 13:51:54 +10:00
|
|
|
|
private readonly InstallHelper _installHelper;
|
2016-09-01 19:06:08 +02:00
|
|
|
|
private readonly IRuntimeState _runtime;
|
2018-04-06 13:51:54 +10:00
|
|
|
|
private readonly IGlobalSettings _globalSettings;
|
2020-04-03 11:03:06 +11:00
|
|
|
|
private readonly IHostingEnvironment _hostingEnvironment;
|
2020-05-05 14:28:01 +02:00
|
|
|
|
private readonly IUmbracoVersion _umbracoVersion;
|
2020-03-17 10:28:03 +01:00
|
|
|
|
private readonly IRuntimeMinifier _runtimeMinifier;
|
2014-02-26 04:15:14 +11:00
|
|
|
|
|
2020-03-17 10:28:03 +01:00
|
|
|
|
public InstallController(
|
|
|
|
|
|
IUmbracoContextAccessor umbracoContextAccessor,
|
|
|
|
|
|
InstallHelper installHelper,
|
|
|
|
|
|
IRuntimeState runtime,
|
|
|
|
|
|
IGlobalSettings globalSettings,
|
2020-04-03 11:03:06 +11:00
|
|
|
|
IRuntimeMinifier runtimeMinifier,
|
2020-05-05 14:28:01 +02:00
|
|
|
|
IHostingEnvironment hostingEnvironment,
|
|
|
|
|
|
IUmbracoVersion umbracoVersion)
|
2017-07-20 11:21:28 +02:00
|
|
|
|
{
|
2019-02-14 12:40:45 +01:00
|
|
|
|
_umbracoContextAccessor = umbracoContextAccessor;
|
2018-04-06 13:51:54 +10:00
|
|
|
|
_installHelper = installHelper;
|
2016-09-01 19:06:08 +02:00
|
|
|
|
_runtime = runtime;
|
2018-04-06 13:51:54 +10:00
|
|
|
|
_globalSettings = globalSettings;
|
2020-03-17 10:28:03 +01:00
|
|
|
|
_runtimeMinifier = runtimeMinifier;
|
2020-04-03 11:03:06 +11:00
|
|
|
|
_hostingEnvironment = hostingEnvironment;
|
2020-05-05 14:28:01 +02:00
|
|
|
|
_umbracoVersion = umbracoVersion;
|
2017-07-20 11:21:28 +02:00
|
|
|
|
}
|
2014-02-26 04:15:14 +11:00
|
|
|
|
|
|
|
|
|
|
[HttpGet]
|
2020-04-27 10:09:10 +02:00
|
|
|
|
[StatusCodeResult(System.Net.HttpStatusCode.ServiceUnavailable)]
|
2020-05-06 20:37:03 +02:00
|
|
|
|
[TypeFilter(typeof(StatusCodeResultAttribute), Arguments = new object []{System.Net.HttpStatusCode.ServiceUnavailable})]
|
2014-02-26 04:15:14 +11:00
|
|
|
|
public ActionResult Index()
|
|
|
|
|
|
{
|
2016-09-01 19:06:08 +02:00
|
|
|
|
if (_runtime.Level == RuntimeLevel.Run)
|
2020-01-21 17:03:46 -08:00
|
|
|
|
return Redirect(_globalSettings.UmbracoPath.EnsureEndsWith('/'));
|
2014-02-27 10:16:30 +01:00
|
|
|
|
|
2016-09-01 19:06:08 +02:00
|
|
|
|
if (_runtime.Level == RuntimeLevel.Upgrade)
|
2015-06-22 16:22:47 +02:00
|
|
|
|
{
|
2020-03-17 15:45:34 +01:00
|
|
|
|
// Update ClientDependency version and delete its temp directories to make sure we get fresh caches
|
|
|
|
|
|
_runtimeMinifier.Reset();
|
|
|
|
|
|
|
2019-02-14 12:40:45 +01:00
|
|
|
|
var result = _umbracoContextAccessor.UmbracoContext.Security.ValidateCurrentUser(false);
|
2014-02-26 04:15:14 +11:00
|
|
|
|
|
|
|
|
|
|
switch (result)
|
|
|
|
|
|
{
|
|
|
|
|
|
case ValidateRequestAttempt.FailedNoPrivileges:
|
2015-06-22 16:22:47 +02:00
|
|
|
|
case ValidateRequestAttempt.FailedNoContextId:
|
2020-04-20 12:20:47 +02:00
|
|
|
|
return Redirect(_globalSettings.UmbracoPath + "/AuthorizeUpgrade?redir=" + Request.GetEncodedUrl());
|
2014-02-26 04:15:14 +11:00
|
|
|
|
}
|
2015-06-22 16:22:47 +02:00
|
|
|
|
}
|
2014-02-26 16:01:31 +01:00
|
|
|
|
|
2020-05-05 14:28:01 +02:00
|
|
|
|
// gen the install base urlAddUmbracoCore
|
2019-03-28 12:10:59 +01:00
|
|
|
|
ViewData.SetInstallApiBaseUrl(Url.GetUmbracoApiService("GetSetup", "InstallApi", "UmbracoInstall").TrimEnd("GetSetup"));
|
2016-09-01 19:06:08 +02:00
|
|
|
|
|
|
|
|
|
|
// get the base umbraco folder
|
2020-04-03 11:03:06 +11:00
|
|
|
|
ViewData.SetUmbracoBaseFolder(_hostingEnvironment.ToAbsolute(_globalSettings.UmbracoPath));
|
2014-02-26 16:01:31 +01:00
|
|
|
|
|
2020-05-05 14:28:01 +02:00
|
|
|
|
ViewData.SetUmbracoVersion(_umbracoVersion.SemanticVersion);
|
|
|
|
|
|
|
2018-04-06 13:51:54 +10:00
|
|
|
|
_installHelper.InstallStatus(false, "");
|
2014-04-07 16:08:34 +02:00
|
|
|
|
|
2016-09-01 19:06:08 +02:00
|
|
|
|
// always ensure full path (see NOTE in the class remarks)
|
2020-04-20 12:20:47 +02:00
|
|
|
|
return View();
|
2014-02-26 04:15:14 +11:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|