Created
April 16, 2024 22:48
-
-
Save sharpedavid/b6f1446ce7996d2765b14a562d659000 to your computer and use it in GitHub Desktop.
A script for generating Terraform config for Keycloak event configuration.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.awt.*; | |
import java.awt.datatransfer.Clipboard; | |
import java.awt.datatransfer.StringSelection; | |
import java.util.*; | |
import java.util.List; | |
import java.util.regex.Matcher; | |
import java.util.regex.Pattern; | |
class Scratch { | |
public static void main(String[] args) { | |
var jsonInput = "[{\"id\":\"IDIR_AAD\",\"realm\":\"idir_aad\",\"displayName\":\"Ministry of Health - IDIR Azure AD IDP Realm\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"bceid_basic\",\"realm\":\"bceid_basic\",\"displayName\":\"Ministry of Health - Basic BCeID IDP Realm\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"bceid_business\",\"realm\":\"bceid_business\",\"displayName\":\"Ministry of Health - Business BCeID IDP Realm\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"bcerd\",\"realm\":\"bcerd\",\"displayName\":\"BC E-substance Reporting (Flagging for possible deletion)\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"bcprovider_aad\",\"realm\":\"bcprovider_aad\",\"displayName\":\"Ministry of Health - BC Provider Azure AD IDP Realm\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"bcproviderlab_aad\",\"realm\":\"bcproviderlab_aad\",\"enabled\":false},{\"id\":\"bcsc\",\"realm\":\"bcsc\",\"displayName\":\"Ministry of Health - BC Services Card IDP Realm\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"davidscoolnewrealm\",\"realm\":\"moh_citizen\",\"displayName\":\"Ministry of Health - Citizen Realm\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"fnha_aad\",\"realm\":\"fnha_aad\",\"displayName\":\"Ministry of Health - First Nations Health Authority Azure AD IDP Realm\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"idir\",\"realm\":\"idir\",\"displayName\":\"Ministry of Health - IDIR IDP Realm\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"lra\",\"realm\":\"lra\",\"displayName\":\"Longitudinal Record Access\",\"displayNameHtml\":\"<b>Longitudinal Record Access</b>\",\"enabled\":true},{\"id\":\"master\",\"realm\":\"master\",\"displayName\":\"Keycloak\",\"displayNameHtml\":\"<div class=\\\"kc-logo-text\\\"><span>Keycloak</span></div>\",\"enabled\":true},{\"id\":\"mhsu_ehs\",\"realm\":\"mhsu_ehs\",\"displayName\":\"Mental Health and Substance Use - Emergency Health Services Realm\",\"enabled\":true},{\"id\":\"mhsu_foundry\",\"realm\":\"mhsu_foundry\",\"displayName\":\"Mental Health and Substance Use - Foundry Realm\",\"enabled\":true},{\"id\":\"moh_applications\",\"realm\":\"moh_applications\",\"displayName\":\"Ministry of Health - Applications Realm\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"moh_idp\",\"realm\":\"moh_idp\",\"displayName\":\"Ministry of Health - Keycloak IDP Realm\",\"displayNameHtml\":\"Ministry of Health\",\"enabled\":true},{\"id\":\"phsa\",\"realm\":\"phsa\",\"displayName\":\"Health Authority IDP Realm\",\"enabled\":true},{\"id\":\"phsa_aad\",\"realm\":\"phsa_aad\",\"enabled\":true},{\"id\":\"pidp_sandbox\",\"realm\":\"pidp_sandbox\",\"enabled\":true},{\"id\":\"v2_pos\",\"realm\":\"v2_pos\",\"enabled\":true}]"; | |
List<String> realms = new ArrayList<>(); | |
final Pattern pattern = Pattern.compile("\"realm\":\"([^\"]+)\""); | |
final Matcher matcher = pattern.matcher(jsonInput); | |
while (matcher.find()) { | |
realms.add(matcher.group(1)); | |
} | |
Collections.sort(realms); | |
System.out.println("Realms: " + realms); | |
var appRealm = """ | |
resource "keycloak_realm_events" "realm_events_%s" { | |
realm_id = "%s" | |
events_enabled = true | |
# There are 31,536,000 seconds in a year. | |
events_expiration = 31536000 | |
admin_events_enabled = true | |
admin_events_details_enabled = true | |
# When omitted or left empty, keycloak will enable all event types | |
enabled_event_types = [ | |
] | |
events_listeners = [ | |
"jboss-logging", # keycloak enables the 'jboss-logging' event listener by default. | |
] | |
} | |
"""; | |
var idpRealm = """ | |
resource "keycloak_realm_events" "realm_events_%s" { | |
realm_id = "%s" | |
events_enabled = false | |
# There are 31,536,000 seconds in a year. | |
events_expiration = 31536000 | |
admin_events_enabled = true | |
admin_events_details_enabled = true | |
# When omitted or left empty, keycloak will enable all event types | |
enabled_event_types = [ | |
] | |
events_listeners = [ | |
"jboss-logging", # keycloak enables the 'jboss-logging' event listener by default. | |
] | |
} | |
"""; | |
var appRealms = Set.of("bcerd", "moh_citizen", "moh_applications", "lra", "master", "mhsu_foundry", "pidp_sandbox", "v2_pos"); | |
var terraformResult = ""; | |
terraformResult += """ | |
###################### | |
# APPLICATION REALMS # | |
###################### | |
"""; | |
for (String realm : realms) { | |
String event = ""; | |
if (appRealms.contains(realm)) { | |
event = String.format(appRealm, realm, realm); | |
} | |
System.out.println(event); | |
terraformResult += event; | |
} | |
terraformResult += """ | |
############## | |
# IDP REALMS # | |
############## | |
"""; | |
for (String realm : realms) { | |
String event = ""; | |
if (!appRealms.contains(realm)) { | |
event = String.format(idpRealm, realm, realm); | |
} | |
System.out.println(event); | |
terraformResult += event; | |
} | |
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); | |
StringSelection stringSelection = new StringSelection(terraformResult); | |
clipboard.setContents(stringSelection, null); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment