add ability to register for updates
This commit is contained in:
@ -5,7 +5,6 @@ using System.Linq;
|
||||
using System.IO.Compression;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Oqtane.Infrastructure;
|
||||
using Oqtane.Models;
|
||||
using Oqtane.Modules;
|
||||
@ -16,13 +15,15 @@ using System.Net;
|
||||
using Oqtane.Repository;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using System.Diagnostics;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
|
||||
namespace Oqtane.Controllers
|
||||
{
|
||||
[Route(ControllerRoutes.ApiRoute)]
|
||||
public class InstallationController : Controller
|
||||
{
|
||||
private readonly IConfigurationRoot _config;
|
||||
private readonly IConfigManager _configManager;
|
||||
private readonly IInstallationManager _installationManager;
|
||||
private readonly IDatabaseManager _databaseManager;
|
||||
private readonly ILocalizationManager _localizationManager;
|
||||
@ -30,9 +31,9 @@ namespace Oqtane.Controllers
|
||||
private readonly IHttpContextAccessor _accessor;
|
||||
private readonly IAliasRepository _aliases;
|
||||
|
||||
public InstallationController(IConfigurationRoot config, IInstallationManager installationManager, IDatabaseManager databaseManager, ILocalizationManager localizationManager, IMemoryCache cache, IHttpContextAccessor accessor, IAliasRepository aliases)
|
||||
public InstallationController(IConfigManager configManager, IInstallationManager installationManager, IDatabaseManager databaseManager, ILocalizationManager localizationManager, IMemoryCache cache, IHttpContextAccessor accessor, IAliasRepository aliases)
|
||||
{
|
||||
_config = config;
|
||||
_configManager = configManager;
|
||||
_installationManager = installationManager;
|
||||
_databaseManager = databaseManager;
|
||||
_localizationManager = localizationManager;
|
||||
@ -47,9 +48,14 @@ namespace Oqtane.Controllers
|
||||
{
|
||||
var installation = new Installation {Success = false, Message = ""};
|
||||
|
||||
if (ModelState.IsValid && (User.IsInRole(RoleNames.Host) || string.IsNullOrEmpty(_config.GetConnectionString(SettingKeys.ConnectionStringKey))))
|
||||
if (ModelState.IsValid && (User.IsInRole(RoleNames.Host) || string.IsNullOrEmpty(_configManager.GetSetting("ConnectionStrings:" + SettingKeys.ConnectionStringKey, ""))))
|
||||
{
|
||||
installation = _databaseManager.Install(config);
|
||||
|
||||
if (config.Register)
|
||||
{
|
||||
RegisterContact(config.HostEmail);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -93,7 +99,7 @@ namespace Oqtane.Controllers
|
||||
[HttpGet("load")]
|
||||
public IActionResult Load()
|
||||
{
|
||||
if (_config.GetSection("Runtime").Value == "WebAssembly")
|
||||
if (_configManager.GetSection("Runtime").Value == "WebAssembly")
|
||||
{
|
||||
return File(GetAssemblies(), System.Net.Mime.MediaTypeNames.Application.Octet, "oqtane.dll");
|
||||
}
|
||||
@ -199,5 +205,30 @@ namespace Oqtane.Controllers
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void RegisterContact(string email)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var client = new HttpClient())
|
||||
{
|
||||
client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value);
|
||||
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version));
|
||||
client.GetAsync(Constants.PackageRegistryUrl + $"/api/registry/contact/?id={_configManager.GetInstallationId()}&email={WebUtility.UrlEncode(email)}");
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// error calling registry service
|
||||
}
|
||||
}
|
||||
|
||||
// GET api/<controller>/register?email=x
|
||||
[HttpPost("register")]
|
||||
[Authorize(Roles = RoleNames.Host)]
|
||||
public void Register(string email)
|
||||
{
|
||||
RegisterContact(email);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ namespace Oqtane.Controllers
|
||||
{
|
||||
client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value);
|
||||
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version));
|
||||
packages = await GetJson<List<Package>>(client, Constants.PackageRegistryUrl + $"/api/registry/packages/?id={GetInstallationId()}&type={type.ToLower()}&version={Constants.Version}&search={search}");
|
||||
packages = await GetJson<List<Package>>(client, Constants.PackageRegistryUrl + $"/api/registry/packages/?id={_configManager.GetInstallationId()}&type={type.ToLower()}&version={Constants.Version}&search={search}");
|
||||
}
|
||||
return packages;
|
||||
}
|
||||
@ -57,7 +57,7 @@ namespace Oqtane.Controllers
|
||||
{
|
||||
client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value);
|
||||
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version));
|
||||
package = await GetJson<Package>(client, Constants.PackageRegistryUrl + $"/api/registry/package/?id={GetInstallationId()}&package={packageid}&version={version}");
|
||||
package = await GetJson<Package>(client, Constants.PackageRegistryUrl + $"/api/registry/package/?id={_configManager.GetInstallationId()}&package={packageid}&version={version}");
|
||||
}
|
||||
|
||||
if (package != null)
|
||||
@ -86,17 +86,6 @@ namespace Oqtane.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
private string GetInstallationId()
|
||||
{
|
||||
var installationid = _configManager.GetSetting("InstallationId", "");
|
||||
if (installationid == "")
|
||||
{
|
||||
installationid = Guid.NewGuid().ToString();
|
||||
_configManager.AddOrUpdateSetting("InstallationId", installationid, true);
|
||||
}
|
||||
return installationid;
|
||||
}
|
||||
|
||||
private async Task<T> GetJson<T>(HttpClient httpClient, string url)
|
||||
{
|
||||
Uri uri = new Uri(url);
|
||||
|
@ -32,7 +32,7 @@ namespace Oqtane.Controllers
|
||||
systeminfo.Add("machinename", Environment.MachineName);
|
||||
systeminfo.Add("serverpath", _environment.ContentRootPath);
|
||||
systeminfo.Add("servertime", DateTime.Now.ToString());
|
||||
systeminfo.Add("installationid", GetInstallationId());
|
||||
systeminfo.Add("installationid", _configManager.GetInstallationId());
|
||||
|
||||
systeminfo.Add("runtime", _configManager.GetSetting("Runtime", "Server"));
|
||||
systeminfo.Add("rendermode", _configManager.GetSetting("RenderMode", "ServerPrerendered"));
|
||||
@ -65,16 +65,5 @@ namespace Oqtane.Controllers
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string GetInstallationId()
|
||||
{
|
||||
var installationid = _configManager.GetSetting("InstallationId", "");
|
||||
if (installationid == "")
|
||||
{
|
||||
installationid = Guid.NewGuid().ToString();
|
||||
_configManager.AddOrUpdateSetting("InstallationId", installationid, true);
|
||||
}
|
||||
return installationid;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user