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)
{