Skip to content

Commit fdeb079

Browse files
authored
Merge pull request #89 from Keyfactor/ab#75723
Ab#75723
2 parents df0170a + d463a68 commit fdeb079

32 files changed

+261
-119
lines changed

.github/workflows/keyfactor-merge-store-types.yml

Lines changed: 0 additions & 27 deletions
This file was deleted.

.github/workflows/keyfactor-starter-workflow.yml

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,17 @@ on:
1111

1212
jobs:
1313
call-starter-workflow:
14-
uses: keyfactor/actions/.github/workflows/[email protected]
14+
uses: keyfactor/actions/.github/workflows/starter.yml@v4
15+
with:
16+
command_token_url: ${{ vars.COMMAND_TOKEN_URL }} # Only required for doctool generated screenshots
17+
command_hostname: ${{ vars.COMMAND_HOSTNAME }} # Only required for doctool generated screenshots
18+
command_base_api_path: ${{ vars.COMMAND_API_PATH }} # Only required for doctool generated screenshots
1519
secrets:
16-
token: ${{ secrets.V2BUILDTOKEN}}
17-
APPROVE_README_PUSH: ${{ secrets.APPROVE_README_PUSH}}
18-
gpg_key: ${{ secrets.KF_GPG_PRIVATE_KEY }}
19-
gpg_pass: ${{ secrets.KF_GPG_PASSPHRASE }}
20-
scan_token: ${{ secrets.SAST_TOKEN }}
20+
token: ${{ secrets.V2BUILDTOKEN}} # REQUIRED
21+
gpg_key: ${{ secrets.KF_GPG_PRIVATE_KEY }} # Only required for golang builds
22+
gpg_pass: ${{ secrets.KF_GPG_PASSPHRASE }} # Only required for golang builds
23+
scan_token: ${{ secrets.SAST_TOKEN }} # REQUIRED
24+
entra_username: ${{ secrets.DOCTOOL_ENTRA_USERNAME }} # Only required for doctool generated screenshots
25+
entra_password: ${{ secrets.DOCTOOL_ENTRA_PASSWD }} # Only required for doctool generated screenshots
26+
command_client_id: ${{ secrets.COMMAND_CLIENT_ID }} # Only required for doctool generated screenshots
27+
command_client_secret: ${{ secrets.COMMAND_CLIENT_SECRET }} # Only required for doctool generated screenshots

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
v2.12.0
2+
- Added config.json setting and its override store level custom field - AllowShellCommands. If "N" (default "Y"), SFTP will be used to create stores and move files on Linux-based certificate store servers. No Linux shell commands will be used in the integration.
3+
4+
v2.11.5
5+
- Bug Fix: Rare race condition loading config settings when multiple RemoteFile jobs are running simultaneously on the same orchestrator
6+
- Documentation update to better list out what Linux commands get executed under what situations in Requirements & Prerequisites section
7+
18
v2.11.4
29
- Bug Fix: Handle condition where a certificate store definition that contains an invalid value for `FileTransferProtocol`
310
would return empty inventory. If no value is set or an invalid value is set, the default value of `Both` will be used

README.md

Lines changed: 70 additions & 19 deletions
Large diffs are not rendered by default.

RemoteFile.UnitTests/ApplicationSettingsTests.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,12 @@ public class ApplicationSettingsTests
88
[Fact]
99
public void FileTransferProtocol_WhenPopulatedWithValidValue_ReturnsValue()
1010
{
11-
var path = Path.Combine(Directory.GetCurrentDirectory(), "fixtures", "config", "valid", "config.json");
12-
ApplicationSettings.Initialize(path);
1311
Assert.Equal(ApplicationSettings.FileTransferProtocolEnum.SCP, ApplicationSettings.FileTransferProtocol);
1412
}
1513

1614
[Fact]
1715
public void FileTransferProtocol_WhenAllThreePopulated_DefaultsToBoth()
1816
{
19-
var path = Path.Combine(Directory.GetCurrentDirectory(), "fixtures", "config", "file_transfer_protocol_all_three", "config.json");
20-
ApplicationSettings.Initialize(path);
2117
Assert.Equal(ApplicationSettings.FileTransferProtocolEnum.Both, ApplicationSettings.FileTransferProtocol);
2218
}
2319
}

RemoteFile/ApplicationSettings.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Newtonsoft.Json;
1313
using Microsoft.Extensions.Logging;
1414
using Keyfactor.Logging;
15+
using System.Reflection;
1516

1617

1718
namespace Keyfactor.Extensions.Orchestrator.RemoteFile
@@ -41,6 +42,7 @@ public enum FileTransferProtocolEnum
4142
public static string DefaultSudoImpersonatedUser { get { return configuration.ContainsKey("DefaultSudoImpersonatedUser") ? configuration["DefaultSudoImpersonatedUser"] : DEFAULT_SUDO_IMPERSONATION_SETTING; } }
4243
public static bool CreateCSROnDevice { get { return configuration.ContainsKey("CreateCSROnDevice") ? configuration["CreateCSROnDevice"]?.ToUpper() == "Y" : false; } }
4344
public static string TempFilePathForODKG { get { return configuration.ContainsKey("TempFilePathForODKG") ? configuration["TempFilePathForODKG"] : string.Empty; } }
45+
public static bool UseShellCommands { get { return configuration.ContainsKey("UseShellCommands") ? configuration["UseShellCommands"]?.ToUpper() == "Y" : true; } }
4446
public static int SSHPort
4547
{
4648
get
@@ -88,13 +90,13 @@ public static FileTransferProtocolEnum FileTransferProtocol
8890
}
8991
}
9092

91-
public static void Initialize(string configLocation)
93+
static ApplicationSettings()
9294
{
9395
ILogger logger = LogHandler.GetClassLogger<ApplicationSettings>();
9496
logger.MethodEntry(LogLevel.Debug);
9597

9698
configuration = new Dictionary<string, string>();
97-
configLocation = $"{Path.GetDirectoryName(configLocation)}{Path.DirectorySeparatorChar}config.json";
99+
string configLocation = $"{Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)}{Path.DirectorySeparatorChar}config.json";
98100
string configContents = string.Empty;
99101

100102
if (!File.Exists(configLocation))

RemoteFile/Discovery.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,8 @@ public JobResult ProcessJob(DiscoveryJobConfiguration config, SubmitDiscoveryUpd
5656
string userName = PAMUtilities.ResolvePAMField(_resolver, logger, "Server User Name", config.ServerUsername);
5757
string userPassword = PAMUtilities.ResolvePAMField(_resolver, logger, "Server Password", config.ServerPassword);
5858

59-
ApplicationSettings.Initialize(this.GetType().Assembly.Location);
60-
6159
certificateStore = new RemoteCertificateStore(config.ClientMachine, userName, userPassword, directoriesToSearch[0].Substring(0, 1) == "/" ? RemoteCertificateStore.ServerTypeEnum.Linux : RemoteCertificateStore.ServerTypeEnum.Windows, ApplicationSettings.SSHPort);
62-
certificateStore.Initialize(ApplicationSettings.DefaultSudoImpersonatedUser);
60+
certificateStore.Initialize(ApplicationSettings.DefaultSudoImpersonatedUser, true);
6361

6462
if (directoriesToSearch.Length == 0)
6563
throw new RemoteFileException("Blank or missing search directories for Discovery.");

RemoteFile/InventoryBase.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,10 @@ public JobResult ProcessJob(InventoryJobConfiguration config, SubmitInventoryUpd
3535

3636
try
3737
{
38-
ApplicationSettings.Initialize(this.GetType().Assembly.Location);
39-
4038
SetJobProperties(config, config.CertificateStoreDetails, logger);
4139

4240
certificateStore = new RemoteCertificateStore(config.CertificateStoreDetails.ClientMachine, UserName, UserPassword, config.CertificateStoreDetails.StorePath, StorePassword, FileTransferProtocol, SSHPort, IncludePortInSPN);
43-
certificateStore.Initialize(SudoImpersonatedUser);
41+
certificateStore.Initialize(SudoImpersonatedUser, UseShellCommands);
4442
certificateStore.LoadCertificateStore(certificateStoreSerializer, true);
4543

4644
List<X509Certificate2Collection> collections = certificateStore.GetCertificateChains();

RemoteFile/ManagementBase.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,10 @@ public JobResult ProcessJob(ManagementJobConfiguration config)
3333

3434
try
3535
{
36-
ApplicationSettings.Initialize(this.GetType().Assembly.Location);
37-
3836
SetJobProperties(config, config.CertificateStoreDetails, logger);
3937

4038
certificateStore = new RemoteCertificateStore(config.CertificateStoreDetails.ClientMachine, UserName, UserPassword, config.CertificateStoreDetails.StorePath, StorePassword, FileTransferProtocol, SSHPort, IncludePortInSPN);
41-
certificateStore.Initialize(SudoImpersonatedUser);
39+
certificateStore.Initialize(SudoImpersonatedUser, UseShellCommands);
4240

4341
PathFile storePathFile = RemoteCertificateStore.SplitStorePathFile(config.CertificateStoreDetails.StorePath);
4442

RemoteFile/ReenrollmentBase.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ public JobResult ProcessJobToDo(ReenrollmentJobConfiguration config, SubmitReenr
5050

5151
try
5252
{
53-
ApplicationSettings.Initialize(this.GetType().Assembly.Location);
54-
5553
SetJobProperties(config, config.CertificateStoreDetails, logger);
5654

5755
string alias = "abcd";
@@ -68,7 +66,7 @@ public JobResult ProcessJobToDo(ReenrollmentJobConfiguration config, SubmitReenr
6866
ApplicationSettings.FileTransferProtocolEnum fileTransferProtocol = ApplicationSettings.FileTransferProtocol;
6967

7068
certificateStore = new RemoteCertificateStore(config.CertificateStoreDetails.ClientMachine, UserName, UserPassword, config.CertificateStoreDetails.StorePath, StorePassword, fileTransferProtocol, SSHPort, IncludePortInSPN);
71-
certificateStore.Initialize(SudoImpersonatedUser);
69+
certificateStore.Initialize(SudoImpersonatedUser, UseShellCommands);
7270

7371
PathFile storePathFile = RemoteCertificateStore.SplitStorePathFile(config.CertificateStoreDetails.StorePath);
7472

0 commit comments

Comments
 (0)