diff --git a/Oqtane.Client/Modules/Admin/Languages/Add.razor b/Oqtane.Client/Modules/Admin/Languages/Add.razor index 1525a813..4276dceb 100644 --- a/Oqtane.Client/Modules/Admin/Languages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Languages/Add.razor @@ -54,34 +54,44 @@ else @SharedLocalizer["Cancel"] - @if (_packages != null && _packages.Count > 0) + + + + + + + +
+ + +   + +
+ + @if (_packages != null) { - - - - - - - -
- - -   - -
- - - - -

@context.Name

  by:  @context.Owner
- @(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)
- @(String.Format("{0:n0}", context.Downloads)) @SharedLocalizer["Search.Downloads"]  |   @SharedLocalizer["Search.Released"]: @context.ReleaseDate.ToString("MMM dd, yyyy")  |  @SharedLocalizer["Search.Version"]: @context.Version  |  @SharedLocalizer["Search.Source"]: @context.PackageUrl - - - - -
-
+ @if (_packages.Count > 0) + { + + + +

@context.Name

  by:  @context.Owner
+ @(context.Description.Length > 400 ? (context.Description.Substring(0, 400) + "...") : context.Description)
+ @(String.Format("{0:n0}", context.Downloads)) @SharedLocalizer["Search.Downloads"]  |   @SharedLocalizer["Search.Released"]: @context.ReleaseDate.ToString("MMM dd, yyyy")  |  @SharedLocalizer["Search.Version"]: @context.Version  |  @SharedLocalizer["Search.Source"]: @context.PackageUrl + + + + +
+
+ } + else + { +
+
+ @Localizer["Search.NoResults"] +
+ } @SharedLocalizer["Cancel"] } diff --git a/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor b/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor index 1d3bc91b..754a5957 100644 --- a/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor +++ b/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor @@ -63,7 +63,6 @@

- @Localizer["Access.ApiFramework"] 
@@ -116,8 +115,31 @@ + + + + + + + + + + + + + + + +   + @Localizer["Access.ApiFramework"]  @@ -136,6 +158,8 @@ private string _rendermode = string.Empty; private string _detailederrors = string.Empty; private string _logginglevel = string.Empty; + private string _swagger = string.Empty; + private string _packageservice = string.Empty; protected override async Task OnInitializedAsync() { @@ -154,6 +178,8 @@ _rendermode = systeminfo["rendermode"]; _detailederrors = systeminfo["detailederrors"]; _logginglevel = systeminfo["logginglevel"]; + _swagger = systeminfo["swagger"]; + _packageservice = systeminfo["packageservice"]; } } @@ -166,6 +192,8 @@ settings.Add("rendermode", _rendermode); settings.Add("detailederrors", _detailederrors); settings.Add("logginglevel", _logginglevel); + settings.Add("swagger", _swagger); + settings.Add("packageservice", _packageservice); await SystemService.UpdateSystemInfoAsync(settings); AddModuleMessage(Localizer["Success.UpdateConfig.Restart"], MessageType.Success); } diff --git a/Oqtane.Client/Resources/Modules/Admin/Languages/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Languages/Add.resx index cfd9b4c6..deff0806 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Languages/Add.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Languages/Add.resx @@ -150,4 +150,7 @@ Translations Installed Successfully. You Must <a href={0}>Restart</a> Your Application To Apply These Changes. + + No Translations Match The Criteria Provided Or Package Service Is Disabled + \ No newline at end of file diff --git a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx index 72fda42c..c7abab63 100644 --- a/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx +++ b/Oqtane.Client/Resources/Modules/Admin/ModuleDefinitions/Add.resx @@ -136,6 +136,6 @@ Upload one or more module packages. Once they are uploaded click Install to complete the installation. - No Modules Match The Criteria Provided + No Modules Match The Criteria Provided Or Package Service Is Disabled \ No newline at end of file diff --git a/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx b/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx index f012ad02..84c6992b 100644 --- a/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx +++ b/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx @@ -118,7 +118,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Access Framework API + Access Swagger API Framework Version @@ -231,4 +231,16 @@ You Have Been Successfully Registered For Updates + + Specify If The Package Service Is Enabled For Installing Modules, Themes, And Translations + + + Package Service Enabled? + + + Specify If Swagger Is Enabled For Your Server API + + + Swagger Enabled? + \ No newline at end of file diff --git a/Oqtane.Client/Resources/Modules/Admin/Themes/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Themes/Add.resx index 68499d07..f6b6079b 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Themes/Add.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Themes/Add.resx @@ -136,6 +136,6 @@ Upload one or more theme packages. Once they are uploaded click Install to complete the installation. - No Themes Match The Criteria Provided + No Themes Match The Criteria Provided Or Package Service Is Disabled \ No newline at end of file diff --git a/Oqtane.Server/Controllers/PackageController.cs b/Oqtane.Server/Controllers/PackageController.cs index c6ae0585..bed4e81c 100644 --- a/Oqtane.Server/Controllers/PackageController.cs +++ b/Oqtane.Server/Controllers/PackageController.cs @@ -37,12 +37,15 @@ namespace Oqtane.Controllers public async Task> Get(string type, string search) { // get packages - List packages; - using (var client = new HttpClient()) + List packages = new List(); + if (bool.Parse(_configManager.GetSetting("PackageService", "true")) == true) { - client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value); - client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version)); - packages = await GetJson>(client, Constants.PackageRegistryUrl + $"/api/registry/packages/?id={_configManager.GetInstallationId()}&type={type.ToLower()}&version={Constants.Version}&search={search}"); + 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)); + packages = await GetJson>(client, Constants.PackageRegistryUrl + $"/api/registry/packages/?id={_configManager.GetInstallationId()}&type={type.ToLower()}&version={Constants.Version}&search={search}"); + } } return packages; } @@ -53,36 +56,39 @@ namespace Oqtane.Controllers { // get package info Package package = null; - using (var client = new HttpClient()) + if (bool.Parse(_configManager.GetSetting("PackageService", "true")) == true) { - client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value); - client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version)); - package = await GetJson(client, Constants.PackageRegistryUrl + $"/api/registry/package/?id={_configManager.GetInstallationId()}&package={packageid}&version={version}"); - } - - if (package != null) - { - using (var httpClient = new HttpClient()) + using (var client = new HttpClient()) { - folder = Path.Combine(_environment.ContentRootPath, folder); - var response = await httpClient.GetAsync(package.PackageUrl).ConfigureAwait(false); - if (response.IsSuccessStatusCode) + client.DefaultRequestHeaders.Add("Referer", HttpContext.Request.Scheme + "://" + HttpContext.Request.Host.Value); + client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(Constants.PackageId, Constants.Version)); + package = await GetJson(client, Constants.PackageRegistryUrl + $"/api/registry/package/?id={_configManager.GetInstallationId()}&package={packageid}&version={version}"); + } + + if (package != null) + { + using (var httpClient = new HttpClient()) { - string filename = packageid + "." + version + ".nupkg"; - using (var fileStream = new FileStream(Path.Combine(folder, filename), FileMode.Create, FileAccess.Write, FileShare.None)) + folder = Path.Combine(_environment.ContentRootPath, folder); + var response = await httpClient.GetAsync(package.PackageUrl).ConfigureAwait(false); + if (response.IsSuccessStatusCode) { - await response.Content.CopyToAsync(fileStream).ConfigureAwait(false); + string filename = packageid + "." + version + ".nupkg"; + using (var fileStream = new FileStream(Path.Combine(folder, filename), FileMode.Create, FileAccess.Write, FileShare.None)) + { + await response.Content.CopyToAsync(fileStream).ConfigureAwait(false); + } + } + else + { + _logger.Log(LogLevel.Error, this, LogFunction.Create, "Could Not Download {PackageUrl}", package.PackageUrl); } } - else - { - _logger.Log(LogLevel.Error, this, LogFunction.Create, "Could Not Download {PackageUrl}", package.PackageUrl); - } } - } - else - { - _logger.Log(LogLevel.Error, this, LogFunction.Create, "Package {PackageId}.{Version} Is Not Registered", packageid, version); + else + { + _logger.Log(LogLevel.Error, this, LogFunction.Create, "Package {PackageId}.{Version} Is Not Registered", packageid, version); + } } } diff --git a/Oqtane.Server/Controllers/SystemController.cs b/Oqtane.Server/Controllers/SystemController.cs index 90ca3e95..7a95cc5c 100644 --- a/Oqtane.Server/Controllers/SystemController.cs +++ b/Oqtane.Server/Controllers/SystemController.cs @@ -38,6 +38,8 @@ namespace Oqtane.Controllers systeminfo.Add("rendermode", _configManager.GetSetting("RenderMode", "ServerPrerendered")); systeminfo.Add("detailederrors", _configManager.GetSetting("DetailedErrors", "false")); 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; } @@ -62,6 +64,12 @@ namespace Oqtane.Controllers case "logginglevel": _configManager.AddOrUpdateSetting("Logging:LogLevel:Default", kvp.Value, false); break; + case "swagger": + _configManager.AddOrUpdateSetting("UseSwagger", kvp.Value, false); + break; + case "packageservice": + _configManager.AddOrUpdateSetting("PackageService", kvp.Value, false); + break; } } } diff --git a/Oqtane.Server/Extensions/OqtaneServiceCollectionExtensions.cs b/Oqtane.Server/Extensions/OqtaneServiceCollectionExtensions.cs index 2b7310fe..b395ed0e 100644 --- a/Oqtane.Server/Extensions/OqtaneServiceCollectionExtensions.cs +++ b/Oqtane.Server/Extensions/OqtaneServiceCollectionExtensions.cs @@ -181,7 +181,7 @@ namespace Microsoft.Extensions.DependencyInjection { services.AddSwaggerGen(c => { - c.SwaggerDoc("v1", new OpenApiInfo { Title = "Oqtane", Version = "v1" }); + c.SwaggerDoc(Constants.Version, new OpenApiInfo { Title = Constants.PackageId, Version = Constants.Version }); }); } diff --git a/Oqtane.Server/Startup.cs b/Oqtane.Server/Startup.cs index d1fa176f..4f5160ec 100644 --- a/Oqtane.Server/Startup.cs +++ b/Oqtane.Server/Startup.cs @@ -153,7 +153,7 @@ namespace Oqtane if (_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 =>