From a39dad49e9b0debea4b53acc44a770fee1a94f7c Mon Sep 17 00:00:00 2001 From: Abba Soungui YOUNOUSS Date: Tue, 4 Nov 2025 14:12:00 +0100 Subject: [PATCH] Implements group fetching from Wallix. --- pom.xml | 7 ++++ .../guacamole/ext/wallix/sync/Wallix.java | 18 ++++++--- .../wallix/sync/WallixConfigSynchronizer.java | 38 ++++++++++++++++--- .../ext/wallix/sync/db/UserGroup.java | 12 ++++-- 4 files changed, 61 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index 93b1af6..e12bd39 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,13 @@ 1.7.7 provided + + + com.fasterxml.jackson.core + jackson-databind + 2.17.0 + provided + diff --git a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/Wallix.java b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/Wallix.java index ac52b8c..5ffbfdf 100644 --- a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/Wallix.java +++ b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/Wallix.java @@ -19,13 +19,13 @@ import org.apache.guacamole.environment.Environment; import org.apache.guacamole.environment.LocalEnvironment; public class Wallix { - + + private final static String HEADER_AUTH_USER = "X-Auth-User"; + + private final static String HEADER_AUTH_KEY = "X-Auth-Key"; + private static Wallix INSTANCE; - private static String HEADER_AUTH_USER = "X-Auth-User"; - - private static String HEADER_AUTH_KEY = "X-Auth-Key"; - private String url; private String user; @@ -109,5 +109,13 @@ public class Wallix { throw e; } } + + public final class API { + + public static final String ATTRIBUTE_GROUP_NAME = "group_name"; + + public static final String ATTRIBUTE_GROUP_USERS = "users"; + + } } diff --git a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/WallixConfigSynchronizer.java b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/WallixConfigSynchronizer.java index 3d593e2..c40eed3 100644 --- a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/WallixConfigSynchronizer.java +++ b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/WallixConfigSynchronizer.java @@ -1,11 +1,17 @@ package cm.soungui.guacamole.ext.wallix.sync; +import java.util.ArrayList; import java.util.List; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.environment.LocalEnvironment; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; + import cm.soungui.guacamole.ext.wallix.sync.db.DB; +import cm.soungui.guacamole.ext.wallix.sync.db.User; import cm.soungui.guacamole.ext.wallix.sync.db.UserGroup; public class WallixConfigSynchronizer implements Runnable { @@ -36,11 +42,13 @@ public class WallixConfigSynchronizer implements Runnable { System.out.println("Synchronizing groups"); System.out.println("Getting Wallix groups"); printWallixVersion(); - getWallixGroups(); + List wallixGroups = getWallixGroups(); + System.out.println("Wallix Groups"); + wallixGroups.forEach(group -> System.out.println(group.getName())); DB db = DB.getInstance(); - List groups = db.getUserGroups(); - for (UserGroup group : groups) { + List dbGroups = db.getUserGroups(); + for (UserGroup group : dbGroups) { System.out.println("ID : " + group.getId() + " - Name : " + group.getName()); } } @@ -51,10 +59,30 @@ public class WallixConfigSynchronizer implements Runnable { System.out.println(output); } - private void getWallixGroups() throws Exception { + private List getWallixGroups() throws Exception { Wallix wallix = Wallix.getInstance(); String output = wallix.get("/usergroups"); - System.out.println(output); + + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode jsonNode = objectMapper.readTree(output); + List list = new ArrayList<>(); + + jsonNode.elements().forEachRemaining((e) -> { + ObjectNode node = (ObjectNode) e; + + UserGroup group = new UserGroup(); + group.setName(node.findValue(Wallix.API.ATTRIBUTE_GROUP_NAME).asText()); + + node.findValues(Wallix.API.ATTRIBUTE_GROUP_USERS).forEach(userNode -> { + User user = new User(); + user.setName(userNode.textValue()); + group.getMembers().add(user); + }); + + list.add(group); + }); + + return list; } } diff --git a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/UserGroup.java b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/UserGroup.java index f2ae275..b03c70a 100644 --- a/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/UserGroup.java +++ b/src/main/java/cm/soungui/guacamole/ext/wallix/sync/db/UserGroup.java @@ -1,18 +1,22 @@ package cm.soungui.guacamole.ext.wallix.sync.db; -import java.util.ArrayList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; public class UserGroup extends Entity { private int groupId; - private List members = new ArrayList<>(); + private Set members = new HashSet<>(); @Override public EntityType getType() { return EntityType.GROUP; } + + @Override + public void setType(EntityType type) { + } public int getGroupId() { return groupId; @@ -22,7 +26,7 @@ public class UserGroup extends Entity { this.groupId = groupId; } - public List getMembers() { + public Set getMembers() { return members; }