diff --git a/.gitignore b/.gitignore index dba2b8c..f15010f 100644 --- a/.gitignore +++ b/.gitignore @@ -352,3 +352,5 @@ MigrationBackup/ CuipodExample/Properties/launchSettings.json .vscode/ +.hg/ +.hgignore diff --git a/Cuipod/App.cs b/Cuipod/App.cs index 17d57f2..edbb6c0 100644 --- a/Cuipod/App.cs +++ b/Cuipod/App.cs @@ -21,6 +21,7 @@ namespace Cuipod private RequestCallback _onBadRequestCallback; + //somewhat flaky implementation - probably deprecate it public App(string directoryToServe, string certificateFile, string privateRSAKeyFilePath) { _directoryToServe = directoryToServe; @@ -29,6 +30,15 @@ namespace Cuipod _serverCertificate = CertificateUtils.LoadCertificate(certificateFile, privateRSAKeyFilePath); } + public App(string directoryToServe, X509Certificate2 certificate) + { + + _directoryToServe = directoryToServe; + _listener = new TcpListener(IPAddress.Any, 1965); + _requestCallbacks = new Dictionary(); + _serverCertificate = certificate; + } + public void OnRequest(string route, RequestCallback callback) { _requestCallbacks.Add(route, callback); diff --git a/CuipodExample/Server.cs b/CuipodExample/Server.cs index 2b05256..c359fdb 100644 --- a/CuipodExample/Server.cs +++ b/CuipodExample/Server.cs @@ -1,6 +1,7 @@ using Cuipod; using Microsoft.Extensions.CommandLineUtils; using System; +using System.Security.Cryptography.X509Certificates; namespace CuipodExample { @@ -15,21 +16,25 @@ namespace CuipodExample "Directory to server (required)" ); CommandArgument certificateFile = commandLineApplication.Argument( - "certificate", + "pfx certificate file", "Path to certificate (required)" ); - CommandArgument privateRSAKeyFilePath = commandLineApplication.Argument( - "key", - "Path to private Pkcs8 RSA key (required)" + CommandArgument pfxPassword = commandLineApplication.Argument( + "pfx password", + "pfx password" ); commandLineApplication.OnExecute(() => { - if (directoryToServe.Value == null || certificateFile.Value == null || privateRSAKeyFilePath.Value == null) + if (directoryToServe.Value == null || certificateFile.Value == null ) { commandLineApplication.ShowHelp(); return 1; } - return AppMain(directoryToServe.Value, certificateFile.Value, privateRSAKeyFilePath.Value); + + var pass = (pfxPassword != null) ? pfxPassword.Value.ToString() : ""; + var cert = new X509Certificate2(certificateFile.Value.ToString(), pass); + + return AppMain(directoryToServe.Value, cert); }); try @@ -42,12 +47,11 @@ namespace CuipodExample } } - private static int AppMain(string directoryToServe, string certificateFile, string privateRSAKeyFilePath) + private static int AppMain(string directoryToServe, X509Certificate2 certificate) { App app = new App( directoryToServe, - certificateFile, - privateRSAKeyFilePath + certificate ); // Serve files