blob: 3cac0e8c1da56bd7c9885633b0ebd1b979f4bd56 [file] [log] [blame]
Jonathan Hart501f7882018-07-24 14:39:57 -07001/*
2 * Copyright 2018-present Open Networking Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.opencord.kafka.integrations;
Shubham Sharma9188dde2019-06-20 07:16:08 +000018import java.time.Instant;
19
Jonathan Hart501f7882018-07-24 14:39:57 -070020import org.apache.felix.scr.annotations.Activate;
21import org.apache.felix.scr.annotations.Component;
22import org.apache.felix.scr.annotations.Deactivate;
23import org.apache.felix.scr.annotations.Reference;
24import org.apache.felix.scr.annotations.ReferenceCardinality;
Matteo Scandolod50a4d32019-04-24 12:10:21 -070025import org.apache.felix.scr.annotations.ReferencePolicy;
Matteo Scandolo580fb7f2019-04-17 15:33:15 -070026import org.onosproject.net.AnnotationKeys;
27import org.onosproject.net.device.DeviceService;
Jonathan Hart501f7882018-07-24 14:39:57 -070028import org.opencord.aaa.AuthenticationEvent;
29import org.opencord.aaa.AuthenticationEventListener;
30import org.opencord.aaa.AuthenticationService;
kartikey dubey6e903092019-05-22 13:35:28 +000031import org.opencord.aaa.AuthenticationStatisticsEvent;
32import org.opencord.aaa.AuthenticationStatisticsEventListener;
33import org.opencord.aaa.AuthenticationStatisticsService;
Shubham Sharma9188dde2019-06-20 07:16:08 +000034import org.opencord.kafka.EventBusService;
Shubham Sharma620d97a2019-06-27 12:31:01 +000035import org.opencord.aaa.RadiusOperationalStatusEvent;
36import org.opencord.aaa.RadiusOperationalStatusEventListener;
37import org.opencord.aaa.RadiusOperationalStatusService;
Kartikey Dubey66d40c32019-12-02 11:03:06 +000038import org.opencord.aaa.AaaMachineStatisticsEvent;
39import org.opencord.aaa.AaaMachineStatisticsEventListener;
40import org.opencord.aaa.AaaMachineStatisticsService;
41import org.opencord.aaa.AaaSupplicantMachineStats;
Jonathan Hart501f7882018-07-24 14:39:57 -070042import org.slf4j.Logger;
43import org.slf4j.LoggerFactory;
44
Shubham Sharma9188dde2019-06-20 07:16:08 +000045import com.fasterxml.jackson.databind.JsonNode;
46import com.fasterxml.jackson.databind.ObjectMapper;
47import com.fasterxml.jackson.databind.node.ObjectNode;
Jonathan Hart2aad7792018-07-31 15:09:17 -040048
Jonathan Hart501f7882018-07-24 14:39:57 -070049/**
50 * Listens for AAA events and pushes them on a Kafka bus.
51 */
52@Component(immediate = true)
53public class AaaKafkaIntegration {
54
55 public Logger log = LoggerFactory.getLogger(getClass());
56
57 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
58 protected EventBusService eventBusService;
59
Matteo Scandolo580fb7f2019-04-17 15:33:15 -070060 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
61 protected DeviceService deviceService;
62
Matteo Scandolo03f13c12019-03-20 14:38:12 -070063 @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY,
Matteo Scandolod50a4d32019-04-24 12:10:21 -070064 policy = ReferencePolicy.DYNAMIC,
Matteo Scandolo03f13c12019-03-20 14:38:12 -070065 bind = "bindAuthenticationService",
66 unbind = "unbindAuthenticationService")
Jonathan Hart501f7882018-07-24 14:39:57 -070067 protected AuthenticationService authenticationService;
kartikey dubey6e903092019-05-22 13:35:28 +000068 @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY,
69 policy = ReferencePolicy.DYNAMIC,
70 bind = "bindAuthenticationStatService",
71 unbind = "unbindAuthenticationStatService")
72 protected AuthenticationStatisticsService authenticationStatisticsService;
Jonathan Hart501f7882018-07-24 14:39:57 -070073
Shubham Sharma620d97a2019-06-27 12:31:01 +000074 @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY,
75 bind = "bindRadiusOperationalStatusService",
76 unbind = "unbindRadiusOperationalStatusService")
77 protected RadiusOperationalStatusService radiusOperationalStatusService;
78
Kartikey Dubey66d40c32019-12-02 11:03:06 +000079 @Reference(cardinality = ReferenceCardinality.OPTIONAL_UNARY,
80 policy = ReferencePolicy.DYNAMIC,
81 bind = "bindAaaMachineStatisticsService",
82 unbind = "unbindAaaMachineStatisticsService")
83 protected AaaMachineStatisticsService machineStatisticsService;
84
Jonathan Hart501f7882018-07-24 14:39:57 -070085 private final AuthenticationEventListener listener = new InternalAuthenticationListener();
kartikey dubey6e903092019-05-22 13:35:28 +000086 private final AuthenticationStatisticsEventListener authenticationStatisticsEventListener =
Shubham Sharma9188dde2019-06-20 07:16:08 +000087 new InternalAuthenticationStatisticsListner();
Shubham Sharma620d97a2019-06-27 12:31:01 +000088 private final RadiusOperationalStatusEventListener radiusOperationalStatusEventListener =
89 new InternalRadiusOperationalStatusEventListener();
Jonathan Hart501f7882018-07-24 14:39:57 -070090
Kartikey Dubey66d40c32019-12-02 11:03:06 +000091 private final AaaMachineStatisticsEventListener machineStatisticsEventListener =
92 new InternalAaaMachineStatisticsListner();
93
kartikey dubey6e903092019-05-22 13:35:28 +000094 // topics
Jonathan Hart501f7882018-07-24 14:39:57 -070095 private static final String TOPIC = "authentication.events";
kartikey dubey6e903092019-05-22 13:35:28 +000096 private static final String AUTHENTICATION_STATISTICS_TOPIC = "onos.aaa.stats.kpis";
Shubham Sharma620d97a2019-06-27 12:31:01 +000097 private static final String RADIUS_OPERATION_STATUS_TOPIC = "radiusOperationalStatus.events";
kartikey dubey6e903092019-05-22 13:35:28 +000098 // auth event params
Jonathan Hart2aad7792018-07-31 15:09:17 -040099 private static final String TIMESTAMP = "timestamp";
Jonathan Hartf54e5ba2018-07-31 14:57:22 -0400100 private static final String DEVICE_ID = "deviceId";
101 private static final String PORT_NUMBER = "portNumber";
Matteo Scandolo580fb7f2019-04-17 15:33:15 -0700102 private static final String SERIAL_NUMBER = "serialNumber";
Jonathan Hartf54e5ba2018-07-31 14:57:22 -0400103 private static final String AUTHENTICATION_STATE = "authenticationState";
Jonathan Hart501f7882018-07-24 14:39:57 -0700104
kartikey dubey6e903092019-05-22 13:35:28 +0000105 // auth stats event params
106 private static final String ACCEPT_RESPONSES_RX = "acceptResponsesRx";
107 private static final String REJECT_RESPONSES_RX = "rejectResponsesRx";
108 private static final String CHALLENGE_RESPONSES_RX = "challengeResponsesRx";
109 private static final String ACCESS_REQUESTS_TX = "accessRequestsTx";
110 private static final String INVALID_VALIDATORS_RX = "invalidValidatorsRx";
111 private static final String UNKNOWN_TYPE_RX = "unknownTypeRx";
112 private static final String PENDING_REQUESTS = "pendingRequests";
113 private static final String DROPPED_RESPONSES_RX = "droppedResponsesRx";
114 private static final String MALFORMED_RESPONSES_RX = "malformedResponsesRx";
115 private static final String UNKNOWN_SERVER_RX = "unknownServerRx";
116 private static final String REQUEST_RTT_MILLIS = "requestRttMillis";
117 private static final String REQUEST_RE_TX = "requestReTx";
Shubham Sharma9188dde2019-06-20 07:16:08 +0000118 private static final String TIMED_OUT_PACKETS = "timedOutPackets";
Shubham Sharma0357efb2019-08-09 06:54:22 +0000119 private static final String EAPOL_LOGOFF_RX = "eapolLogoffRx";
120 private static final String EAPOL_RES_IDENTITY_MSG_TRANS = "eapolResIdentityMsgTrans";
121 private static final String EAPOL_AUTH_SUCCESS_TRANS = "eapolAuthSuccessTrans";
122 private static final String EAPOL_AUTH_FAILURE_TRANS = "eapolAuthFailureTrans";
123 private static final String EAPOL_START_REQ_TRANS = "eapolStartReqTrans";
124 private static final String EAP_PKT_TX_AUTH_CHOOSE_EAP = "eapPktTxauthChooseEap";
125 private static final String EAPOL_TRANS_RESP_NOT_NAK = "eapolTransRespNotNak";
Shubham Sharmaabe0a262019-09-16 10:07:02 +0000126 private static final String EAPOL_FRAMES_TX = "eapolFramesTx";
127 private static final String AUTH_STATE_IDLE = "authStateIdle";
128 private static final String REQUEST_ID_FRAMES_TX = "requestIdFramesTx";
129 private static final String REQUEST_EAP_FRAMES_TX = "requestEapFramesTx";
130 private static final String INVALID_PKT_TYPE = "invalidPktType";
131 private static final String INVALID_BODY_LENGTH = "invalidBodyLength";
132 private static final String VALID_EAPOL_FRAMES_RX = "validEapolFramesRx";
133 private static final String PENDING_RES_SUPPLICANT = "pendingResSupplicant";
134 private static final String RES_ID_EAP_FRAMES_RX = "resIdEapFramesRx";
kartikey dubey6e903092019-05-22 13:35:28 +0000135
Shubham Sharma620d97a2019-06-27 12:31:01 +0000136 private static final String OPERATIONAL_STATUS = "radiusOperationalStatus";
137
Kartikey Dubey66d40c32019-12-02 11:03:06 +0000138 //Supplicant machine stats event params
139 private static final String SESSION_ID = "sessionId";
140 private static final String SESSION_NAME = "sessionName";
141 private static final String MAC_ADDRESS = "macAddress";
142 private static final String EAPOL_TYPE = "eapolType";
143 private static final String SESSION_DURATION = "sessionDuration";
144 private static final String TOTAL_FRAMES_RX = "totalFramesRx";
145 private static final String TOTAL_FRAMES_TX = "totalFramesTx";
146 private static final String TOTAL_PACKETS_RX = "totalPacketsRx";
147 private static final String TOTAL_PACKETS_TX = "totalFramesTx";
148 private static final String SESSION_TERMINATE_REASON = "sessionTerminateReason";
149 private static final String TOTAL_OCTETS_TX = "totalOctetsTx";
150 private static final String TOTAL_OCTETS_RX = "totalOctetsRx";
151
Matteo Scandolo03f13c12019-03-20 14:38:12 -0700152 protected void bindAuthenticationService(AuthenticationService authenticationService) {
Matteo Scandolod50a4d32019-04-24 12:10:21 -0700153 log.info("bindAuthenticationService");
Matteo Scandolo03f13c12019-03-20 14:38:12 -0700154 if (this.authenticationService == null) {
155 log.info("Binding AuthenticationService");
156 this.authenticationService = authenticationService;
157 log.info("Adding listener on AuthenticationService");
158 authenticationService.addListener(listener);
159 } else {
160 log.warn("Trying to bind AuthenticationService but it is already bound");
161 }
162 }
163
164 protected void unbindAuthenticationService(AuthenticationService authenticationService) {
Matteo Scandolod50a4d32019-04-24 12:10:21 -0700165 log.info("unbindAuthenticationService");
Matteo Scandolo03f13c12019-03-20 14:38:12 -0700166 if (this.authenticationService == authenticationService) {
167 log.info("Unbinding AuthenticationService");
168 this.authenticationService = null;
169 log.info("Removing listener on AuthenticationService");
170 authenticationService.removeListener(listener);
171 } else {
172 log.warn("Trying to unbind AuthenticationService but it is already unbound");
173 }
174 }
175
kartikey dubey6e903092019-05-22 13:35:28 +0000176 protected void bindAuthenticationStatService(AuthenticationStatisticsService authenticationStatisticsService) {
177 log.info("bindAuthenticationStatService");
178 if (this.authenticationStatisticsService == null) {
179 log.info("Binding AuthenticationStastService");
180 this.authenticationStatisticsService = authenticationStatisticsService;
181 log.info("Adding listener on AuthenticationStatService");
182 authenticationStatisticsService.addListener(authenticationStatisticsEventListener);
183 } else {
184 log.warn("Trying to bind AuthenticationStatService but it is already bound");
185 }
186 }
187
188 protected void unbindAuthenticationStatService(AuthenticationStatisticsService authenticationStatisticsService) {
189 log.info("unbindAuthenticationStatService");
190 if (this.authenticationStatisticsService == authenticationStatisticsService) {
191 log.info("Unbinding AuthenticationStatService");
192 this.authenticationStatisticsService = null;
193 log.info("Removing listener on AuthenticationStatService");
194 authenticationStatisticsService.removeListener(authenticationStatisticsEventListener);
195 } else {
196 log.warn("Trying to unbind AuthenticationStatService but it is already unbound");
197 }
198 }
199
Shubham Sharma620d97a2019-06-27 12:31:01 +0000200 protected void bindRadiusOperationalStatusService(
201 RadiusOperationalStatusService radiusOperationalStatusService) {
202 log.info("bindRadiusOperationalStatusService");
203 if (this.radiusOperationalStatusService == null) {
204 log.info("Binding RadiusOperationalStatusService");
205 this.radiusOperationalStatusService = radiusOperationalStatusService;
206 log.info("Adding listener on RadiusOperationalStatusService");
207 radiusOperationalStatusService.addListener(radiusOperationalStatusEventListener);
208 } else {
209 log.warn("Trying to bind radiusOperationalStatusService but it is already bound");
210 }
211 }
212
213 protected void unbindRadiusOperationalStatusService(
214 RadiusOperationalStatusService radiusOperationalStatusService) {
215 log.info("unbindRadiusOperationalStatusService");
216 if (this.radiusOperationalStatusService == radiusOperationalStatusService) {
217 log.info("Unbind RadiusOperationalStatusService");
218 this.radiusOperationalStatusService = null;
219 log.info("Removing listener on RadiusOperationalStatusService");
220 radiusOperationalStatusService.removeListener(radiusOperationalStatusEventListener);
221 } else {
222 log.warn("Trying to unbind radiusOperationalStatusService but it is already unbound");
223 }
224 }
225
Kartikey Dubey66d40c32019-12-02 11:03:06 +0000226 protected void bindAaaMachineStatisticsService(AaaMachineStatisticsService machineStatisticsService) {
227 log.info("bindAaaMachineStatisticsService");
228 if (this.machineStatisticsService == null) {
229 log.info("Binding AaaMachineStatisticsService");
230 this.machineStatisticsService = machineStatisticsService;
231 log.info("Adding listener on AaaMachineStatisticsService");
232 machineStatisticsService.addListener(machineStatisticsEventListener);
233 } else {
234 log.warn("Trying to bind AaaMachineStatisticsService but it is already bound");
235 }
236 }
237
238 protected void unbindAaaMachineStatisticsService(AaaMachineStatisticsService machineStatisticsService) {
239 log.info("unbindAaaMachineStatisticsService");
240 if (this.machineStatisticsService == machineStatisticsService) {
241 log.info("Unbinding AaaMachineStatisticsService");
242 this.machineStatisticsService = null;
243 log.info("Removing listener on AaaMachineStatisticsService");
244 machineStatisticsService.removeListener(machineStatisticsEventListener);
245 } else {
246 log.warn("Trying to unbind AaaMachineStatisticsService but it is already unbound");
247 }
248 }
249
Jonathan Hart501f7882018-07-24 14:39:57 -0700250 @Activate
251 public void activate() {
Matteo Scandolod50a4d32019-04-24 12:10:21 -0700252 log.info("Started AaaKafkaIntegration");
Jonathan Hart501f7882018-07-24 14:39:57 -0700253 }
254
255 @Deactivate
256 public void deactivate() {
Matteo Scandolod50a4d32019-04-24 12:10:21 -0700257 log.info("Stopped AaaKafkaIntegration");
Jonathan Hart501f7882018-07-24 14:39:57 -0700258 }
259
260 private void handle(AuthenticationEvent event) {
261 eventBusService.send(TOPIC, serialize(event));
262 }
263
kartikey dubey6e903092019-05-22 13:35:28 +0000264 private void handleStat(AuthenticationStatisticsEvent event) {
265 eventBusService.send(AUTHENTICATION_STATISTICS_TOPIC, serializeStat(event));
Matteo Scandoloeba419b2019-11-25 10:42:04 -0700266 log.trace("AuthenticationStatisticsEvent sent successfully");
kartikey dubey6e903092019-05-22 13:35:28 +0000267 }
Matteo Scandolo580fb7f2019-04-17 15:33:15 -0700268
Shubham Sharma620d97a2019-06-27 12:31:01 +0000269 private void handleOperationalStatus(RadiusOperationalStatusEvent event) {
270 eventBusService.send(RADIUS_OPERATION_STATUS_TOPIC, serializeOperationalStatus(event));
271 log.info("RadiusOperationalStatusEvent sent successfully");
272 }
273
Kartikey Dubey66d40c32019-12-02 11:03:06 +0000274 private void handleMachineStat(AaaMachineStatisticsEvent machineStatEvent) {
275 eventBusService.send(AUTHENTICATION_STATISTICS_TOPIC, serializeMachineStat(machineStatEvent));
276 log.info("MachineStatisticsEvent sent successfully");
277 }
278
kartikey dubey6e903092019-05-22 13:35:28 +0000279 private JsonNode serialize(AuthenticationEvent event) {
Matteo Scandolo580fb7f2019-04-17 15:33:15 -0700280 String sn = deviceService.getPort(event.subject()).annotations().value(AnnotationKeys.PORT_NAME);
281
Jonathan Hart501f7882018-07-24 14:39:57 -0700282 ObjectMapper mapper = new ObjectMapper();
283 ObjectNode authEvent = mapper.createObjectNode();
Jonathan Hart2aad7792018-07-31 15:09:17 -0400284 authEvent.put(TIMESTAMP, Instant.now().toString());
Jonathan Hart501f7882018-07-24 14:39:57 -0700285 authEvent.put(DEVICE_ID, event.subject().deviceId().toString());
286 authEvent.put(PORT_NUMBER, event.subject().port().toString());
Matteo Scandolo580fb7f2019-04-17 15:33:15 -0700287 authEvent.put(SERIAL_NUMBER, sn);
Jonathan Hart501f7882018-07-24 14:39:57 -0700288 authEvent.put(AUTHENTICATION_STATE, event.type().toString());
289 return authEvent;
290 }
291
kartikey dubey6e903092019-05-22 13:35:28 +0000292 private JsonNode serializeStat(AuthenticationStatisticsEvent event) {
Matteo Scandoloeba419b2019-11-25 10:42:04 -0700293 log.trace("Serializing AuthenticationStatisticsEvent");
kartikey dubey6e903092019-05-22 13:35:28 +0000294 ObjectMapper mapper = new ObjectMapper();
295 ObjectNode authMetricsEvent = mapper.createObjectNode();
296 authMetricsEvent.put(TIMESTAMP, Instant.now().toString());
297 authMetricsEvent.put(ACCEPT_RESPONSES_RX, event.subject().getAcceptResponsesRx());
298 authMetricsEvent.put(REJECT_RESPONSES_RX, event.subject().getRejectResponsesRx());
299 authMetricsEvent.put(CHALLENGE_RESPONSES_RX, event.subject().getChallengeResponsesRx());
300 authMetricsEvent.put(ACCESS_REQUESTS_TX, event.subject().getAccessRequestsTx());
301 authMetricsEvent.put(INVALID_VALIDATORS_RX, event.subject().getInvalidValidatorsRx());
302 authMetricsEvent.put(UNKNOWN_TYPE_RX, event.subject().getUnknownTypeRx());
303 authMetricsEvent.put(PENDING_REQUESTS, event.subject().getPendingRequests());
304 authMetricsEvent.put(DROPPED_RESPONSES_RX, event.subject().getDroppedResponsesRx());
305 authMetricsEvent.put(MALFORMED_RESPONSES_RX, event.subject().getMalformedResponsesRx());
306 authMetricsEvent.put(UNKNOWN_SERVER_RX, event.subject().getUnknownServerRx());
307 authMetricsEvent.put(REQUEST_RTT_MILLIS, event.subject().getRequestRttMilis());
308 authMetricsEvent.put(REQUEST_RE_TX, event.subject().getRequestReTx());
Shubham Sharma9188dde2019-06-20 07:16:08 +0000309 authMetricsEvent.put(TIMED_OUT_PACKETS, event.subject().getTimedOutPackets());
Shubham Sharma0357efb2019-08-09 06:54:22 +0000310 authMetricsEvent.put(EAPOL_LOGOFF_RX, event.subject().getEapolLogoffRx());
311 authMetricsEvent.put(EAPOL_RES_IDENTITY_MSG_TRANS, event.subject().getEapolResIdentityMsgTrans());
312 authMetricsEvent.put(EAPOL_AUTH_SUCCESS_TRANS, event.subject().getEapolAuthSuccessTrans());
313 authMetricsEvent.put(EAPOL_AUTH_FAILURE_TRANS, event.subject().getEapolAuthFailureTrans());
314 authMetricsEvent.put(EAPOL_START_REQ_TRANS, event.subject().getEapolStartReqTrans());
315 authMetricsEvent.put(EAP_PKT_TX_AUTH_CHOOSE_EAP, event.subject().getEapPktTxauthChooseEap());
316 authMetricsEvent.put(EAPOL_TRANS_RESP_NOT_NAK, event.subject().getEapolTransRespNotNak());
Shubham Sharmaabe0a262019-09-16 10:07:02 +0000317 authMetricsEvent.put(EAPOL_FRAMES_TX, event.subject().getEapolFramesTx());
318 authMetricsEvent.put(AUTH_STATE_IDLE, event.subject().getAuthStateIdle());
319 authMetricsEvent.put(REQUEST_ID_FRAMES_TX, event.subject().getRequestIdFramesTx());
320 authMetricsEvent.put(REQUEST_EAP_FRAMES_TX, event.subject().getReqEapFramesTx());
321 authMetricsEvent.put(INVALID_PKT_TYPE, event.subject().getInvalidPktType());
322 authMetricsEvent.put(INVALID_BODY_LENGTH, event.subject().getInvalidBodyLength());
323 authMetricsEvent.put(VALID_EAPOL_FRAMES_RX, event.subject().getValidEapolFramesRx());
324 authMetricsEvent.put(PENDING_RES_SUPPLICANT, event.subject().getPendingResSupp());
325 authMetricsEvent.put(RES_ID_EAP_FRAMES_RX, event.subject().getEapolattrIdentity());
kartikey dubey6e903092019-05-22 13:35:28 +0000326 return authMetricsEvent;
327 }
328
Shubham Sharma620d97a2019-06-27 12:31:01 +0000329 private JsonNode serializeOperationalStatus(RadiusOperationalStatusEvent event) {
330 log.info("Serializing RadiusOperationalStatusEvent");
331 ObjectMapper mapper = new ObjectMapper();
332 ObjectNode authMetricsEvent = mapper.createObjectNode();
333 authMetricsEvent.put(TIMESTAMP, Instant.now().toString());
334 log.info("---OPERATIONAL_STATUS----" + event.subject());
335 authMetricsEvent.put(OPERATIONAL_STATUS, event.subject());
336 return authMetricsEvent;
337 }
338
Kartikey Dubey66d40c32019-12-02 11:03:06 +0000339 private JsonNode serializeMachineStat(AaaMachineStatisticsEvent machineStatEvent) {
340 log.info("Serializing AuthenticationStatisticsEvent");
341 ObjectMapper mapper = new ObjectMapper();
342 ObjectNode machineStat = mapper.createObjectNode();
343 AaaSupplicantMachineStats subject = machineStatEvent.subject();
344 machineStat.put(TIMESTAMP, Instant.now().toString());
345 machineStat.put(SESSION_ID, subject.getSessionId());
346 machineStat.put(SESSION_NAME, subject.getSessionName());
347 machineStat.put(MAC_ADDRESS, subject.getSrcMacAddress());
348 machineStat.put(SESSION_DURATION, subject.getSessionDuration());
349 machineStat.put(EAPOL_TYPE, subject.getEapolType());
350 machineStat.put(TOTAL_FRAMES_RX, subject.getTotalFramesReceived());
351 machineStat.put(TOTAL_FRAMES_TX, subject.getTotalFramesSent());
352 machineStat.put(TOTAL_PACKETS_RX, subject.getTotalFramesReceived());
353 machineStat.put(TOTAL_PACKETS_TX, subject.getTotalFramesSent());
354 machineStat.put(TOTAL_OCTETS_RX, subject.getTotalOctetRecieved());
355 machineStat.put(TOTAL_OCTETS_TX, subject.getTotalOctetSent());
356 machineStat.put(SESSION_TERMINATE_REASON, subject.getSessionTerminateReason());
357 log.debug(SESSION_ID + " - " + subject.getSessionId());
358 log.debug(SESSION_NAME + " - " + subject.getSessionName());
359 log.debug(MAC_ADDRESS + " - " + subject.getSrcMacAddress());
360 log.debug(SESSION_DURATION + " - " + subject.getSessionDuration());
361 log.debug(EAPOL_TYPE + " - " + subject.getEapolType());
362 log.debug(TOTAL_FRAMES_RX + " - " + subject.getTotalFramesReceived());
363 log.debug(TOTAL_FRAMES_TX + " - " + subject.getTotalFramesSent());
364 log.debug(TOTAL_PACKETS_RX + " - " + subject.getTotalFramesReceived());
365 log.debug(TOTAL_PACKETS_TX + " - " + subject.getTotalFramesSent());
366 log.debug(TOTAL_OCTETS_RX + " - " + subject.getTotalOctetRecieved());
367 log.debug(TOTAL_OCTETS_TX + " - " + subject.getTotalOctetSent());
368 log.debug(SESSION_TERMINATE_REASON + " - " + subject.getSessionTerminateReason());
369 return machineStat;
370 }
371
Jonathan Hart501f7882018-07-24 14:39:57 -0700372 private class InternalAuthenticationListener implements
Shubham Sharma9188dde2019-06-20 07:16:08 +0000373 AuthenticationEventListener {
Jonathan Hart501f7882018-07-24 14:39:57 -0700374 @Override
375 public void event(AuthenticationEvent authenticationEvent) {
376 handle(authenticationEvent);
377 }
378 }
kartikey dubey6e903092019-05-22 13:35:28 +0000379
380 private class InternalAuthenticationStatisticsListner implements
381 AuthenticationStatisticsEventListener {
382 @Override
383 public void event(AuthenticationStatisticsEvent authenticationStatisticsEvent) {
384 handleStat(authenticationStatisticsEvent);
385 }
386 }
Shubham Sharma620d97a2019-06-27 12:31:01 +0000387
388 private class InternalRadiusOperationalStatusEventListener implements
389 RadiusOperationalStatusEventListener {
390 @Override
391 public void event(RadiusOperationalStatusEvent radiusOperationalStatusEvent) {
392 handleOperationalStatus(radiusOperationalStatusEvent);
393 }
Kartikey Dubey66d40c32019-12-02 11:03:06 +0000394 }
Shubham Sharma620d97a2019-06-27 12:31:01 +0000395
Kartikey Dubey66d40c32019-12-02 11:03:06 +0000396 private class InternalAaaMachineStatisticsListner implements AaaMachineStatisticsEventListener {
397
398 @Override
399 public void event(AaaMachineStatisticsEvent machineStatEvent) {
400 handleMachineStat(machineStatEvent);
401 }
Shubham Sharma620d97a2019-06-27 12:31:01 +0000402 }
Shubham Sharmaabe0a262019-09-16 10:07:02 +0000403}