diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index 2f71054f6..08e4c3b6a 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -88,6 +88,7 @@ + diff --git a/src/Jackett/Program.cs b/src/Jackett/Program.cs index b8a115d57..52c0d18d5 100644 --- a/src/Jackett/Program.cs +++ b/src/Jackett/Program.cs @@ -1,4 +1,6 @@ -using NLog; +using Jackett.Indexers; +using Newtonsoft.Json.Linq; +using NLog; using NLog.Config; using NLog.Targets; using System; @@ -28,6 +30,8 @@ namespace Jackett public static bool IsWindows { get { return Environment.OSVersion.Platform == PlatformID.Win32NT; } } + + static void Main(string[] args) { ExitEvent = new ManualResetEvent(false); @@ -81,6 +85,8 @@ namespace Jackett LogManager.Configuration = logConfig; LoggerInstance = LogManager.GetCurrentClassLogger(); + ReadSettingsFile(); + var serverTask = Task.Run(async () => { ServerInstance = new Server(); @@ -99,10 +105,32 @@ namespace Jackett Console.WriteLine("Running in headless mode."); + + Task.WaitAll(serverTask); Console.WriteLine("Server thread exit"); } + static void ReadSettingsFile() + { + var path = Path.Combine(AppConfigDirectory, "config.json"); + if (!File.Exists(path)) + { + JObject f = new JObject(); + f.Add("port", Server.DefaultPort); + f.Add("public", true); + File.WriteAllText(path, f.ToString()); + } + + var configJson = JObject.Parse(File.ReadAllText(path)); + int port = (int)configJson.GetValue("port"); + Server.Port = port; + + Server.ListenPublic = (bool)configJson.GetValue("public"); + + Console.WriteLine("Config file path: " + path); + } + static public void RestartAsAdmin() { var startInfo = new ProcessStartInfo(Application.ExecutablePath.ToString()) { Verb = "runas" }; diff --git a/src/Jackett/Server.cs b/src/Jackett/Server.cs index 28213dd2f..18934598c 100644 --- a/src/Jackett/Server.cs +++ b/src/Jackett/Server.cs @@ -15,7 +15,9 @@ namespace Jackett { public class Server { - public const int Port = 9117; + public const int DefaultPort = 9117; + public static int Port = DefaultPort; + public static bool ListenPublic = true; HttpListener listener; IndexerManager indexerManager; @@ -55,7 +57,13 @@ namespace Jackett try { listener = new HttpListener(); - listener.Prefixes.Add("http://*:9117/"); + listener.Prefixes.Add(string.Format("http://127.0.0.1:{0}/", Port)); + listener.Prefixes.Add(string.Format("http://localhost:{0}/", Port)); + if (ListenPublic) + { + listener.Prefixes.Add(string.Format("http://*:{0}/", Port)); + } + listener.Start(); } catch (HttpListenerException ex) @@ -88,6 +96,7 @@ namespace Jackett } Program.LoggerInstance.Info("Server started on port " + Port); + Program.LoggerInstance.Info("Accepting only requests from local system: " + (!ListenPublic)); while (true) {