2015-07-23 23:07:36 +00:00
using CommandLine ;
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Text ;
using System.Threading.Tasks ;
2017-11-13 08:38:38 +00:00
namespace Jackett.Common.Models.Config
2015-07-23 23:07:36 +00:00
{
public class ConsoleOptions
{
[Option('i', "Install", HelpText = "Install Jackett windows service (Must be admin)")]
public bool Install { get ; set ; }
[Option('r', "ReserveUrls", HelpText = "(Re)Register windows port reservations (Required for listening on all interfaces).")]
public bool ReserveUrls { get ; set ; }
[Option('u', "Uninstall", HelpText = "Uninstall Jackett windows service (Must be admin).")]
public bool Uninstall { get ; set ; }
2015-07-24 21:38:31 +00:00
[Option('l', "Logging", HelpText = "Log all requests/responses to Jackett")]
2015-07-23 23:07:36 +00:00
public bool Logging { get ; set ; }
2015-07-24 21:38:31 +00:00
[Option('t', "Tracing", HelpText = "Enable tracing")]
2015-07-23 23:07:36 +00:00
public bool Tracing { get ; set ; }
2017-02-20 18:47:11 +00:00
[Option('c', "UseClient", HelpText = "Override web client selection. [automatic(Default)/libcurl/safecurl/httpclient/httpclient2] ")]
2015-07-30 17:50:46 +00:00
public string Client { get ; set ; }
2015-07-23 23:07:36 +00:00
2015-12-25 03:26:39 +00:00
[Option('j', "ProxyConnection", HelpText = "use proxy - e.g. 127.0.0.1:8888")]
public string ProxyConnection { get ; set ; }
2015-07-23 23:07:36 +00:00
[Option('s', "Start", HelpText = "Start the Jacket Windows service (Must be admin)")]
public bool StartService { get ; set ; }
[Option('k', "Stop", HelpText = "Stop the Jacket Windows service (Must be admin)")]
public bool StopService { get ; set ; }
2015-08-05 18:13:51 +00:00
[Option('x', "ListenPublic", HelpText = "Listen publicly")]
public bool ListenPublic { get ; set ; }
[Option('z', "ListenPrivate", HelpText = "Only allow local access")]
public bool ListenPrivate { get ; set ; }
2015-07-23 23:07:36 +00:00
[Option('h', "Help", HelpText = "Show Help")]
public bool ShowHelp { get ; set ; }
[Option('v', "Version", HelpText = "Show Version")]
public bool ShowVersion { get ; set ; }
[Option('p', "Port", HelpText = "Web server port")]
public int Port { get ; set ; }
2015-07-24 19:15:08 +00:00
[Option('m', "MigrateSettings", HelpText = "Migrate settings manually (Must be admin on Windows)")]
public bool MigrateSettings { get ; set ; }
2015-07-31 19:27:59 +00:00
2015-08-05 18:13:51 +00:00
[Option('f', "SSLFix", HelpText = "[true/false] Linux Libcurl NSS Missing ECC Ciphers workaround ( Use if you can ' t access some trackers ) . ")]
2015-07-31 19:27:59 +00:00
public bool? SSLFix { get ; set ; }
2015-08-05 18:13:51 +00:00
2016-11-09 17:26:32 +00:00
[Option('n', "IgnoreSslErrors", HelpText = "[true/false] Ignores invalid SSL certificates ")]
2015-12-02 10:19:51 +00:00
public bool? IgnoreSslErrors { get ; set ; }
2017-08-29 12:12:05 +00:00
[Option('d', "DataFolder", HelpText = "Specify the location of the data folder (Must be admin on Windows) eg. --DataFolder=\"D:\\Your Data\\Jackett\\\". Don't use this on Unix (mono) systems. On Unix just adjust the HOME directory of the user to the datedir or set the XDG_CONFIG_HOME environment variable.")]
2016-05-28 09:40:55 +00:00
public string DataFolder { get ; set ; }
2017-11-14 19:21:31 +00:00
[Option("NoRestart", HelpText = "Don't restart after update")]
2017-11-13 08:38:38 +00:00
public bool NoRestart { get ; set ; }
2017-01-20 12:50:23 +00:00
2017-11-13 08:38:38 +00:00
public RuntimeSettings ToRunTimeSettings ( )
{
var options = this ;
var runtimeSettings = new RuntimeSettings ( ) ;
// Logging
if ( options . Logging )
runtimeSettings . LogRequests = true ;
// Tracing
if ( options . Tracing )
runtimeSettings . TracingEnabled = true ;
if ( options . ListenPublic & & options . ListenPrivate )
{
Console . WriteLine ( "You can only use listen private OR listen publicly." ) ;
Environment . Exit ( 1 ) ;
}
// SSL Fix
runtimeSettings . DoSSLFix = options . SSLFix ;
// Use curl
if ( options . Client ! = null )
runtimeSettings . ClientOverride = options . Client . ToLowerInvariant ( ) ;
// Use Proxy
if ( options . ProxyConnection ! = null )
{
runtimeSettings . ProxyConnection = options . ProxyConnection . ToLowerInvariant ( ) ;
}
// Ignore SSL errors on Curl
runtimeSettings . IgnoreSslErrors = options . IgnoreSslErrors ;
runtimeSettings . NoRestart = options . NoRestart ;
2017-11-30 10:17:09 +00:00
if ( ! string . IsNullOrWhiteSpace ( options . DataFolder ) )
runtimeSettings . CustomDataFolder = options . DataFolder ;
2017-11-13 08:38:38 +00:00
return runtimeSettings ;
}
}
}