From 5f08d02d85d5f983888047a465e6394f951affdb Mon Sep 17 00:00:00 2001 From: KoalaBear Date: Sat, 30 Oct 2021 23:59:48 +0200 Subject: [PATCH] - Use username/password from Url --- src/OpenDirectoryDownloader/Library.cs | 17 +++++++++++++++++ src/OpenDirectoryDownloader/Program.cs | 10 ++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/OpenDirectoryDownloader/Library.cs b/src/OpenDirectoryDownloader/Library.cs index 9aee404f..a1c7138e 100644 --- a/src/OpenDirectoryDownloader/Library.cs +++ b/src/OpenDirectoryDownloader/Library.cs @@ -341,5 +341,22 @@ public static Stream GetEmbeddedResourceStream(Assembly assembly, string resourc return null; } + + public static bool GetUriCredentials(Uri uri, out string username, out string password) + { + username = null; + password = null; + + if (uri.UserInfo?.Contains(':') == true) + { + string[] splitted = uri.UserInfo.Split(':'); + + username = WebUtility.UrlDecode(splitted.First()); + password = WebUtility.UrlDecode(splitted.Last()); + return true; + } + + return false; + } } } diff --git a/src/OpenDirectoryDownloader/Program.cs b/src/OpenDirectoryDownloader/Program.cs index e9b0644b..2bd6ecfb 100644 --- a/src/OpenDirectoryDownloader/Program.cs +++ b/src/OpenDirectoryDownloader/Program.cs @@ -118,6 +118,16 @@ static async Task Main(string[] args) openDirectoryIndexerSettings.Username = openDirectoryIndexerSettings.CommandLineOptions.Username; openDirectoryIndexerSettings.Password = openDirectoryIndexerSettings.CommandLineOptions.Password; + if (string.IsNullOrEmpty(openDirectoryIndexerSettings.Username) && string.IsNullOrEmpty(openDirectoryIndexerSettings.Password)) + { + if (Library.GetUriCredentials(new Uri(url), out string username, out string password)) + { + Console.WriteLine($"Using username '{username}' and password '{password}'"); + openDirectoryIndexerSettings.Username = username; + openDirectoryIndexerSettings.Password = password; + } + } + // FTP if (openDirectoryIndexerSettings.Url?.StartsWith(Constants.UriScheme.Ftp) == true || openDirectoryIndexerSettings.Url?.StartsWith(Constants.UriScheme.Ftps) == true) {