From ba62030c516353ab2b09878d19dd69cac679f734 Mon Sep 17 00:00:00 2001 From: Ivan Dimov <78815270+idimov-keeper@users.noreply.github.com> Date: Tue, 6 May 2025 18:58:34 -0500 Subject: [PATCH] Added ServiceNow Yokohama version to MID Server Releases --- .../workflows/publish.servicenow.plugin.yml | 1 + .../build.gradle.kts | 6 +++--- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../settings.gradle.kts | 2 +- .../com/snc/discovery/CredentialResolver.java | 20 +++++++++---------- 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.github/workflows/publish.servicenow.plugin.yml b/.github/workflows/publish.servicenow.plugin.yml index 41197239..41b782c6 100644 --- a/.github/workflows/publish.servicenow.plugin.yml +++ b/.github/workflows/publish.servicenow.plugin.yml @@ -56,6 +56,7 @@ jobs: cat <<'EOF' > build.sh #!/usr/bin/env bash MID_SERVER_URLS='' + MID_SERVER_URLS=${MID_SERVER_URLS},https://install.service-now.com/glide/distribution/builds/package/mid/2025/04/30/mid.yokohama-12-18-2024__patch3-04-17-2025_04-30-2025_1345.linux.x86-64.zip MID_SERVER_URLS=${MID_SERVER_URLS},https://install.service-now.com/glide/distribution/builds/package/mid/2024/09/01/mid.xanadu-07-02-2024__patch1-08-24-2024_09-01-2024_1853.linux.x86-64.zip MID_SERVER_URLS=${MID_SERVER_URLS},https://install.service-now.com/glide/distribution/builds/package/mid/2024/08/31/mid.washingtondc-12-20-2023__patch7-08-21-2024_08-31-2024_1809.linux.x86-64.zip MID_SERVER_URLS=${MID_SERVER_URLS},https://install.service-now.com/glide/distribution/builds/package/mid/2023/07/26/mid.vancouver-07-06-2023__patch0-07-18-2023_07-26-2023_1029.linux.x86-64.zip diff --git a/integration/servicenow-external-credential-resolver/build.gradle.kts b/integration/servicenow-external-credential-resolver/build.gradle.kts index e77de111..7a65cf89 100644 --- a/integration/servicenow-external-credential-resolver/build.gradle.kts +++ b/integration/servicenow-external-credential-resolver/build.gradle.kts @@ -13,7 +13,7 @@ base { java { toolchain { // Vancouver-- built with OpenJDK 11.x - languageVersion = JavaLanguageVersion.of(11) + //languageVersion = JavaLanguageVersion.of(11) // Washington DC: A ServiceNow build of OpenJDK 17.0.8.1 is Supported and Included (17.0.8.1-sncmid1) // Administrators will need to make sure any 3rd party JAR files for Credential resolvers, JDBC drivers, etc. @@ -21,7 +21,7 @@ java { // More information: KB1273036 MID Server - JRE 17 Upgrade // Washington DC, Xanadu++ built with OpenJDK 17.x - //languageVersion = JavaLanguageVersion.of(17) + languageVersion.set(JavaLanguageVersion.of(17)) } } @@ -36,7 +36,7 @@ repositories { } dependencies { - implementation ("com.keepersecurity.secrets-manager:core:16.6.4+") + implementation ("com.keepersecurity.secrets-manager:core:17.0.0+") // MID server dependencies, not required to be uploaded // MID jar dependency for config APIs diff --git a/integration/servicenow-external-credential-resolver/gradle/wrapper/gradle-wrapper.properties b/integration/servicenow-external-credential-resolver/gradle/wrapper/gradle-wrapper.properties index d642e7f8..5c82cb03 100644 --- a/integration/servicenow-external-credential-resolver/gradle/wrapper/gradle-wrapper.properties +++ b/integration/servicenow-external-credential-resolver/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/integration/servicenow-external-credential-resolver/settings.gradle.kts b/integration/servicenow-external-credential-resolver/settings.gradle.kts index c75f1d39..5605d654 100644 --- a/integration/servicenow-external-credential-resolver/settings.gradle.kts +++ b/integration/servicenow-external-credential-resolver/settings.gradle.kts @@ -1,7 +1,7 @@ rootProject.name = "keeper-external-credentials" plugins { - id("org.gradle.toolchains.foojay-resolver") version "0.8.0" + id("org.gradle.toolchains.foojay-resolver") version "0.10.0" } @Suppress("UnstableApiUsage") diff --git a/integration/servicenow-external-credential-resolver/src/main/java/com/snc/discovery/CredentialResolver.java b/integration/servicenow-external-credential-resolver/src/main/java/com/snc/discovery/CredentialResolver.java index ae08600d..6dfe02f0 100644 --- a/integration/servicenow-external-credential-resolver/src/main/java/com/snc/discovery/CredentialResolver.java +++ b/integration/servicenow-external-credential-resolver/src/main/java/com/snc/discovery/CredentialResolver.java @@ -114,9 +114,9 @@ public Map resolve(Map args) { Map result = new HashMap<>(); // input params - String credId = (String) args.get(ARG_ID); - String credType = (String) args.get(ARG_TYPE); - String midServer = (String) args.get(ARG_MID); + String credId = args.get(ARG_ID); + String credType = args.get(ARG_TYPE); + String midServer = args.get(ARG_MID); if(isNullOrEmpty(credId) || isNullOrEmpty(credType)) throw new RuntimeException("Empty credential Id or type found."); @@ -145,7 +145,7 @@ public Map resolve(Map args) { throw new RuntimeException( "Invalid Credential ID: Credential Id has split string more than twice"); } - List recordsFilter = Collections.emptyList(); + List recordsFilter = Collections.emptyList(); if(!isNullOrEmpty(recType) || !isNullOrEmpty(recTitle)) { fLogger.info(String.format("Record Type: '%s', Record Title: '%s'", recType, recTitle)); } else { @@ -154,7 +154,7 @@ public Map resolve(Map args) { } // Initialize storage - InMemoryStorage storage = null; + InMemoryStorage storage; try { storage = new InMemoryStorage(ksmConfig); } catch (Exception e) { @@ -165,7 +165,7 @@ public Map resolve(Map args) { try { // Connect to vault and retrieve credential - List records = Collections. emptyList(); + List records = Collections.emptyList(); KeeperSecrets secrets; if (ksmCache) secrets = getSecretsCached(storage, recordsFilter); @@ -187,7 +187,7 @@ public Map resolve(Map args) { KeeperRecord record = null; if (recordsFilter.isEmpty()) { // no filter - search by type:title - List found = new ArrayList(); + List found = new ArrayList<>(); for (KeeperRecord rec : records) { boolean matchesType = isNullOrEmpty(recType) || recType.equals(rec.getType()); boolean matchesTitle = recTitle.isEmpty() || recTitle.equals(rec.getTitle()); @@ -229,7 +229,7 @@ record = records.get(0); // find fields by label prefix List fields = record.getData().getCustom(); - fields = (fields != null ? fields : new ArrayList()); + fields = (fields != null ? fields : new ArrayList<>()); for (KeeperRecordField field : fields) { String label = field.getLabel(); if (!isNullOrEmpty(label) && label.startsWith(ksmLabelPrefix)){ @@ -239,7 +239,7 @@ record = records.get(0); } else if (result.containsKey(key)) { fLogger.warn("### Skipped duplicate entry for field: " + label); } else { - List values = Collections. emptyList(); + List values = Collections.emptyList(); if (field instanceof Text){ Text fld = (Text)field; values = fld.getValue(); @@ -444,7 +444,7 @@ private static void saveCachedValue(byte[] key, byte[] data) throws Exception { private static byte[] getCachedValue() throws Exception { try (InputStream ins = Files.newInputStream(Paths.get(getCacheFilename())); - DataInputStream dis = new DataInputStream(ins); + DataInputStream dis = new DataInputStream(ins) ) { //ins.reset(); byte[] bytes = new byte[ins.available()];