Fix better reverse proxy support

This commit is contained in:
Azerelat 2016-01-14 20:15:10 +00:00
parent a69ecf3e06
commit c7aa0d7b0f
3 changed files with 51 additions and 38 deletions

View File

@ -1,4 +1,4 @@
var basePath = "";
var basePath = '';
$(document).ready(function () {
$.ajaxSetup({ cache: false });
@ -7,7 +7,7 @@ $(document).ready(function () {
bindUIButtons();
loadJackettSettings();
reloadIndexers();
});
function getJackettConfig(callback) {
@ -26,6 +26,10 @@ function loadJackettSettings() {
$("#jackett-port").val(data.config.port);
$("#jackett-basepathoverride").val(data.config.basepathoverride);
basePath = data.config.basepathoverride;
if (basePath === null || basePath === undefined) {
basePath = '';
}
$("#jackett-savedir").val(data.config.blackholedir);
$("#jackett-allowext").attr('checked', data.config.external);
$("#jackett-allowupdate").attr('checked', data.config.updatedisabled);
@ -36,6 +40,8 @@ function loadJackettSettings() {
if (password != null && password != '') {
$("#logoutBtn").show();
}
reloadIndexers();
});
}
@ -56,8 +62,8 @@ function displayIndexers(items) {
$('#unconfigured-indexers-template').empty();
for (var i = 0; i < items.length; i++) {
var item = items[i];
item.torznab_host = resolveUrl("/" + basePath + "/torznab/" + item.id);
item.potato_host = resolveUrl("/" + basePath + "/potato/" + item.id);
item.torznab_host = resolveUrl(basePath + "/torznab/" + item.id);
item.potato_host = resolveUrl(basePath + "/potato/" + item.id);
if (item.configured)
$('#indexers').append(indexerTemplate(item));
else

View File

@ -86,7 +86,7 @@
</div>
<div class="input-area">
<span class="input-header">Base Path Override: </span>
<input id="jackett-basepathoverride" class="form-control input-right" type="text" value="" placeholder="jackett/">
<input id="jackett-basepathoverride" class="form-control input-right" type="text" value="" placeholder="/jackett/">
</div>
<div class="input-area">
<span class="input-header">Server port: </span>

View File

@ -1,35 +1,42 @@
using Jackett.Services;
using Microsoft.Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Jackett.Utils
{
public class WebApiRootRedirectMiddleware : OwinMiddleware
{
public WebApiRootRedirectMiddleware(OwinMiddleware next)
: base(next)
{
}
public async override Task Invoke(IOwinContext context)
{
var url = context.Request.Uri;
if (string.IsNullOrWhiteSpace(url.AbsolutePath) || url.AbsolutePath == "/")
{
// 301 is the status code of permanent redirect
context.Response.StatusCode = 301;
var redir = Startup.BasePath + "Admin/Dashboard";
Engine.Logger.Info("redirecting to " + redir);
context.Response.Headers.Set("Location", redir);
}
else
{
await Next.Invoke(context);
}
}
}
using Microsoft.Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Jackett.Utils
{
public class WebApiRootRedirectMiddleware : OwinMiddleware
{
public WebApiRootRedirectMiddleware(OwinMiddleware next)
: base(next)
{
}
public async override Task Invoke(IOwinContext context)
{
var url = context.Request.Uri;
if(context.Request.Path != null && context.Request.Path.HasValue && context.Request.Path.Value.StartsWith(Startup.BasePath))
{
context.Request.Path = new PathString(context.Request.Path.Value.Substring(Startup.BasePath.Length-1));
}
if (string.IsNullOrWhiteSpace(url.AbsolutePath) || url.AbsolutePath == "/")
{
// 301 is the status code of permanent redirect
context.Response.StatusCode = 301;
var redir = Startup.BasePath + "Admin/Dashboard";
Engine.Logger.Info("redirecting to " + redir);
context.Response.Headers.Set("Location", redir);
}
else
{
await Next.Invoke(context);
}
}
}
}