List of usage examples for org.apache.solr.security AuthorizationContext getRemoteAddr
public abstract String getRemoteAddr();
From source file:org.apache.sentry.binding.solr.authz.SentrySolrPluginImpl.java
License:Apache License
private void audit(Name perm, AuthorizationContext ctx, AuthorizationResponse resp) { if (!auditLog.isPresent() || !auditLog.get().isLogEnabled()) { return;/*from w w w. j av a 2s.co m*/ } String userName = getShortUserName(ctx.getUserPrincipal()); String ipAddress = ctx.getRemoteAddr(); long eventTime = System.currentTimeMillis(); int allowed = (resp.statusCode == AuthorizationResponse.OK.statusCode) ? AuditLogger.ALLOWED : AuditLogger.UNAUTHORIZED; String operationParams = ctx.getParams().toString(); switch (perm) { case COLL_EDIT_PERM: case COLL_READ_PERM: { String collectionName = "admin"; String actionName = ctx.getParams().get(CoreAdminParams.ACTION); String operationName = (actionName != null) ? "CollectionAction." + ctx.getParams().get(CoreAdminParams.ACTION) : ctx.getHandler().getClass().getName(); auditLog.get().log(userName, null, ipAddress, operationName, operationParams, eventTime, allowed, collectionName); break; } case CORE_EDIT_PERM: case CORE_READ_PERM: { String collectionName = "admin"; String operationName = "CoreAdminAction.STATUS"; if (ctx.getParams().get(CoreAdminParams.ACTION) != null) { operationName = "CoreAdminAction." + ctx.getParams().get(CoreAdminParams.ACTION); } auditLog.get().log(userName, null, ipAddress, operationName, operationParams, eventTime, allowed, collectionName); break; } case READ_PERM: case UPDATE_PERM: { List<String> names = new ArrayList<>(); for (CollectionRequest r : ctx.getCollectionRequests()) { names.add(r.collectionName); } String collectionName = String.join(",", names); String operationName = (perm == Name.READ_PERM) ? SolrConstants.QUERY : SolrConstants.UPDATE; auditLog.get().log(userName, null, ipAddress, operationName, operationParams, eventTime, allowed, collectionName); break; } default: { // Do nothing. break; } } }