Skip to content

Commit

Permalink
webui: override base url when copying feed (#12882)
Browse files Browse the repository at this point in the history
Co-authored-by: ilike2burnthing <59480337+ilike2burnthing@users.noreply.github.com>
  • Loading branch information
Salvatore Catroppa and ilike2burnthing committed Jan 26, 2022
1 parent f84f492 commit 7b8b59b
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 7 deletions.
27 changes: 20 additions & 7 deletions src/Jackett.Common/Content/custom.js
@@ -1,4 +1,5 @@
var basePath = '';
var baseUrl = '';

var indexers = [];
var configuredIndexers = [];
Expand Down Expand Up @@ -114,6 +115,12 @@ function loadJackettSettings() {
basePath = '';
}

$("#jackett-baseurloverride").val(data.baseurloverride);
baseUrl = data.baseurloverride;
if (baseUrl === null || baseUrl === undefined) {
baseUrl = '';
}

api.key = data.api_key;

$("#jackett-savedir").val(data.blackholedir);
Expand Down Expand Up @@ -163,9 +170,9 @@ function reloadIndexers() {
availableFilters = [];
for (var i = 0; i < data.length; i++) {
var item = data[i];
item.rss_host = resolveUrl(basePath + "/api/v2.0/indexers/" + item.id + "/results/torznab/api?apikey=" + api.key + "&t=search&cat=&q=");
item.torznab_host = resolveUrl(basePath + "/api/v2.0/indexers/" + item.id + "/results/torznab/");
item.potato_host = resolveUrl(basePath + "/api/v2.0/indexers/" + item.id + "/results/potato/");
item.rss_host = resolveUrl(baseUrl, basePath + "/api/v2.0/indexers/" + item.id + "/results/torznab/api?apikey=" + api.key + "&t=search&cat=&q=");
item.torznab_host = resolveUrl(baseUrl, basePath + "/api/v2.0/indexers/" + item.id + "/results/torznab/");
item.potato_host = resolveUrl(baseUrl, basePath + "/api/v2.0/indexers/" + item.id + "/results/potato/");

if (item.last_error)
item.state = "error";
Expand Down Expand Up @@ -922,10 +929,14 @@ function populateSetupForm(indexerId, name, config, caps, link, alternativesitel
configForm.modal("show");
}

function resolveUrl(url) {
var a = document.createElement('a');
a.href = url;
url = a.href;
function resolveUrl(baseUrl, url) {
if (baseUrl != '') {
url = baseUrl + url;
}else{
var a = document.createElement('a');
a.href = url;
url = a.href;
}
return url;
}

Expand Down Expand Up @@ -1514,6 +1525,7 @@ function bindUIButtons() {
$("#change-jackett-port").click(function () {
var jackett_port = Number($("#jackett-port").val());
var jackett_basepathoverride = $("#jackett-basepathoverride").val();
var jackett_baseurloverride = $("#jackett-baseurloverride").val();
var jackett_external = $("#jackett-allowext").is(':checked');
var jackett_update = $("#jackett-allowupdate").is(':checked');
var jackett_prerelease = $("#jackett-prerelease").is(':checked');
Expand All @@ -1540,6 +1552,7 @@ function bindUIButtons() {
blackholedir: $("#jackett-savedir").val(),
logging: jackett_logging,
basepathoverride: jackett_basepathoverride,
baseurloverride: jackett_baseurloverride,
logging: jackett_logging,
cache_enabled: jackett_cache_enabled,
cache_ttl: jackett_cache_ttl,
Expand Down
4 changes: 4 additions & 0 deletions src/Jackett.Common/Content/index.html
Expand Up @@ -130,6 +130,10 @@ <h3>Jackett Configuration</h3>
<span class="input-header">Base path override: </span>
<input id="jackett-basepathoverride" class="form-control input-right" type="text" value="" placeholder="/jackett">
</div>
<div class="input-area">
<span class="input-header">Base URL override: </span>
<input id="jackett-baseurloverride" class="form-control input-right" type="text" value="" placeholder="http://jackett:9117">
</div>
<div class="input-area">
<span class="input-header">Server port: </span>
<input id="jackett-port" class="form-control input-right" type="text" value="" placeholder="9117">
Expand Down
1 change: 1 addition & 0 deletions src/Jackett.Common/Models/Config/ServerConfig.cs
Expand Up @@ -40,6 +40,7 @@ internal void OnDeserializedMethod(StreamingContext context)
public bool UpdateDisabled { get; set; }
public bool UpdatePrerelease { get; set; }
public string BasePathOverride { get; set; }
public string BaseUrlOverride { get; set; }
public bool CacheEnabled { get; set; }
public long CacheTtl { get; set; }
public long CacheMaxResultsPerIndexer { get; set; }
Expand Down
3 changes: 3 additions & 0 deletions src/Jackett.Common/Models/DTO/ServerConfig.cs
Expand Up @@ -28,6 +28,8 @@ public class ServerConfig
[DataMember]
public string basepathoverride { get; set; }
[DataMember]
public string baseurloverride { get; set; }
[DataMember]
public bool cache_enabled { get; set; }
[DataMember]
public long cache_ttl { get; set; }
Expand Down Expand Up @@ -71,6 +73,7 @@ public ServerConfig(IEnumerable<string> notices, Models.Config.ServerConfig conf
password = string.IsNullOrEmpty(config.AdminPassword) ? string.Empty : config.AdminPassword.Substring(0, 10);
logging = config.RuntimeSettings.TracingEnabled;
basepathoverride = config.BasePathOverride;
baseurloverride = config.BaseUrlOverride;
cache_enabled = config.CacheEnabled;
cache_ttl = config.CacheTtl;
cache_max_results_per_indexer = config.CacheMaxResultsPerIndexer;
Expand Down
10 changes: 10 additions & 0 deletions src/Jackett.Server/Controllers/ServerConfigurationController.cs
Expand Up @@ -92,6 +92,15 @@ public IActionResult UpdateConfig([FromBody] Common.Models.DTO.ServerConfig conf
throw new Exception("The Base Path Override must start with a /");
}

var baseUrlOverride = config.baseurloverride;
if (baseUrlOverride != null)
{
baseUrlOverride = baseUrlOverride.TrimEnd('/');
if (!Uri.TryCreate(config.baseurloverride, UriKind.Absolute, out var uri)
|| !(uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps))
throw new Exception("Base URL Override is invalid. Example: http://jackett:9117");
}

var cacheEnabled = config.cache_enabled;
var cacheTtl = config.cache_ttl;
var cacheMaxResultsPerIndexer = config.cache_max_results_per_indexer;
Expand All @@ -106,6 +115,7 @@ public IActionResult UpdateConfig([FromBody] Common.Models.DTO.ServerConfig conf
serverConfig.UpdateDisabled = updateDisabled;
serverConfig.UpdatePrerelease = preRelease;
serverConfig.BasePathOverride = basePathOverride;
serverConfig.BaseUrlOverride = baseUrlOverride;
serverConfig.CacheEnabled = cacheEnabled;
serverConfig.CacheTtl = cacheTtl;
serverConfig.CacheMaxResultsPerIndexer = cacheMaxResultsPerIndexer;
Expand Down

0 comments on commit 7b8b59b

Please sign in to comment.