@Override public void onEvent(Event event) { if (excludedEvents != null && excludedEvents.contains(event.getType())) { return; } try { publishToHawkular(event); } 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); } }
public String getEvent() { return event.getType().toString().toLowerCase().replace("_", " "); }
public String getEvent() { return event.getType().toString().toLowerCase().replace("_", " "); }
@Override public void sendEvent(Event event) throws EmailException { Map<String, Object> attributes = new HashMap<String, Object>(); attributes.put("user", new ProfileBean(user)); attributes.put("event", new EventBean(event)); send(toCamelCase(event.getType()) + "Subject", "event-" + event.getType().toString().toLowerCase() + ".ftl", attributes); }
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 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); } }
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 onEvent(Event event) { if (includedEvents != null && includedEvents.contains(event.getType())) { try { Collection<AuditLogger> loggers = new AuditLoggerFactory().getAuditLoggers(); if (loggers != null) for (AuditLogger logger : loggers) if (logger.isInstalled()) AuditAuth.spoolAuditMsg(event, logger, keycloakSession); } catch (Exception e) { LOG.warn("Failed to get audit logger", e); } } }
@Override public void onEvent(Event event) { if (includedEvents != null && includedEvents.contains(event.getType())) { try { Collection<AuditLogger> loggers = new AuditLoggerFactory().getAuditLoggers(); if (loggers != null) for (AuditLogger logger : loggers) if (logger.isInstalled()) AuditAuth.spoolAuditMsg(event, logger, keycloakSession); } catch (Exception e) { LOG.warn("Failed to get audit logger", e); } } }
@Override public void onEvent(Event event) { if (includedEvents.contains(event.getType())) { if (event.getRealmId() != null && event.getUserId() != null) { RealmModel realm = model.getRealm(event.getRealmId()); UserModel user = session.users().getUserById(event.getUserId(), realm); if (user != null && user.getEmail() != null && user.isEmailVerified()) { try { emailTemplateProvider.setRealm(realm).setUser(user).sendEvent(event); } catch (EmailException e) { log.error("Failed to send type mail", e); } } } } }
static DBObject convertEvent(Event event) { BasicDBObject e = new BasicDBObject(); e.put("time", event.getTime()); e.put("type", event.getType().toString()); e.put("realmId", event.getRealmId()); e.put("clientId", event.getClientId()); e.put("userId", event.getUserId()); e.put("sessionId", event.getSessionId()); e.put("ipAddress", event.getIpAddress()); e.put("error", event.getError()); BasicDBObject details = new BasicDBObject(); if (event.getDetails() != null) { for (Map.Entry<String, String> entry : event.getDetails().entrySet()) { details.put(entry.getKey(), entry.getValue()); } } e.put("details", details); return e; }
static EventEntity convertEvent(Event event) { EventEntity eventEntity = new EventEntity(); eventEntity.setId(UUID.randomUUID().toString()); eventEntity.setTime(event.getTime()); eventEntity.setType(event.getType().toString()); eventEntity.setRealmId(event.getRealmId()); eventEntity.setClientId(event.getClientId()); eventEntity.setUserId(event.getUserId()); eventEntity.setSessionId(event.getSessionId()); eventEntity.setIpAddress(event.getIpAddress()); eventEntity.setError(event.getError()); try { eventEntity.setDetailsJson(mapper.writeValueAsString(event.getDetails())); } catch (IOException ex) { logger.error("Failed to write log details", ex); } return eventEntity; }
static EventEntity convertEvent(Event event) { EventEntity eventEntity = new EventEntity(); eventEntity.setId(UUID.randomUUID().toString()); eventEntity.setTime(event.getTime()); eventEntity.setType(event.getType().toString()); eventEntity.setRealmId(event.getRealmId()); eventEntity.setClientId(event.getClientId()); eventEntity.setUserId(event.getUserId()); eventEntity.setSessionId(event.getSessionId()); eventEntity.setIpAddress(event.getIpAddress()); eventEntity.setError(event.getError()); try { eventEntity.setDetailsJson(mapper.writeValueAsString(event.getDetails())); } catch (IOException ex) { logger.error("Failed to write log details", ex); } return eventEntity; }