Implements group fetching from Wallix.

This commit is contained in:
2025-11-04 14:12:00 +01:00
parent 90e7c81594
commit a39dad49e9
4 changed files with 61 additions and 14 deletions

View File

@@ -43,5 +43,12 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.0</version> <!-- Use the latest stable version -->
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -20,12 +20,12 @@ import org.apache.guacamole.environment.LocalEnvironment;
public class Wallix { 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 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 url;
private String user; private String user;
@@ -110,4 +110,12 @@ public class Wallix {
} }
} }
public final class API {
public static final String ATTRIBUTE_GROUP_NAME = "group_name";
public static final String ATTRIBUTE_GROUP_USERS = "users";
}
} }

View File

@@ -1,11 +1,17 @@
package cm.soungui.guacamole.ext.wallix.sync; package cm.soungui.guacamole.ext.wallix.sync;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.environment.LocalEnvironment; 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.DB;
import cm.soungui.guacamole.ext.wallix.sync.db.User;
import cm.soungui.guacamole.ext.wallix.sync.db.UserGroup; import cm.soungui.guacamole.ext.wallix.sync.db.UserGroup;
public class WallixConfigSynchronizer implements Runnable { public class WallixConfigSynchronizer implements Runnable {
@@ -36,11 +42,13 @@ public class WallixConfigSynchronizer implements Runnable {
System.out.println("Synchronizing groups"); System.out.println("Synchronizing groups");
System.out.println("Getting Wallix groups"); System.out.println("Getting Wallix groups");
printWallixVersion(); printWallixVersion();
getWallixGroups(); List<UserGroup> wallixGroups = getWallixGroups();
System.out.println("Wallix Groups");
wallixGroups.forEach(group -> System.out.println(group.getName()));
DB db = DB.getInstance(); DB db = DB.getInstance();
List<UserGroup> groups = db.getUserGroups(); List<UserGroup> dbGroups = db.getUserGroups();
for (UserGroup group : groups) { for (UserGroup group : dbGroups) {
System.out.println("ID : " + group.getId() + " - Name : " + group.getName()); System.out.println("ID : " + group.getId() + " - Name : " + group.getName());
} }
} }
@@ -51,10 +59,30 @@ public class WallixConfigSynchronizer implements Runnable {
System.out.println(output); System.out.println(output);
} }
private void getWallixGroups() throws Exception { private List<UserGroup> getWallixGroups() throws Exception {
Wallix wallix = Wallix.getInstance(); Wallix wallix = Wallix.getInstance();
String output = wallix.get("/usergroups"); String output = wallix.get("/usergroups");
System.out.println(output);
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(output);
List<UserGroup> 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;
} }
} }

View File

@@ -1,19 +1,23 @@
package cm.soungui.guacamole.ext.wallix.sync.db; package cm.soungui.guacamole.ext.wallix.sync.db;
import java.util.ArrayList; import java.util.HashSet;
import java.util.List; import java.util.Set;
public class UserGroup extends Entity { public class UserGroup extends Entity {
private int groupId; private int groupId;
private List<Entity> members = new ArrayList<>(); private Set<Entity> members = new HashSet<>();
@Override @Override
public EntityType getType() { public EntityType getType() {
return EntityType.GROUP; return EntityType.GROUP;
} }
@Override
public void setType(EntityType type) {
}
public int getGroupId() { public int getGroupId() {
return groupId; return groupId;
} }
@@ -22,7 +26,7 @@ public class UserGroup extends Entity {
this.groupId = groupId; this.groupId = groupId;
} }
public List<Entity> getMembers() { public Set<Entity> getMembers() {
return members; return members;
} }