Added UI for allowing external access, stop server listening on the old port when changing ports. Config migration bug fixes.

This commit is contained in:
KZ
2015-07-24 20:15:08 +01:00
parent 84c2b0c8b9
commit 960720b3e4
15 changed files with 149 additions and 37 deletions

View File

@@ -260,6 +260,7 @@ namespace Jackett.Controllers
{
var cfg = new JObject();
cfg["port"] = serverService.Config.Port;
cfg["external"] = serverService.Config.AllowExternal;
cfg["api_key"] = serverService.Config.APIKey;
cfg["password"] = string.IsNullOrEmpty(serverService.Config.AdminPassword )? string.Empty:serverService.Config.AdminPassword.Substring(0,10);
@@ -285,13 +286,15 @@ namespace Jackett.Controllers
public async Task<IHttpActionResult> SetConfig()
{
var originalPort = Engine.Server.Config.Port;
var originalAllowExternal = Engine.Server.Config.AllowExternal;
var jsonReply = new JObject();
try
{
var postData = await ReadPostDataJson();
int port = (int)postData["port"];
bool external = (bool)postData["external"];
if (port != Engine.Server.Config.Port)
if (port != Engine.Server.Config.Port || external != Engine.Server.Config.AllowExternal)
{
if (ServerUtil.RestrictedPorts.Contains(port))
{
@@ -300,6 +303,8 @@ namespace Jackett.Controllers
return Json(jsonReply);
}
// Save port to the config so it can be picked up by the if needed when running as admin below.
Engine.Server.Config.AllowExternal = external;
Engine.Server.Config.Port = port;
Engine.Server.SaveConfig();
@@ -311,6 +316,7 @@ namespace Jackett.Controllers
catch
{
Engine.Server.Config.Port = originalPort;
Engine.Server.Config.AllowExternal = originalAllowExternal;
Engine.Server.SaveConfig();
jsonReply["result"] = "error";
jsonReply["error"] = "Failed to acquire admin permissions to reserve the new port.";
@@ -323,12 +329,16 @@ namespace Jackett.Controllers
(new Thread(() => {
Thread.Sleep(500);
serverService.Start();
serverService.Stop();
Engine.BuildContainer();
Engine.Server.Initalize();
Engine.Server.Start();
})).Start();
}
jsonReply["result"] = "success";
jsonReply["port"] = port;
jsonReply["external"] = external;
}
catch (Exception ex)
{