From 2eb364949c312a52d5c57085716b40bebdb57874 Mon Sep 17 00:00:00 2001 From: Prakalp Jain Date: Mon, 2 Dec 2024 13:12:04 +0530 Subject: [PATCH 1/2] SDK changes for GovCloud Integration --- .../com.logicmonitor.java-conventions.gradle | 2 +- .../logicmonitor/sdk/data/Configuration.java | 26 ++++++++++++++++--- .../sdk/data/TestConfiguration.java | 16 ++++++++---- 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/buildSrc/src/main/groovy/com.logicmonitor.java-conventions.gradle b/buildSrc/src/main/groovy/com.logicmonitor.java-conventions.gradle index aae379b..0f28d51 100644 --- a/buildSrc/src/main/groovy/com.logicmonitor.java-conventions.gradle +++ b/buildSrc/src/main/groovy/com.logicmonitor.java-conventions.gradle @@ -16,7 +16,7 @@ dependencies { } group = 'com.logicmonitor' -version = '0.0.4-alpha' +version = '0.0.4-alpha-govCloud' java.sourceCompatibility = JavaVersion.VERSION_1_8 diff --git a/data-sdk/src/main/java/com/logicmonitor/sdk/data/Configuration.java b/data-sdk/src/main/java/com/logicmonitor/sdk/data/Configuration.java index f83cbd6..b1ae212 100644 --- a/data-sdk/src/main/java/com/logicmonitor/sdk/data/Configuration.java +++ b/data-sdk/src/main/java/com/logicmonitor/sdk/data/Configuration.java @@ -28,6 +28,7 @@ public class Configuration { private final String REGEX_AUTH_ID = "^[a-zA-Z0-9]+$"; private final Pattern PatternAuthId = Pattern.compile(REGEX_AUTH_ID); private static String company; + private static String domainName; private static String host; private int connectionPoolMaxsize; @@ -50,6 +51,7 @@ public Configuration() { accessId = System.getenv("LM_ACCESS_ID"); accessKey = System.getenv("LM_ACCESS_KEY"); bearerToken = System.getenv("LM_BEARER_TOKEN"); + domainName = System.getenv("LM_DOMAIN_NAME"); checkAuthentication(); } @@ -59,12 +61,15 @@ public Configuration() { * @param accessId * @param accessKey * @param bearerToken + * @param domainName */ - public Configuration(String company, String accessId, String accessKey, String bearerToken) { + public Configuration( + String company, String accessId, String accessKey, String bearerToken, String domainName) { this.company = (company != null) ? company : System.getenv("LM_COMPANY"); this.accessId = (accessId != null) ? accessId : System.getenv("LM_ACCESS_ID"); this.accessKey = (accessKey != null) ? accessKey : System.getenv("LM_ACCESS_KEY"); this.bearerToken = (bearerToken != null) ? bearerToken : System.getenv("LM_BEARER_TOKEN"); + this.domainName = (domainName != null) ? domainName : System.getenv("LM_DOMAIN_NAME"); checkAuthentication(); } @@ -109,7 +114,13 @@ public static String encodeSHA256(String key, String text) throws Exception { public static String setCompany() { company = getCompany(); - host = "https://" + company + ".logicmonitor.com/rest"; + domainName = getDomainName(); + + // host = "https://" + company + ".logicmonitor.com/rest"; + if (domainName == null || domainName.length() <= 0 || domainName.equals(" ")) { + domainName = "logicmonitor.com"; + } + host = "https://" + company + "." + domainName + "/rest"; return host; } @@ -121,6 +132,7 @@ public boolean checkAuthentication() { if (company == null || company.length() <= 0 || company.equals(" ")) { throw new IllegalArgumentException("Company must have your account name"); } + if (!isValidCompanyName(company)) { throw new IllegalArgumentException("Invalid Company Name"); } @@ -150,7 +162,11 @@ public boolean checkAuthentication() { } } - this.host = "https://" + this.company + ".logicmonitor.com/rest"; + // this.host = "https://" + this.company + ".logicmonitor.com/rest"; + if (domainName == null || domainName.length() <= 0 || domainName.equals(" ")) { + domainName = "logicmonitor.com"; + } + this.host = "https://" + company + "." + domainName + "/rest"; this.connectionPoolMaxsize = Runtime.getRuntime().availableProcessors() * 5; return true; } @@ -217,6 +233,10 @@ public static String getCompany() { return company; } + public static String getDomainName() { + return domainName; + } + /** @return gZip */ public static boolean getgZip() { return gZip; diff --git a/data-sdk/src/test/java/com/logicmonitor/sdk/data/TestConfiguration.java b/data-sdk/src/test/java/com/logicmonitor/sdk/data/TestConfiguration.java index bd20601..e6a06df 100644 --- a/data-sdk/src/test/java/com/logicmonitor/sdk/data/TestConfiguration.java +++ b/data-sdk/src/test/java/com/logicmonitor/sdk/data/TestConfiguration.java @@ -34,21 +34,22 @@ public void testIsValidAuthId() { @Test public void testConfiguration() { - Configuration conf = new Configuration("company01", null, null, "bhasgsyhsjjdbfbhcgyi@1"); + Configuration conf = + new Configuration("company01", null, null, "bhasgsyhsjjdbfbhcgyi@1", "logicmonitor.com"); String actualToken = conf.getAuthToken("POST", "POST", "/v2/metric/ingest"); Assertions.assertTrue(true, actualToken); } @Test(expected = IllegalArgumentException.class) public void testInvalidBearerAuth() { - Configuration conf = new Configuration("company01", null, null, " "); + Configuration conf = new Configuration("company01", null, null, " ", "logicmonitor.com"); boolean authentication = conf.checkAuthentication(); Assertions.assertEquals(IllegalArgumentException.class, authentication); } @Test(expected = IllegalArgumentException.class) public void testInvalidLMv1Auth() { - Configuration conf = new Configuration("company01", " ", " ", null); + Configuration conf = new Configuration("company01", " ", " ", null, "logicmonitor.com"); boolean authentication = conf.checkAuthentication(); Assertions.assertEquals(IllegalArgumentException.class, authentication); } @@ -64,14 +65,19 @@ public void testInvalidCompanyName() { public void testLMv1Auth() { Configuration conf = new Configuration( - "company01", "5t5U5jH6Q92P2n8x8tg5", "[KC5sdqL-vX25-35pP2gmPw(f_15W(]LLg(B4Kc8", null); + "company01", + "5t5U5jH6Q92P2n8x8tg5", + "[KC5sdqL-vX25-35pP2gmPw(f_15W(]LLg(B4Kc8", + null, + "logicmonitor.com"); conf.getAuthToken(body, "POST", "/v2/metric/ingest"); Assert.assertTrue("This will succeed.", true); } @Test public void testBearerAuth() { - Configuration conf = new Configuration("company01", null, null, "bhasgsyhsjjdbfbhcgyi@1"); + Configuration conf = + new Configuration("company01", null, null, "bhasgsyhsjjdbfbhcgyi@1", "logicmonitor.com"); String expectedToken = "Bearer bhasgsyhsjjdbfbhcgyi@1"; String actualToken = conf.getAuthToken("POST", "POST", "/v2/metric/ingest"); Assertions.assertEquals(expectedToken, actualToken); From 88ddaa9ee0d2775626ce62e44d21528c1a7a8138 Mon Sep 17 00:00:00 2001 From: Prakalp Jain Date: Mon, 2 Dec 2024 16:15:44 +0530 Subject: [PATCH 2/2] resolved PR comments --- .../src/main/groovy/com.logicmonitor.java-conventions.gradle | 2 +- data-sdk/build.gradle | 1 + .../main/java/com/logicmonitor/sdk/data/Configuration.java | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/groovy/com.logicmonitor.java-conventions.gradle b/buildSrc/src/main/groovy/com.logicmonitor.java-conventions.gradle index 0f28d51..17cb1e6 100644 --- a/buildSrc/src/main/groovy/com.logicmonitor.java-conventions.gradle +++ b/buildSrc/src/main/groovy/com.logicmonitor.java-conventions.gradle @@ -16,7 +16,7 @@ dependencies { } group = 'com.logicmonitor' -version = '0.0.4-alpha-govCloud' +version = '0.0.5-alpha' java.sourceCompatibility = JavaVersion.VERSION_1_8 diff --git a/data-sdk/build.gradle b/data-sdk/build.gradle index d01201c..e2b6bd4 100644 --- a/data-sdk/build.gradle +++ b/data-sdk/build.gradle @@ -74,6 +74,7 @@ dependencies { implementation 'javax.annotation:javax.annotation-api:1.3.2' implementation 'javax.validation:validation-api:2.0.1.Final' implementation 'com.google.code.findbugs:jsr305:3.0.2' + implementation 'org.apache.commons:commons-lang3:3.12.0' compileOnly 'org.projectlombok:lombok:1.18.26' annotationProcessor 'org.projectlombok:lombok:1.18.26' implementation 'org.slf4j:slf4j-api:2.0.7' diff --git a/data-sdk/src/main/java/com/logicmonitor/sdk/data/Configuration.java b/data-sdk/src/main/java/com/logicmonitor/sdk/data/Configuration.java index b1ae212..fcf9679 100644 --- a/data-sdk/src/main/java/com/logicmonitor/sdk/data/Configuration.java +++ b/data-sdk/src/main/java/com/logicmonitor/sdk/data/Configuration.java @@ -15,6 +15,7 @@ import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import lombok.Setter; +import org.apache.commons.lang3.StringUtils; /** * This Class is used to configure the device with account name and Lm access credinatial(by using @@ -117,7 +118,7 @@ public static String setCompany() { domainName = getDomainName(); // host = "https://" + company + ".logicmonitor.com/rest"; - if (domainName == null || domainName.length() <= 0 || domainName.equals(" ")) { + if (StringUtils.isBlank(domainName)) { domainName = "logicmonitor.com"; } host = "https://" + company + "." + domainName + "/rest"; @@ -163,7 +164,7 @@ public boolean checkAuthentication() { } // this.host = "https://" + this.company + ".logicmonitor.com/rest"; - if (domainName == null || domainName.length() <= 0 || domainName.equals(" ")) { + if (StringUtils.isBlank(domainName)) { domainName = "logicmonitor.com"; } this.host = "https://" + company + "." + domainName + "/rest";