added interop method for setting scroll position, persisted RemoteIPAddress in PageState so it is available on Blazor Server, added support for forwarded headers from load balancers and proxy servers, replaced DateTime.Now references DateTimeUtcNow for consistency, fixed issue where upgrade logic was being executed for prior version

This commit is contained in:
Shaun Walker
2022-01-13 07:18:37 -05:00
parent f4f6e98045
commit 9e04230d99
16 changed files with 75 additions and 40 deletions

View File

@ -30,28 +30,32 @@
}
@code {
[Parameter]
public string AntiForgeryToken { get; set; }
[Parameter]
public string AntiForgeryToken { get; set; }
[Parameter]
public string Runtime { get; set; }
[Parameter]
public string Runtime { get; set; }
[Parameter]
public string RenderMode { get; set; }
[Parameter]
public string RenderMode { get; set; }
[Parameter]
public int VisitorId { get; set; }
[Parameter]
public int VisitorId { get; set; }
private bool _initialized = false;
private string _display = "display: none;";
private Installation _installation = new Installation { Success = false, Message = "" };
[Parameter]
public string RemoteIPAddress { get; set; }
private PageState PageState { get; set; }
private bool _initialized = false;
private string _display = "display: none;";
private Installation _installation = new Installation { Success = false, Message = "" };
protected override async Task OnParametersSetAsync()
{
SiteState.AntiForgeryToken = AntiForgeryToken;
InstallationService.SetAntiForgeryTokenHeader(AntiForgeryToken);
private PageState PageState { get; set; }
protected override async Task OnParametersSetAsync()
{
SiteState.RemoteIPAddress = RemoteIPAddress;
SiteState.AntiForgeryToken = AntiForgeryToken;
InstallationService.SetAntiForgeryTokenHeader(AntiForgeryToken);
_installation = await InstallationService.IsInstalled();
if (_installation.Alias != null)

View File

@ -533,6 +533,7 @@
else
{
AddModuleMessage(Localizer["Success.Settings.SaveSite"], MessageType.Success);
await interop.ScrollTo(0, 0, "smooth");
}
}
}

View File

@ -33,7 +33,7 @@
</div>
</div>
<div class="row mb-1 align-items-center">
<Label Class="col-sm-3" For="servertime" HelpText="Server Time" ResourceKey="ServerTime">Server Time: </Label>
<Label Class="col-sm-3" For="servertime" HelpText="Server Date/Time (in UTC)" ResourceKey="ServerTime">Server Date/Time: </Label>
<div class="col-sm-9">
<input id="servertime" class="form-control" @bind="@_servertime" readonly />
</div>
@ -123,11 +123,7 @@
_clrversion = systeminfo["clrversion"];
_osversion = systeminfo["osversion"];
_serverpath = systeminfo["serverpath"];
_servertime = systeminfo["servertime"];
if (DateTime.TryParse(_servertime, out DateTime date))
{
_servertime += " (" + date.ToUniversalTime().ToString() + " UTC)";
}
_servertime = systeminfo["servertime"] + " UTC";
_installationid = systeminfo["installationid"];
_detailederrors = systeminfo["detailederrors"];

View File

@ -133,7 +133,7 @@
<value>Server Path</value>
</data>
<data name="ServerTime.HelpText" xml:space="preserve">
<value>Server Time</value>
<value>Server Date/Time (in UTC)</value>
</data>
<data name="FrameworkVersion.Text" xml:space="preserve">
<value>Framework Version: </value>
@ -148,7 +148,7 @@
<value>Server Path: </value>
</data>
<data name="ServerTime.Text" xml:space="preserve">
<value>Server Time: </value>
<value>Server Date/Time: </value>
</data>
<data name="RestartApplication.Header" xml:space="preserve">
<value>Restart Application</value>

View File

@ -262,5 +262,22 @@ namespace Oqtane.UI
return Task.CompletedTask;
}
}
public Task ScrollTo(int top, int left, string behavior)
{
try
{
if (string.IsNullOrEmpty(behavior)) behavior = "smooth";
_jsRuntime.InvokeVoidAsync(
"Oqtane.Interop.scrollTo",
top, left, behavior);
return Task.CompletedTask;
}
catch
{
return Task.CompletedTask;
}
}
}
}

View File

@ -21,5 +21,6 @@ namespace Oqtane.UI
public DateTime LastSyncDate { get; set; }
public Oqtane.Shared.Runtime Runtime { get; set; }
public int VisitorId { get; set; }
public string RemoteIPAddress { get; set; }
}
}

View File

@ -229,7 +229,8 @@
EditMode = editmode,
LastSyncDate = lastsyncdate,
Runtime = runtime,
VisitorId = VisitorId
VisitorId = VisitorId,
RemoteIPAddress = SiteState.RemoteIPAddress
};
OnStateChange?.Invoke(_pagestate);

View File

@ -31,7 +31,7 @@
var interop = new Interop(JsRuntime);
// manage stylesheets for this page
string batch = DateTime.Now.ToString("yyyyMMddHHmmssfff");
string batch = DateTime.UtcNow.ToString("yyyyMMddHHmmssfff");
var links = new List<object>();
foreach (Resource resource in PageState.Page.Resources.Where(item => item.ResourceType == ResourceType.Stylesheet && item.Declaration != ResourceDeclaration.Global))
{