allow disabling of swagger and package service

This commit is contained in:
Shaun Walker 2021-07-01 09:11:29 -04:00
parent eea417ff44
commit 525cbb87b0
10 changed files with 128 additions and 61 deletions

View File

@ -54,8 +54,6 @@ else
<NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink> <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink>
</TabPanel> </TabPanel>
<TabPanel Name="Download" ResourceKey="Download" Security="SecurityAccessLevel.Host"> <TabPanel Name="Download" ResourceKey="Download" Security="SecurityAccessLevel.Host">
@if (_packages != null && _packages.Count > 0)
{
<ModuleMessage Type="MessageType.Info" Message="Download one or more translations from the list below. Once you are ready click Install to complete the installation."></ModuleMessage> <ModuleMessage Type="MessageType.Info" Message="Download one or more translations from the list below. Once you are ready click Install to complete the installation."></ModuleMessage>
<table class="table table-borderless" style=" margin: auto; width: 50% !important;"> <table class="table table-borderless" style=" margin: auto; width: 50% !important;">
@ -70,6 +68,10 @@ else
</tr> </tr>
</table> </table>
@if (_packages != null)
{
@if (_packages.Count > 0)
{
<Pager Items="@_packages"> <Pager Items="@_packages">
<Row> <Row>
<td> <td>
@ -82,6 +84,14 @@ else
</td> </td>
</Row> </Row>
</Pager> </Pager>
}
else
{
<br />
<div class="mx-auto text-center">
@Localizer["Search.NoResults"]
</div>
}
<button type="button" class="btn btn-success" @onclick="InstallLanguages">@SharedLocalizer["Install"]</button> <button type="button" class="btn btn-success" @onclick="InstallLanguages">@SharedLocalizer["Install"]</button>
<NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink> <NavLink class="btn btn-secondary" href="@NavigateUrl()">@SharedLocalizer["Cancel"]</NavLink>
} }

View File

@ -63,7 +63,6 @@
</div> </div>
</div> </div>
<br /><br /> <br /><br />
<a class="btn btn-primary" href="swagger/index.html" target="_new">@Localizer["Access.ApiFramework"]</a>&nbsp;
<ActionDialog Header="Restart Application" Message="Are You Sure You Wish To Restart The Application?" Action="Restart Application" Security="SecurityAccessLevel.Host" Class="btn btn-danger" OnClick="@(async () => await RestartApplication())" ResourceKey="RestartApplication" /> <ActionDialog Header="Restart Application" Message="Are You Sure You Wish To Restart The Application?" Action="Restart Application" Security="SecurityAccessLevel.Host" Class="btn btn-danger" OnClick="@(async () => await RestartApplication())" ResourceKey="RestartApplication" />
</TabPanel> </TabPanel>
<TabPanel Name="Options" Heading="Options" ResourceKey="Options"> <TabPanel Name="Options" Heading="Options" ResourceKey="Options">
@ -116,8 +115,31 @@
</select> </select>
</td> </td>
</tr> </tr>
<tr>
<td>
<Label For="swagger" HelpText="Specify If Swagger Is Enabled For Your Server API" ResourceKey="Swagger">Swagger Enabled? </Label>
</td>
<td>
<select id="swagger" class="form-control" @bind="@_swagger">
<option value="true">@SharedLocalizer["True"]</option>
<option value="false">@SharedLocalizer["False"]</option>
</select>
</td>
</tr>
<tr>
<td>
<Label For="packageservice" HelpText="Specify If The Package Service Is Enabled For Installing Modules, Themes, And Translations" ResourceKey="PackageService">Enable Package Service? </Label>
</td>
<td>
<select id="packageservice" class="form-control" @bind="@_packageservice">
<option value="true">@SharedLocalizer["True"]</option>
<option value="false">@SharedLocalizer["False"]</option>
</select>
</td>
</tr>
</table> </table>
<button type="button" class="btn btn-success" @onclick="SaveConfig">@SharedLocalizer["Save"]</button>&nbsp; <button type="button" class="btn btn-success" @onclick="SaveConfig">@SharedLocalizer["Save"]</button>&nbsp;
<a class="btn btn-primary" href="swagger/index.html" target="_new">@Localizer["Access.ApiFramework"]</a>&nbsp;
<ActionDialog Header="Restart Application" Message="Are You Sure You Wish To Restart The Application?" Action="Restart Application" Security="SecurityAccessLevel.Host" Class="btn btn-danger" OnClick="@(async () => await RestartApplication())" ResourceKey="RestartApplication" /> <ActionDialog Header="Restart Application" Message="Are You Sure You Wish To Restart The Application?" Action="Restart Application" Security="SecurityAccessLevel.Host" Class="btn btn-danger" OnClick="@(async () => await RestartApplication())" ResourceKey="RestartApplication" />
</TabPanel> </TabPanel>
</TabStrip> </TabStrip>
@ -136,6 +158,8 @@
private string _rendermode = string.Empty; private string _rendermode = string.Empty;
private string _detailederrors = string.Empty; private string _detailederrors = string.Empty;
private string _logginglevel = string.Empty; private string _logginglevel = string.Empty;
private string _swagger = string.Empty;
private string _packageservice = string.Empty;
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
@ -154,6 +178,8 @@
_rendermode = systeminfo["rendermode"]; _rendermode = systeminfo["rendermode"];
_detailederrors = systeminfo["detailederrors"]; _detailederrors = systeminfo["detailederrors"];
_logginglevel = systeminfo["logginglevel"]; _logginglevel = systeminfo["logginglevel"];
_swagger = systeminfo["swagger"];
_packageservice = systeminfo["packageservice"];
} }
} }
@ -166,6 +192,8 @@
settings.Add("rendermode", _rendermode); settings.Add("rendermode", _rendermode);
settings.Add("detailederrors", _detailederrors); settings.Add("detailederrors", _detailederrors);
settings.Add("logginglevel", _logginglevel); settings.Add("logginglevel", _logginglevel);
settings.Add("swagger", _swagger);
settings.Add("packageservice", _packageservice);
await SystemService.UpdateSystemInfoAsync(settings); await SystemService.UpdateSystemInfoAsync(settings);
AddModuleMessage(Localizer["Success.UpdateConfig.Restart"], MessageType.Success); AddModuleMessage(Localizer["Success.UpdateConfig.Restart"], MessageType.Success);
} }

View File

@ -150,4 +150,7 @@
<data name="Success.Language.Install" xml:space="preserve"> <data name="Success.Language.Install" xml:space="preserve">
<value>Translations Installed Successfully. You Must &lt;a href={0}&gt;Restart&lt;/a&gt; Your Application To Apply These Changes.</value> <value>Translations Installed Successfully. You Must &lt;a href={0}&gt;Restart&lt;/a&gt; Your Application To Apply These Changes.</value>
</data> </data>
<data name="Search.NoResults" xml:space="preserve">
<value>No Translations Match The Criteria Provided Or Package Service Is Disabled</value>
</data>
</root> </root>

View File

@ -136,6 +136,6 @@
<value>Upload one or more module packages. Once they are uploaded click Install to complete the installation.</value> <value>Upload one or more module packages. Once they are uploaded click Install to complete the installation.</value>
</data> </data>
<data name="Search.NoResults" xml:space="preserve"> <data name="Search.NoResults" xml:space="preserve">
<value>No Modules Match The Criteria Provided</value> <value>No Modules Match The Criteria Provided Or Package Service Is Disabled</value>
</data> </data>
</root> </root>

View File

@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="Access.ApiFramework" xml:space="preserve"> <data name="Access.ApiFramework" xml:space="preserve">
<value>Access Framework API</value> <value>Access Swagger API</value>
</data> </data>
<data name="FrameworkVersion.HelpText" xml:space="preserve"> <data name="FrameworkVersion.HelpText" xml:space="preserve">
<value>Framework Version</value> <value>Framework Version</value>
@ -231,4 +231,16 @@
<data name="Success.Register" xml:space="preserve"> <data name="Success.Register" xml:space="preserve">
<value>You Have Been Successfully Registered For Updates</value> <value>You Have Been Successfully Registered For Updates</value>
</data> </data>
<data name="PackageService.HelpText" xml:space="preserve">
<value>Specify If The Package Service Is Enabled For Installing Modules, Themes, And Translations</value>
</data>
<data name="PackageService.Text" xml:space="preserve">
<value>Package Service Enabled?</value>
</data>
<data name="Swagger.HelpText" xml:space="preserve">
<value>Specify If Swagger Is Enabled For Your Server API</value>
</data>
<data name="Swagger.Text" xml:space="preserve">
<value>Swagger Enabled?</value>
</data>
</root> </root>

View File

@ -136,6 +136,6 @@
<value>Upload one or more theme packages. Once they are uploaded click Install to complete the installation.</value> <value>Upload one or more theme packages. Once they are uploaded click Install to complete the installation.</value>
</data> </data>
<data name="Search.NoResults" xml:space="preserve"> <data name="Search.NoResults" xml:space="preserve">
<value>No Themes Match The Criteria Provided</value> <value>No Themes Match The Criteria Provided Or Package Service Is Disabled</value>
</data> </data>
</root> </root>

View File

@ -37,13 +37,16 @@ namespace Oqtane.Controllers
public async Task<IEnumerable<Package>> Get(string type, string search) public async Task<IEnumerable<Package>> Get(string type, string search)
{ {
// get packages // get packages
List<Package> packages; List<Package> packages = new List<Package>();
if (bool.Parse(_configManager.GetSetting("PackageService", "true")) == true)
{
using (var client = new HttpClient()) using (var client = new HttpClient())
{ {
client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value); client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value);
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version)); client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version));
packages = await GetJson<List<Package>>(client, Constants.PackageRegistryUrl + $"/api/registry/packages/?id={_configManager.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; return packages;
} }
@ -53,6 +56,8 @@ namespace Oqtane.Controllers
{ {
// get package info // get package info
Package package = null; Package package = null;
if (bool.Parse(_configManager.GetSetting("PackageService", "true")) == true)
{
using (var client = new HttpClient()) using (var client = new HttpClient())
{ {
client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value); client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value);
@ -85,6 +90,7 @@ namespace Oqtane.Controllers
_logger.Log(LogLevel.Error, this, LogFunction.Create, "Package {PackageId}.{Version} Is Not Registered", packageid, version); _logger.Log(LogLevel.Error, this, LogFunction.Create, "Package {PackageId}.{Version} Is Not Registered", packageid, version);
} }
} }
}
private async Task<T> GetJson<T>(HttpClient httpClient, string url) private async Task<T> GetJson<T>(HttpClient httpClient, string url)
{ {

View File

@ -38,6 +38,8 @@ namespace Oqtane.Controllers
systeminfo.Add("rendermode", _configManager.GetSetting("RenderMode", "ServerPrerendered")); systeminfo.Add("rendermode", _configManager.GetSetting("RenderMode", "ServerPrerendered"));
systeminfo.Add("detailederrors", _configManager.GetSetting("DetailedErrors", "false")); systeminfo.Add("detailederrors", _configManager.GetSetting("DetailedErrors", "false"));
systeminfo.Add("logginglevel", _configManager.GetSetting("Logging:LogLevel:Default", "Information")); systeminfo.Add("logginglevel", _configManager.GetSetting("Logging:LogLevel:Default", "Information"));
systeminfo.Add("swagger", _configManager.GetSetting("UseSwagger", "true"));
systeminfo.Add("packageservice", _configManager.GetSetting("PackageService", "true"));
return systeminfo; return systeminfo;
} }
@ -62,6 +64,12 @@ namespace Oqtane.Controllers
case "logginglevel": case "logginglevel":
_configManager.AddOrUpdateSetting("Logging:LogLevel:Default", kvp.Value, false); _configManager.AddOrUpdateSetting("Logging:LogLevel:Default", kvp.Value, false);
break; break;
case "swagger":
_configManager.AddOrUpdateSetting("UseSwagger", kvp.Value, false);
break;
case "packageservice":
_configManager.AddOrUpdateSetting("PackageService", kvp.Value, false);
break;
} }
} }
} }

View File

@ -181,7 +181,7 @@ namespace Microsoft.Extensions.DependencyInjection
{ {
services.AddSwaggerGen(c => services.AddSwaggerGen(c =>
{ {
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Oqtane", Version = "v1" }); c.SwaggerDoc(Constants.Version, new OpenApiInfo { Title = Constants.PackageId, Version = Constants.Version });
}); });
} }

View File

@ -153,7 +153,7 @@ namespace Oqtane
if (_useSwagger) if (_useSwagger)
{ {
app.UseSwagger(); app.UseSwagger();
app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Oqtane " + Constants.Version); }); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/" + Constants.Version + "/swagger.json", Constants.PackageId + " " + Constants.Version); });
} }
app.UseEndpoints(endpoints => app.UseEndpoints(endpoints =>