core: allow cors requests (#13199)

This commit is contained in:
Diego Heras
2022-04-25 00:17:35 +02:00
committed by GitHub
parent f2e258a6de
commit f1affa88ab
9 changed files with 36 additions and 11 deletions

View File

@@ -177,7 +177,7 @@ hr {
text-align: center; text-align: center;
} }
#jackett-allowext, #jackett-allowupdate, #jackett-logging, #jackett-prerelease, #jackett-cache-enabled { #jackett-allowext, #jackett-allowcors, #jackett-allowupdate, #jackett-logging, #jackett-prerelease, #jackett-cache-enabled {
width: 25px; width: 25px;
} }

View File

@@ -125,6 +125,7 @@ function loadJackettSettings() {
$("#jackett-savedir").val(data.blackholedir); $("#jackett-savedir").val(data.blackholedir);
$("#jackett-allowext").attr('checked', data.external); $("#jackett-allowext").attr('checked', data.external);
$("#jackett-allowcors").attr('checked', data.cors);
$("#jackett-allowupdate").attr('checked', data.updatedisabled); $("#jackett-allowupdate").attr('checked', data.updatedisabled);
$("#jackett-prerelease").attr('checked', data.prerelease); $("#jackett-prerelease").attr('checked', data.prerelease);
$("#jackett-logging").attr('checked', data.logging); $("#jackett-logging").attr('checked', data.logging);
@@ -1528,6 +1529,7 @@ function bindUIButtons() {
var jackett_basepathoverride = $("#jackett-basepathoverride").val(); var jackett_basepathoverride = $("#jackett-basepathoverride").val();
var jackett_baseurloverride = $("#jackett-baseurloverride").val(); var jackett_baseurloverride = $("#jackett-baseurloverride").val();
var jackett_external = $("#jackett-allowext").is(':checked'); var jackett_external = $("#jackett-allowext").is(':checked');
var jackett_cors = $("#jackett-allowcors").is(':checked');
var jackett_update = $("#jackett-allowupdate").is(':checked'); var jackett_update = $("#jackett-allowupdate").is(':checked');
var jackett_prerelease = $("#jackett-prerelease").is(':checked'); var jackett_prerelease = $("#jackett-prerelease").is(':checked');
var jackett_logging = $("#jackett-logging").is(':checked'); var jackett_logging = $("#jackett-logging").is(':checked');
@@ -1548,6 +1550,7 @@ function bindUIButtons() {
var jsonObject = { var jsonObject = {
port: jackett_port, port: jackett_port,
external: jackett_external, external: jackett_external,
cors: jackett_cors,
updatedisabled: jackett_update, updatedisabled: jackett_update,
prerelease: jackett_prerelease, prerelease: jackett_prerelease,
blackholedir: $("#jackett-savedir").val(), blackholedir: $("#jackett-savedir").val(),

View File

@@ -161,7 +161,7 @@ hr {
text-align: center; text-align: center;
} }
#jackett-allowext, #jackett-allowupdate, #jackett-logging, #jackett-prerelease, #jackett-cache-enabled { #jackett-allowext, #jackett-allowcors, #jackett-allowupdate, #jackett-logging, #jackett-prerelease, #jackett-cache-enabled {
width: 25px; width: 25px;
} }

View File

@@ -28,8 +28,8 @@
<link rel="stylesheet" type="text/css" href="../bootstrap/bootstrap.min.css?changed=2017083001"> <link rel="stylesheet" type="text/css" href="../bootstrap/bootstrap.min.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../animate.css?changed=2017083001"> <link rel="stylesheet" type="text/css" href="../animate.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../css/tagify.css?changed=11662"> <link rel="stylesheet" type="text/css" href="../css/tagify.css?changed=11662">
<link rel="stylesheet" type="text/css" href="../custom.css?changed=202204222" media="only screen and (min-device-width: 480px)"> <link rel="stylesheet" type="text/css" href="../custom.css?changed=202204223" media="only screen and (min-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=202204222" media="only screen and (max-device-width: 480px)"> <link rel="stylesheet" type="text/css" href="../custom_mobile.css?changed=202204223" media="only screen and (max-device-width: 480px)">
<link rel="stylesheet" type="text/css" href="../css/jquery.dataTables.min.css?changed=2017083001"> <link rel="stylesheet" type="text/css" href="../css/jquery.dataTables.min.css?changed=2017083001">
<link rel="stylesheet" type="text/css" href="../css/bootstrap-multiselect.css?changed=2017083001" /> <link rel="stylesheet" type="text/css" href="../css/bootstrap-multiselect.css?changed=2017083001" />
<link rel="stylesheet" type="text/css" href="../css/font-awesome.min.css?changed=2017083001"> <link rel="stylesheet" type="text/css" href="../css/font-awesome.min.css?changed=2017083001">
@@ -178,6 +178,10 @@
<span class="input-header">External access: </span> <span class="input-header">External access: </span>
<input id="jackett-allowext" class="form-control input-right" type="checkbox" /> <input id="jackett-allowext" class="form-control input-right" type="checkbox" />
</div> </div>
<div class="input-area">
<span class="input-header">Allow CORS: </span>
<input id="jackett-allowcors" class="form-control input-right" type="checkbox" />
</div>
<div class="input-area"> <div class="input-area">
<span class="input-header">Disable auto update: </span> <span class="input-header">Disable auto update: </span>
<input id="jackett-allowupdate" class="form-control input-right" type="checkbox" /> <input id="jackett-allowupdate" class="form-control input-right" type="checkbox" />

View File

@@ -16,7 +16,7 @@
<link href="../bootstrap/bootstrap.min.css" rel="stylesheet"> <link href="../bootstrap/bootstrap.min.css" rel="stylesheet">
<link href="../animate.css" rel="stylesheet"> <link href="../animate.css" rel="stylesheet">
<link href="../custom.css?changed=202204222" rel="stylesheet"> <link href="../custom.css?changed=202204223" rel="stylesheet">
<title>Jackett</title> <title>Jackett</title>
</head> </head>

View File

@@ -33,6 +33,7 @@ namespace Jackett.Common.Models.Config
public int Port { get; set; } public int Port { get; set; }
public bool AllowExternal { get; set; } public bool AllowExternal { get; set; }
public bool AllowCORS { get; set; }
public string APIKey { get; set; } public string APIKey { get; set; }
public string AdminPassword { get; set; } public string AdminPassword { get; set; }
public string InstanceId { get; set; } public string InstanceId { get; set; }

View File

@@ -14,6 +14,8 @@ namespace Jackett.Common.Models.DTO
[DataMember] [DataMember]
public bool external { get; set; } public bool external { get; set; }
[DataMember] [DataMember]
public bool cors { get; set; }
[DataMember]
public string api_key { get; set; } public string api_key { get; set; }
[DataMember] [DataMember]
public string blackholedir { get; set; } public string blackholedir { get; set; }
@@ -66,6 +68,7 @@ namespace Jackett.Common.Models.DTO
this.notices = notices; this.notices = notices;
port = config.Port; port = config.Port;
external = config.AllowExternal; external = config.AllowExternal;
cors = config.AllowCORS;
api_key = config.APIKey; api_key = config.APIKey;
blackholedir = config.BlackholeDir; blackholedir = config.BlackholeDir;
updatedisabled = config.UpdateDisabled; updatedisabled = config.UpdateDisabled;

View File

@@ -79,6 +79,7 @@ namespace Jackett.Server.Controllers
var originalAllowExternal = serverConfig.AllowExternal; var originalAllowExternal = serverConfig.AllowExternal;
var port = config.port; var port = config.port;
var external = config.external; var external = config.external;
var cors = config.cors;
var saveDir = config.blackholedir; var saveDir = config.blackholedir;
var updateDisabled = config.updatedisabled; var updateDisabled = config.updatedisabled;
var preRelease = config.prerelease; var preRelease = config.prerelease;
@@ -113,10 +114,12 @@ namespace Jackett.Server.Controllers
var omdbApiUrl = config.omdburl; var omdbApiUrl = config.omdburl;
if (config.basepathoverride != serverConfig.BasePathOverride) if (config.basepathoverride != serverConfig.BasePathOverride)
{
webHostRestartNeeded = true; webHostRestartNeeded = true;
}
if (config.cors != serverConfig.AllowCORS)
webHostRestartNeeded = true;
serverConfig.AllowCORS = cors;
serverConfig.UpdateDisabled = updateDisabled; serverConfig.UpdateDisabled = updateDisabled;
serverConfig.UpdatePrerelease = preRelease; serverConfig.UpdatePrerelease = preRelease;
serverConfig.BasePathOverride = basePathOverride; serverConfig.BasePathOverride = basePathOverride;

View File

@@ -30,6 +30,8 @@ namespace Jackett.Server
{ {
public class Startup public class Startup
{ {
private const string AllowAllOrigins = "AllowAllOrigins";
public Startup(IConfiguration configuration) => Configuration = configuration; public Startup(IConfiguration configuration) => Configuration = configuration;
public IConfiguration Configuration { get; } public IConfiguration Configuration { get; }
@@ -37,9 +39,14 @@ namespace Jackett.Server
// This method gets called by the runtime. Use this method to add services to the container. // This method gets called by the runtime. Use this method to add services to the container.
public IServiceProvider ConfigureServices(IServiceCollection services) public IServiceProvider ConfigureServices(IServiceCollection services)
{ {
services.AddResponseCompression(); services.AddResponseCompression()
.AddCors(
options =>
{
options.AddPolicy(name: AllowAllOrigins, corsPolicyBuilder => corsPolicyBuilder.AllowAnyOrigin());
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) })
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => options =>
{ {
@@ -49,8 +56,6 @@ namespace Jackett.Server
options.Cookie.Name = "Jackett"; options.Cookie.Name = "Jackett";
}); });
#if NET461 #if NET461
services.AddMvc( services.AddMvc(
config => config.Filters.Add( config => config.Filters.Add(
@@ -141,6 +146,9 @@ namespace Jackett.Server
app.UseAuthentication(); app.UseAuthentication();
if (Helper.ServerConfiguration.AllowCORS)
app.UseCors(AllowAllOrigins);
app.UseMvc(); app.UseMvc();
} }
#else #else
@@ -183,6 +191,9 @@ namespace Jackett.Server
app.UseRouting(); app.UseRouting();
if (Helper.ServerConfiguration.AllowCORS)
app.UseCors(AllowAllOrigins);
app.UseEndpoints(endpoints => endpoints.MapControllers()); app.UseEndpoints(endpoints => endpoints.MapControllers());
} }
#endif #endif