@Override public void init(Config.Scope config) { String[] excludes = config.getArray("excludes"); if (excludes != null) { for (String e : excludes) { excludedEvents.add(EventType.valueOf(e)); } } }
@Override public EventQuery type(EventType... types) { List<String> eventStrings = new LinkedList<String>(); for (EventType e : types) { eventStrings.add(e.toString()); } predicates.add(root.get("type").in(eventStrings)); return this; }
private String toCamelCase(EventType event){ StringBuilder sb = new StringBuilder("event"); for(String s : event.name().toString().toLowerCase().split("_")){ sb.append(ObjectUtil.capitalize(s)); } return sb.toString(); }
private void send() { event.setTime(Time.toMillis(Time.currentTime())); if (store != null) { if (realm.getEnabledEventTypes() != null && !realm.getEnabledEventTypes().isEmpty() ? realm.getEnabledEventTypes().contains(event.getType().name()) : event.getType().isSaveByDefault()) { try { store.onEvent(event); } catch (Throwable t) { log.error("Failed to save event", t); } } } if (listeners != null) { for (EventListenerProvider l : listeners) { try { l.onEvent(event); } catch (Throwable t) { log.error("Failed to send type to " + l, t); } } } }
static void spoolAuditMsg(Event event, AuditLogger log, KeycloakSession keycloakSession) { String dataDir = System.getProperty(JBOSS_SERVER_DATA_DIR); Path dir = Paths.get(dataDir, "audit-auth-spool", log.getCommonName().replaceAll(" ", "_")); try { if (!Files.exists(dir)) Files.createDirectories(dir); if (isLogout(event) && Files.exists(dir.resolve(event.getSessionId()))) { sendAuditMessage(dir.resolve(event.getSessionId()), event, log, keycloakSession); return; } spoolAndAudit(dir, log, event, keycloakSession); } catch (Exception e) { LOG.warn("Failed to spool and audit user auth event {}: {}", event.getType().name(), e); } }
@Override public void init(Config.Scope config) { String[] include = config.getArray("include-events"); if (include != null) { for (String i : include) { includedEvents.add(EventType.valueOf(i.toUpperCase())); } } else { includedEvents.addAll(SUPPORTED_EVENTS); } String[] exclude = config.getArray("exclude-events"); if (exclude != null) { for (String e : exclude) { includedEvents.remove(EventType.valueOf(e.toUpperCase())); } } }
@Override public EventQuery type(EventType... types) { List<String> eventStrings = new LinkedList<String>(); for (EventType e : types) { eventStrings.add(e.toString()); } predicates.add(root.get("type").in(eventStrings)); return this; }
static void spoolAuditMsg(Event event, AuditLogger log, KeycloakSession keycloakSession) { String dataDir = System.getProperty(JBOSS_SERVER_DATA_DIR); Path dir = Paths.get(dataDir, "audit-auth-spool", log.getCommonName().replaceAll(" ", "_")); try { if (!Files.exists(dir)) Files.createDirectories(dir); if (isLogout(event) && Files.exists(dir.resolve(event.getSessionId()))) { sendAuditMessage(dir.resolve(event.getSessionId()), event, log, keycloakSession); return; } spoolAndAudit(dir, log, event, keycloakSession); } catch (Exception e) { LOG.warn("Failed to spool and audit user auth event {}: {}", event.getType().name(), e); } }
@Override public void init(Config.Scope scope) { addJBossDirURLSystemProperties(); String[] includes = scope.getArray("include-events"); if (includes != null) { for (String e : includes) { includedEvents.add(EventType.valueOf(e)); } } }
@Override public EventQuery type(EventType... types) { List<String> eventStrings = new LinkedList<String>(); for (EventType e : types) { eventStrings.add(e.toString()); } query.put("type", new BasicDBObject("$in", eventStrings)); return this; }
public void publishToHawkular(Event event) throws Exception { if (event.getUserId() == null) { return; } String eventId = UUID.randomUUID().toString(); String userId = event.getUserId(); String action = event.getType().name(); try { TopicConnection connection = connectionFactory.createTopicConnection(); Session session = connection.createTopicSession(true, Session.AUTO_ACKNOWLEDGE); MessageProducer messageProducer = session.createProducer(topic); Message message = session.createMessage(); message.setStringProperty("action", action); message.setStringProperty("userId", userId); message.setStringProperty("eventId", eventId); messageProducer.send(message); messageProducer.close(); session.close(); connection.close(); } catch (Exception e) { String message = "WARNING: Couldn't publish event to Hawkular. Event: " + event.toString(); message += ". Cause: " + e.getMessage(); // yes, System.out.println :-) This gets logged back via jboss-logging into the main server log, // and as this is deployed as a module, we don't get in trouble with classpath/module dependencies. System.out.println(message); } }
@Override public void init(Config.Scope scope) { addJBossDirURLSystemProperties(); String[] includes = scope.getArray("include-events"); if (includes != null) { for (String e : includes) { includedEvents.add(EventType.valueOf(e)); } } }
public String getEvent() { return event.getType().toString().toLowerCase().replace("_", " "); }
EventType[] t = new EventType[types.size()]; for (int i = 0; i < t.length; i++) { t[i] = EventType.valueOf(types.get(i));
public String getEvent() { return event.getType().toString().toLowerCase().replace("_", " "); }
static Event convertEvent(EventEntity eventEntity) { Event event = new Event(); event.setTime(eventEntity.getTime()); event.setType(EventType.valueOf(eventEntity.getType())); event.setRealmId(eventEntity.getRealmId()); event.setClientId(eventEntity.getClientId()); event.setUserId(eventEntity.getUserId()); event.setSessionId(eventEntity.getSessionId()); event.setIpAddress(eventEntity.getIpAddress()); event.setError(eventEntity.getError()); try { Map<String, String> details = mapper.readValue(eventEntity.getDetailsJson(), mapType); event.setDetails(details); } catch (IOException ex) { logger.error("Failed to read log details", ex); } return event; }
private String generateMetricName(Event event) { StringBuilder sb = new StringBuilder(); sb.append("keycloak_events_total"); sb.append(DELIMITER); sb.append(generateLabel(REALM, event.getRealmId())); sb.append(DELIMITER); sb.append(generateLabel(TYPE, event.getType().toString())); return sb.toString(); }
static Event convertEvent(EventEntity eventEntity) { Event event = new Event(); event.setTime(eventEntity.getTime()); event.setType(EventType.valueOf(eventEntity.getType())); event.setRealmId(eventEntity.getRealmId()); event.setClientId(eventEntity.getClientId()); event.setUserId(eventEntity.getUserId()); event.setSessionId(eventEntity.getSessionId()); event.setIpAddress(eventEntity.getIpAddress()); event.setError(eventEntity.getError()); try { Map<String, String> details = mapper.readValue(eventEntity.getDetailsJson(), mapType); event.setDetails(details); } catch (IOException ex) { logger.error("Failed to read log details", ex); } return event; }