diff options
Diffstat (limited to 'src/main.lib/Plugins/ValidationPlugins')
21 files changed, 66 insertions, 54 deletions
diff --git a/src/main.lib/Plugins/ValidationPlugins/Dns/Manual/ManualOptionsFactory.cs b/src/main.lib/Plugins/ValidationPlugins/Dns/Manual/ManualOptionsFactory.cs index 323243f..2c6eeb8 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Dns/Manual/ManualOptionsFactory.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Dns/Manual/ManualOptionsFactory.cs @@ -8,8 +8,8 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns internal class ManualOptionsFactory : ValidationPluginOptionsFactory<Manual, ManualOptions> { public ManualOptionsFactory() : base(Constants.Dns01ChallengeType) { } - public override Task<ManualOptions> Aquire(Target target, IInputService inputService, RunLevel runLevel) => Task.FromResult(new ManualOptions()); - public override Task<ManualOptions> Default(Target target) => Task.FromResult(new ManualOptions()); + public override async Task<ManualOptions?> Aquire(Target target, IInputService inputService, RunLevel runLevel) => new ManualOptions(); + public override async Task<ManualOptions?> Default(Target target) => new ManualOptions(); public override bool CanValidate(Target target) => true; } } diff --git a/src/main.lib/Plugins/ValidationPlugins/Dns/Script/ScriptArguments.cs b/src/main.lib/Plugins/ValidationPlugins/Dns/Script/ScriptArguments.cs index 85e879f..74109f5 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Dns/Script/ScriptArguments.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Dns/Script/ScriptArguments.cs @@ -2,10 +2,10 @@ { internal class ScriptArguments { - public string DnsScript { get; set; } - public string DnsCreateScript { get; set; } - public string DnsCreateScriptArguments { get; set; } - public string DnsDeleteScript { get; set; } - public string DnsDeleteScriptArguments { get; set; } + public string? DnsScript { get; set; } + public string? DnsCreateScript { get; set; } + public string? DnsCreateScriptArguments { get; set; } + public string? DnsDeleteScript { get; set; } + public string? DnsDeleteScriptArguments { get; set; } } } diff --git a/src/main.lib/Plugins/ValidationPlugins/Dns/Script/ScriptOptionsFactory.cs b/src/main.lib/Plugins/ValidationPlugins/Dns/Script/ScriptOptionsFactory.cs index ad4c34f..c974b2a 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Dns/Script/ScriptOptionsFactory.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Dns/Script/ScriptOptionsFactory.cs @@ -30,7 +30,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns _arguments = arguments; } - public override async Task<ScriptOptions> Aquire(Target target, IInputService input, RunLevel runLevel) + public override async Task<ScriptOptions?> Aquire(Target target, IInputService input, RunLevel runLevel) { var args = _arguments.GetArguments<ScriptArguments>(); var ret = new ScriptOptions(); @@ -79,7 +79,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns return ret; } - public override Task<ScriptOptions> Default(Target target) + public override async Task<ScriptOptions?> Default(Target target) { var args = _arguments.GetArguments<ScriptArguments>(); var ret = new ScriptOptions(); @@ -89,7 +89,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns if (!ret.Script.ValidFile(_log)) { _log.Error($"Invalid argument --{nameof(args.DnsScript).ToLower()}"); - return Task.FromResult(default(ScriptOptions)); + return null; } } else @@ -97,20 +97,20 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns if (!ret.CreateScript.ValidFile(_log)) { _log.Error($"Invalid argument --{nameof(args.DnsCreateScript).ToLower()}"); - return Task.FromResult(default(ScriptOptions)); + return null; } if (!string.IsNullOrEmpty(ret.DeleteScript)) { if (!ret.DeleteScript.ValidFile(_log)) { _log.Error($"Invalid argument --{nameof(args.DnsDeleteScript).ToLower()}"); - return Task.FromResult(default(ScriptOptions)); + return null; } } } ProcessArgs(ret, args.DnsCreateScriptArguments, args.DnsDeleteScriptArguments); - return Task.FromResult(ret); + return ret; } /// <summary> @@ -120,7 +120,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns /// <param name="commonInput"></param> /// <param name="createInput"></param> /// <param name="deleteInput"></param> - private void ProcessScripts(ScriptOptions options, string commonInput, string createInput, string deleteInput) + private void ProcessScripts(ScriptOptions options, string? commonInput, string? createInput, string? deleteInput) { if (!string.IsNullOrWhiteSpace(commonInput)) { @@ -151,7 +151,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns } } - private void ProcessArgs(ScriptOptions options, string createInput, string deleteInput) + private void ProcessArgs(ScriptOptions options, string? createInput, string? deleteInput) { if (!string.IsNullOrWhiteSpace(createInput) && createInput != Script.DefaultCreateArguments) diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs b/src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs index c56ddf4..aa86b9b 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs @@ -25,7 +25,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http public override bool PathIsValid(string path) => path.ValidPath(_log); public override bool AllowEmtpy(Target target) => target.IIS; - public override Task<FileSystemOptions> Default(Target target) + public override async Task<FileSystemOptions?> Default(Target target) { var args = _arguments.GetArguments<FileSystemArguments>(); var ret = new FileSystemOptions(BaseDefault(target)); @@ -40,10 +40,10 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http ret.SiteId = args.ValidationSiteId.Value; } } - return Task.FromResult(ret); + return ret; } - public override async Task<FileSystemOptions> Aquire(Target target, IInputService inputService, RunLevel runLevel) + public override async Task<FileSystemOptions?> Aquire(Target target, IInputService inputService, RunLevel runLevel) { // Choose alternative site for validation var ret = new FileSystemOptions(await BaseAquire(target, inputService)); diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/Ftp.cs b/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/Ftp.cs index 7c3d2bf..5ceadec 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/Ftp.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/Ftp.cs @@ -6,7 +6,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http { internal class Ftp : HttpValidation<FtpOptions, Ftp> { - private FtpClient _ftpClient; + private FtpClient? _ftpClient; public Ftp(FtpOptions options, HttpValidationParameters pars, RunLevel runLevel) : base(options, runLevel, pars) => _ftpClient = new FtpClient(_options.Credential, pars.LogService); diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/FtpOptions.cs b/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/FtpOptions.cs index a90764d..fd9710d 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/FtpOptions.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/FtpOptions.cs @@ -16,7 +16,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http /// <summary> /// Credentials to use for WebDav connection /// </summary> - public NetworkCredentialOptions Credential { get; set; } + public NetworkCredentialOptions? Credential { get; set; } /// <summary> /// Show settings to user diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/FtpOptionsFactory.cs b/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/FtpOptionsFactory.cs index 8510b30..a71763b 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/FtpOptionsFactory.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/Ftp/FtpOptionsFactory.cs @@ -37,15 +37,15 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http }; } - public override Task<FtpOptions> Default(Target target) + public override async Task<FtpOptions?> Default(Target target) { - return Task.FromResult(new FtpOptions(BaseDefault(target)) + return new FtpOptions(BaseDefault(target)) { Credential = new NetworkCredentialOptions(_arguments) - }); + }; } - public override async Task<FtpOptions> Aquire(Target target, IInputService inputService, RunLevel runLevel) + public override async Task<FtpOptions?> Aquire(Target target, IInputService inputService, RunLevel runLevel) { return new FtpOptions(await BaseAquire(target, inputService)) { diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidation.cs b/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidation.cs index ab791cf..3335cea 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidation.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidation.cs @@ -34,7 +34,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins /// Path used for the current renewal, may not be same as _options.Path /// because of the "Split" function employed by IISSites target /// </summary> - protected string _path; + protected string? _path; /// <summary> /// Provides proxy settings for site warmup @@ -145,6 +145,10 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins /// <param name="fileContents">the contents of the file to write</param> private void WriteAuthorizationFile() { + if (_path == null || _challenge == null) + { + throw new InvalidOperationException(); + } WriteFile(CombinePath(_path, _challenge.HttpResourcePath), _challenge.HttpResourceValue); _challengeWritten = true; } @@ -157,6 +161,10 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins /// <param name="token"></param> private void WriteWebConfig() { + if (_path == null) + { + throw new InvalidOperationException(); + } if (_options.CopyWebConfig == true) { _log.Debug("Writing web.config"); @@ -182,6 +190,10 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins /// <param name="token"></param> private void DeleteWebConfig() { + if (_path == null || _challenge == null) + { + throw new InvalidOperationException(); + } if (_webConfigWritten) { _log.Debug("Deleting web.config"); @@ -202,7 +214,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins { try { - if (_challengeWritten) + if (_path != null && _challenge != null && _challengeWritten) { _log.Debug("Deleting answer"); var path = CombinePath(_path, _challenge.HttpResourcePath); diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationArguments.cs b/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationArguments.cs index 0774419..b10e384 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationArguments.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationArguments.cs @@ -2,7 +2,7 @@ { internal class HttpValidationArguments { - public string WebRoot { get; set; } + public string? WebRoot { get; set; } public bool Warmup { get; set; } public bool ManualTargetIsIIS { get; set; } } diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationOptions.cs b/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationOptions.cs index 6546a9a..2a83a98 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationOptions.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationOptions.cs @@ -6,7 +6,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins { internal abstract class HttpValidationOptions<T> : ValidationPluginOptions<T> where T : IValidationPlugin { - public string Path { get; set; } + public string? Path { get; set; } public bool? CopyWebConfig { get; set; } public HttpValidationOptions() { } diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationOptionsFactory.cs b/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationOptionsFactory.cs index 377bdf8..f98a2e8 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationOptionsFactory.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/HttpValidationOptionsFactory.cs @@ -56,7 +56,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins /// </summary> public HttpValidationOptions<TPlugin> BaseDefault(Target target) { - string path = null; + string? path = null; var allowEmpty = AllowEmtpy(target); var args = _arguments.GetArguments<HttpValidationArguments>(); if (string.IsNullOrEmpty(path) && !allowEmpty) diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/SelfHosting/SelfHosting.cs b/src/main.lib/Plugins/ValidationPlugins/Http/SelfHosting/SelfHosting.cs index 5eeae60..d646ae8 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/SelfHosting/SelfHosting.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/SelfHosting/SelfHosting.cs @@ -10,7 +10,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http internal class SelfHosting : Validation<Http01ChallengeValidationDetails> { internal const int DefaultValidationPort = 80; - private HttpListener _listener; + private HttpListener? _listener; private readonly Dictionary<string, string> _files; private readonly SelfHostingOptions _options; private readonly ILogService _log; diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/SelfHosting/SelfHostingOptionsFactory.cs b/src/main.lib/Plugins/ValidationPlugins/Http/SelfHosting/SelfHostingOptionsFactory.cs index 2eb55cc..d2696a7 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/SelfHosting/SelfHostingOptionsFactory.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/SelfHosting/SelfHostingOptionsFactory.cs @@ -18,15 +18,15 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http public override bool Disabled => SelfHosting.IsDisabled(_userRoleService); - public override Task<SelfHostingOptions> Aquire(Target target, IInputService inputService, RunLevel runLevel) => Default(target); + public override Task<SelfHostingOptions?> Aquire(Target target, IInputService inputService, RunLevel runLevel) => Default(target); - public override Task<SelfHostingOptions> Default(Target target) + public override async Task<SelfHostingOptions?> Default(Target target) { var args = _arguments.GetArguments<SelfHostingArguments>(); - return Task.FromResult(new SelfHostingOptions() + return new SelfHostingOptions() { Port = args.ValidationPort - }); + }; } } }
\ No newline at end of file diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/Sftp/Sftp.cs b/src/main.lib/Plugins/ValidationPlugins/Http/Sftp/Sftp.cs index 91981d5..f3f536c 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/Sftp/Sftp.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/Sftp/Sftp.cs @@ -6,7 +6,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http { internal class Sftp : HttpValidation<SftpOptions, Sftp> { - private SshFtpClient _sshFtpClient; + private SshFtpClient? _sshFtpClient; public Sftp(SftpOptions options, HttpValidationParameters pars, RunLevel runLevel) : base(options, runLevel, pars) => _sshFtpClient = new SshFtpClient(_options.Credential.GetCredential(), pars.LogService); diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/Sftp/SftpOptionsFactory.cs b/src/main.lib/Plugins/ValidationPlugins/Http/Sftp/SftpOptionsFactory.cs index 754bba3..31c2c3b 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/Sftp/SftpOptionsFactory.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/Sftp/SftpOptionsFactory.cs @@ -22,15 +22,15 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http }; } - public override Task<SftpOptions> Default(Target target) + public override async Task<SftpOptions?> Default(Target target) { - return Task.FromResult(new SftpOptions(BaseDefault(target)) + return new SftpOptions(BaseDefault(target)) { Credential = new NetworkCredentialOptions(_arguments) - }); + }; } - public override async Task<SftpOptions> Aquire(Target target, IInputService inputService, RunLevel runLevel) + public override async Task<SftpOptions?> Aquire(Target target, IInputService inputService, RunLevel runLevel) { return new SftpOptions(await BaseAquire(target, inputService)) { diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDav.cs b/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDav.cs index dcead5c..990f338 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDav.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDav.cs @@ -6,7 +6,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http { internal class WebDav : HttpValidation<WebDavOptions, WebDav> { - private WebDavClientWrapper _webdavClient; + private readonly WebDavClientWrapper _webdavClient; public WebDav( WebDavOptions options, HttpValidationParameters pars, @@ -25,7 +25,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http public override Task CleanUp() { base.CleanUp(); - _webdavClient = null; + _webdavClient.Dispose(); return Task.CompletedTask; } } diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDavOptions.cs b/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDavOptions.cs index 540f135..bcb9a20 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDavOptions.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDavOptions.cs @@ -16,7 +16,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http /// <summary> /// Credentials to use for WebDav connection /// </summary> - public NetworkCredentialOptions Credential { get; set; } + public NetworkCredentialOptions? Credential { get; set; } /// <summary> /// Show settings to user diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDavOptionsFactory.cs b/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDavOptionsFactory.cs index 49ea451..f9f358c 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDavOptionsFactory.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Http/WebDav/WebDavOptionsFactory.cs @@ -28,15 +28,15 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Http }; } - public override Task<WebDavOptions> Default(Target target) + public override async Task<WebDavOptions?> Default(Target target) { - return Task.FromResult(new WebDavOptions(BaseDefault(target)) + return new WebDavOptions(BaseDefault(target)) { Credential = new NetworkCredentialOptions(_arguments) - }); + }; } - public override async Task<WebDavOptions> Aquire(Target target, IInputService inputService, RunLevel runLevel) + public override async Task<WebDavOptions?> Aquire(Target target, IInputService inputService, RunLevel runLevel) { return new WebDavOptions(await BaseAquire(target, inputService)) { diff --git a/src/main.lib/Plugins/ValidationPlugins/Tls/SelfHosting/SelfHosting.cs b/src/main.lib/Plugins/ValidationPlugins/Tls/SelfHosting/SelfHosting.cs index 44dbc74..37a9cea 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Tls/SelfHosting/SelfHosting.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Tls/SelfHosting/SelfHosting.cs @@ -18,8 +18,8 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Tls internal class SelfHosting : Validation<TlsAlpn01ChallengeValidationDetails> { internal const int DefaultValidationPort = 443; - private TcpListener _listener; - private X509Certificate2 _certificate; + private TcpListener? _listener; + private X509Certificate2? _certificate; private readonly string _identifier; private readonly SelfHostingOptions _options; private readonly ILogService _log; diff --git a/src/main.lib/Plugins/ValidationPlugins/Tls/SelfHosting/SelfHostingOptionsFactory.cs b/src/main.lib/Plugins/ValidationPlugins/Tls/SelfHosting/SelfHostingOptionsFactory.cs index 1d6d962..f2a7e49 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Tls/SelfHosting/SelfHostingOptionsFactory.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Tls/SelfHosting/SelfHostingOptionsFactory.cs @@ -20,15 +20,15 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Tls public override bool Disabled => SelfHosting.IsDisabled(_userRoleService); - public override Task<SelfHostingOptions> Aquire(Target target, IInputService inputService, RunLevel runLevel) => Default(target); + public override Task<SelfHostingOptions?> Aquire(Target target, IInputService inputService, RunLevel runLevel) => Default(target); - public override Task<SelfHostingOptions> Default(Target target) + public override async Task<SelfHostingOptions?> Default(Target target) { var args = _arguments.GetArguments<SelfHostingArguments>(); - return Task.FromResult(new SelfHostingOptions() + return new SelfHostingOptions() { Port = args.ValidationPort - }); + }; } } }
\ No newline at end of file diff --git a/src/main.lib/Plugins/ValidationPlugins/Validation.cs b/src/main.lib/Plugins/ValidationPlugins/Validation.cs index a5fd057..0743469 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Validation.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Validation.cs @@ -8,9 +8,9 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins /// <summary> /// Base implementation for all validation plugins /// </summary> - public abstract class Validation<TChallenge> : IValidationPlugin where TChallenge : IChallengeValidationDetails + public abstract class Validation<TChallenge> : IValidationPlugin where TChallenge : class, IChallengeValidationDetails { - protected TChallenge _challenge; + protected TChallenge? _challenge; /// <summary> /// Handle the challenge |