Merge branch 'dev' of https://github.com/ohba-ikuo/oqtane.framework into dev
This commit is contained in:
@ -40,27 +40,26 @@ namespace Oqtane.Infrastructure
|
||||
log += "Processing Notifications For Site: " + site.Name + "<br />";
|
||||
|
||||
// get site settings
|
||||
List<Setting> sitesettings = settingRepository.GetSettings(EntityNames.Site, site.SiteId).ToList();
|
||||
Dictionary<string, string> settings = GetSettings(sitesettings);
|
||||
if (!site.IsDeleted && (!settings.ContainsKey("SMTPEnabled") || settings["SMTPEnabled"] == "True"))
|
||||
var settings = settingRepository.GetSettings(EntityNames.Site, site.SiteId, EntityNames.Host, -1);
|
||||
|
||||
if (!site.IsDeleted && settingRepository.GetSettingValue(settings, "SMTPEnabled", "True") == "True")
|
||||
{
|
||||
if (settings.ContainsKey("SMTPHost") && settings["SMTPHost"] != "" &&
|
||||
settings.ContainsKey("SMTPPort") && settings["SMTPPort"] != "" &&
|
||||
settings.ContainsKey("SMTPSSL") && settings["SMTPSSL"] != "" &&
|
||||
settings.ContainsKey("SMTPSender") && settings["SMTPSender"] != "")
|
||||
if (settingRepository.GetSettingValue(settings, "SMTPHost", "") != "" &&
|
||||
settingRepository.GetSettingValue(settings, "SMTPPort", "") != "" &&
|
||||
settingRepository.GetSettingValue(settings, "SMTPSender", "") != "")
|
||||
{
|
||||
// construct SMTP Client
|
||||
var client = new SmtpClient()
|
||||
{
|
||||
DeliveryMethod = SmtpDeliveryMethod.Network,
|
||||
UseDefaultCredentials = false,
|
||||
Host = settings["SMTPHost"],
|
||||
Port = int.Parse(settings["SMTPPort"]),
|
||||
EnableSsl = bool.Parse(settings["SMTPSSL"])
|
||||
Host = settingRepository.GetSettingValue(settings, "SMTPHost", ""),
|
||||
Port = int.Parse(settingRepository.GetSettingValue(settings, "SMTPPort", "")),
|
||||
EnableSsl = bool.Parse(settingRepository.GetSettingValue(settings, "SMTPSSL", "False"))
|
||||
};
|
||||
if (settings["SMTPUsername"] != "" && settings["SMTPPassword"] != "")
|
||||
if (settingRepository.GetSettingValue(settings, "SMTPUsername", "") != "" && settingRepository.GetSettingValue(settings, "SMTPPassword", "") != "")
|
||||
{
|
||||
client.Credentials = new NetworkCredential(settings["SMTPUsername"], settings["SMTPPassword"]);
|
||||
client.Credentials = new NetworkCredential(settingRepository.GetSettingValue(settings, "SMTPUsername", ""), settingRepository.GetSettingValue(settings, "SMTPPassword", ""));
|
||||
}
|
||||
|
||||
// iterate through undelivered notifications
|
||||
@ -100,7 +99,7 @@ namespace Oqtane.Infrastructure
|
||||
MailMessage mailMessage = new MailMessage();
|
||||
|
||||
// sender
|
||||
if (settings.ContainsKey("SMTPRelay") && settings["SMTPRelay"] == "True" && !string.IsNullOrEmpty(notification.FromEmail))
|
||||
if (settingRepository.GetSettingValue(settings, "SMTPRelay", "False") == "True" && !string.IsNullOrEmpty(notification.FromEmail))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(notification.FromDisplayName))
|
||||
{
|
||||
@ -113,7 +112,7 @@ namespace Oqtane.Infrastructure
|
||||
}
|
||||
else
|
||||
{
|
||||
mailMessage.From = new MailAddress(settings["SMTPSender"], (!string.IsNullOrEmpty(notification.FromDisplayName)) ? notification.FromDisplayName : site.Name);
|
||||
mailMessage.From = new MailAddress(settingRepository.GetSettingValue(settings, "SMTPSender", ""), (!string.IsNullOrEmpty(notification.FromDisplayName)) ? notification.FromDisplayName : site.Name);
|
||||
}
|
||||
|
||||
// recipient
|
||||
@ -162,7 +161,7 @@ namespace Oqtane.Infrastructure
|
||||
}
|
||||
else
|
||||
{
|
||||
log += "SMTP Not Configured Properly In Site Settings - Host, Port, SSL, And Sender Are All Required" + "<br />";
|
||||
log += "SMTP Not Configured Properly In Site Settings - Host, Port, And Sender Are All Required" + "<br />";
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -173,15 +172,5 @@ namespace Oqtane.Infrastructure
|
||||
|
||||
return log;
|
||||
}
|
||||
|
||||
private Dictionary<string, string> GetSettings(List<Setting> settings)
|
||||
{
|
||||
Dictionary<string, string> dictionary = new Dictionary<string, string>();
|
||||
foreach (Setting setting in settings.OrderBy(item => item.SettingName).ToList())
|
||||
{
|
||||
dictionary.Add(setting.SettingName, setting.SettingValue);
|
||||
}
|
||||
return dictionary;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -40,18 +40,13 @@ namespace Oqtane.Infrastructure
|
||||
foreach (Site site in sites)
|
||||
{
|
||||
log += "<br />Processing Site: " + site.Name + "<br />";
|
||||
int retention;
|
||||
int count;
|
||||
|
||||
// get site settings
|
||||
Dictionary<string, string> settings = GetSettings(settingRepository.GetSettings(EntityNames.Site, site.SiteId).ToList());
|
||||
var settings = settingRepository.GetSettings(EntityNames.Site, site.SiteId, EntityNames.Host, -1);
|
||||
|
||||
// purge event log
|
||||
retention = 30; // 30 days
|
||||
if (settings.ContainsKey("LogRetention") && !string.IsNullOrEmpty(settings["LogRetention"]))
|
||||
{
|
||||
retention = int.Parse(settings["LogRetention"]);
|
||||
}
|
||||
var retention = int.Parse(settingRepository.GetSettingValue(settings, "LogRetention", "30")); // 30 day default
|
||||
try
|
||||
{
|
||||
count = logRepository.DeleteLogs(site.SiteId, retention);
|
||||
@ -65,11 +60,7 @@ namespace Oqtane.Infrastructure
|
||||
// purge visitors
|
||||
if (site.VisitorTracking)
|
||||
{
|
||||
retention = 30; // 30 days
|
||||
if (settings.ContainsKey("VisitorRetention") && !string.IsNullOrEmpty(settings["VisitorRetention"]))
|
||||
{
|
||||
retention = int.Parse(settings["VisitorRetention"]);
|
||||
}
|
||||
retention = int.Parse(settingRepository.GetSettingValue(settings, "VisitorRetention", "30")); // 30 day default
|
||||
try
|
||||
{
|
||||
count = visitorRepository.DeleteVisitors(site.SiteId, retention);
|
||||
@ -82,11 +73,7 @@ namespace Oqtane.Infrastructure
|
||||
}
|
||||
|
||||
// purge notifications
|
||||
retention = 30; // 30 days
|
||||
if (settings.ContainsKey("NotificationRetention") && !string.IsNullOrEmpty(settings["NotificationRetention"]))
|
||||
{
|
||||
retention = int.Parse(settings["NotificationRetention"]);
|
||||
}
|
||||
retention = int.Parse(settingRepository.GetSettingValue(settings, "NotificationRetention", "30")); // 30 day default
|
||||
try
|
||||
{
|
||||
count = notificationRepository.DeleteNotifications(site.SiteId, retention);
|
||||
@ -98,11 +85,7 @@ namespace Oqtane.Infrastructure
|
||||
}
|
||||
|
||||
// purge broken urls
|
||||
retention = 30; // 30 days
|
||||
if (settings.ContainsKey("UrlMappingRetention") && !string.IsNullOrEmpty(settings["UrlMappingRetention"]))
|
||||
{
|
||||
retention = int.Parse(settings["UrlMappingRetention"]);
|
||||
}
|
||||
retention = int.Parse(settingRepository.GetSettingValue(settings, "UrlMappingRetention", "30")); // 30 day default
|
||||
try
|
||||
{
|
||||
count = urlMappingRepository.DeleteUrlMappings(site.SiteId, retention);
|
||||
@ -127,15 +110,5 @@ namespace Oqtane.Infrastructure
|
||||
|
||||
return log;
|
||||
}
|
||||
|
||||
private Dictionary<string, string> GetSettings(List<Setting> settings)
|
||||
{
|
||||
Dictionary<string, string> dictionary = new Dictionary<string, string>();
|
||||
foreach (Setting setting in settings.OrderBy(item => item.SettingName).ToList())
|
||||
{
|
||||
dictionary.Add(setting.SettingName, setting.SettingValue);
|
||||
}
|
||||
return dictionary;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,10 +23,6 @@ namespace Oqtane.Infrastructure
|
||||
var config = context.RequestServices.GetService(typeof(IConfigManager)) as IConfigManager;
|
||||
string path = context.Request.Path.ToString();
|
||||
|
||||
// note that in order to support Alias subfolders we used to ignore Blazor framework requests...
|
||||
// but this does not work in static rendering as the web UI request originates from /_blazor
|
||||
//if (config.IsInstalled() && !path.StartsWith("/_"))
|
||||
|
||||
if (config.IsInstalled())
|
||||
{
|
||||
// get alias (note that this also sets SiteState.Alias)
|
||||
@ -43,7 +39,7 @@ namespace Oqtane.Infrastructure
|
||||
var sitesettings = cache.GetOrCreate(Constants.HttpContextSiteSettingsKey + alias.SiteKey, entry =>
|
||||
{
|
||||
var settingRepository = context.RequestServices.GetService(typeof(ISettingRepository)) as ISettingRepository;
|
||||
return settingRepository.GetSettings(EntityNames.Site, alias.SiteId)
|
||||
return settingRepository.GetSettings(EntityNames.Site, alias.SiteId, EntityNames.Host, -1)
|
||||
.ToDictionary(setting => setting.SettingName, setting => setting.SettingValue);
|
||||
});
|
||||
context.Items.Add(Constants.HttpContextSiteSettingsKey, sitesettings);
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using Oqtane.Models;
|
||||
using Oqtane.Shared;
|
||||
|
||||
namespace Oqtane.Repository
|
||||
{
|
||||
@ -7,11 +8,13 @@ namespace Oqtane.Repository
|
||||
{
|
||||
IEnumerable<Setting> GetSettings(string entityName);
|
||||
IEnumerable<Setting> GetSettings(string entityName, int entityId);
|
||||
IEnumerable<Setting> GetSettings(string entityName1, int entityId1, string entityName2, int entityId2);
|
||||
Setting AddSetting(Setting setting);
|
||||
Setting UpdateSetting(Setting setting);
|
||||
Setting GetSetting(string entityName, int settingId);
|
||||
Setting GetSetting(string entityName, int entityId, string settingName);
|
||||
void DeleteSetting(string entityName, int settingId);
|
||||
void DeleteSettings(string entityName, int entityId);
|
||||
string GetSettingValue(IEnumerable<Setting> settings, string settingName, string defaultValue);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Oqtane.Infrastructure;
|
||||
@ -39,24 +38,27 @@ namespace Oqtane.Repository
|
||||
|
||||
public IEnumerable<Setting> GetSettings(string entityName, int entityId)
|
||||
{
|
||||
var settings = GetSettings(entityName).ToList();
|
||||
if (entityName == EntityNames.Site)
|
||||
return GetSettings(entityName).Where(item => item.EntityId == entityId);
|
||||
}
|
||||
|
||||
public IEnumerable<Setting> GetSettings(string entityName1, int entityId1, string entityName2, int entityId2)
|
||||
{
|
||||
// merge settings from entity2 into entity1
|
||||
var settings1 = GetSettings(entityName1, entityId1).ToList();
|
||||
foreach (var setting2 in GetSettings(entityName2, entityId2))
|
||||
{
|
||||
// site settings can be overridden by host settings
|
||||
var hostsettings = GetSettings(EntityNames.Host);
|
||||
foreach (var hostsetting in hostsettings)
|
||||
var setting1 = settings1.FirstOrDefault(item => item.SettingName == setting2.SettingName);
|
||||
if (setting1 == null)
|
||||
{
|
||||
if (settings.Any(item => item.SettingName == hostsetting.SettingName))
|
||||
{
|
||||
settings.First(item => item.SettingName == hostsetting.SettingName).SettingValue = hostsetting.SettingValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
settings.Add(new Setting { SettingId = -1, EntityName = entityName, EntityId = entityId, SettingName = hostsetting.SettingName, SettingValue = hostsetting.SettingValue, IsPrivate = hostsetting.IsPrivate });
|
||||
}
|
||||
settings1.Add(new Setting { EntityName = entityName1, EntityId = entityId1, SettingName = setting2.SettingName, SettingValue = setting2.SettingValue, IsPrivate = setting2.IsPrivate });
|
||||
}
|
||||
else
|
||||
{
|
||||
setting1.SettingValue = setting2.SettingValue;
|
||||
setting1.IsPrivate = setting2.IsPrivate;
|
||||
}
|
||||
}
|
||||
return settings.Where(item => item.EntityId == entityId);
|
||||
return settings1;
|
||||
}
|
||||
|
||||
public Setting AddSetting(Setting setting)
|
||||
@ -165,6 +167,19 @@ namespace Oqtane.Repository
|
||||
ManageCache(entityName);
|
||||
}
|
||||
|
||||
public string GetSettingValue(IEnumerable<Setting> settings, string settingName, string defaultValue)
|
||||
{
|
||||
var setting = settings.FirstOrDefault(item => item.SettingName == settingName);
|
||||
if (setting != null)
|
||||
{
|
||||
return setting.SettingValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
private bool IsMaster(string EntityName)
|
||||
{
|
||||
return (EntityName == EntityNames.ModuleDefinition || EntityName == EntityNames.Host);
|
||||
|
@ -111,7 +111,7 @@ namespace Oqtane.Services
|
||||
if (site != null && site.SiteId == alias.SiteId)
|
||||
{
|
||||
// site settings
|
||||
site.Settings = _settings.GetSettings(EntityNames.Site, site.SiteId)
|
||||
site.Settings = _settings.GetSettings(EntityNames.Site, site.SiteId, EntityNames.Host, -1)
|
||||
.ToDictionary(setting => setting.SettingName, setting => (setting.IsPrivate ? _private : "") + setting.SettingValue);
|
||||
|
||||
// populate file extensions
|
||||
|
@ -195,9 +195,6 @@ namespace Oqtane
|
||||
app.UseHsts();
|
||||
}
|
||||
|
||||
// execute any IServerStartup logic
|
||||
app.ConfigureOqtaneAssemblies(env);
|
||||
|
||||
// allow oqtane localization middleware
|
||||
app.UseOqtaneLocalization();
|
||||
|
||||
@ -248,6 +245,9 @@ namespace Oqtane
|
||||
.AddAdditionalAssemblies(typeof(SiteRouter).Assembly);
|
||||
});
|
||||
|
||||
// execute any IServerStartup logic
|
||||
app.ConfigureOqtaneAssemblies(env);
|
||||
|
||||
// simulate the fallback routing approach of traditional Blazor - allowing the custom SiteRouter to handle all routing concerns
|
||||
app.UseEndpoints(endpoints =>
|
||||
{
|
||||
|
Reference in New Issue
Block a user