/* (non-Javadoc)
   * @see net.jradius.handler.EventHandler#handle(net.jradius.server.JRadiusEvent)
   */
  public boolean handle(JRadiusEvent evt) throws Exception {
    if (evt instanceof SessionExpiredEvent) {
      SessionExpiredEvent event = (SessionExpiredEvent) evt;
      JRadiusSession session = event.getSession();
      if (session == null) return true;

      RadiusLog.debug("Processing Session Expired Event for Session: " + session.getSessionKey());

      if (session.getSessionState() == JRadiusSession.RADIUS_ERROR) {
        onRadiusError(event);
      } else if ((session.getSessionState() & JRadiusSession.ACCT_STOPPED) != 0) {
        onAcctStopped(event);
      } else if ((session.getSessionState() & JRadiusSession.ACCT_STARTED) != 0) {
        onAcctStarted(event);
      } else if ((session.getSessionState() & JRadiusSession.AUTH_REJECTED) != 0) {
        onAuthRejected(event);
      } else if ((session.getSessionState() & JRadiusSession.AUTH_ACCEPTED) != 0) {
        Long serviceType = session.getServiceType();
        if (serviceType != null) {
          int iServiceType = serviceType.intValue();
          if (iServiceType != 6
              && // Administrative-User
              iServiceType != 8) // Authenticate-Only
          {
            onAuthAccepted(event);
          }
        }
      } else if ((session.getSessionState() & JRadiusSession.AUTH_REJECTED) != 0) {
        onAuthPending(event);
      }

      return true;
    }
    return false;
  }
 public void notifyElementExpired(Ehcache cache, Element element) {
   JRadiusSession session = (JRadiusSession) element.getValue();
   RadiusLog.debug("Expired session: " + session.getSessionKey());
   if (JRadiusServer.getEventDispatcher() != null) {
     SessionExpiredEvent evt = new SessionExpiredEvent(session);
     evt.setApplicationContext(applicationContext);
     JRadiusServer.getEventDispatcher().post(evt);
   }
 }
 public void onAuthPending(SessionExpiredEvent event) {
   RadiusLog.problem(
       null,
       event.getSession(),
       null,
       "Expired in Auth-Pending state (no response from service provider)");
 }
 public void onAcctStarted(SessionExpiredEvent event) {
   JRadiusSession session = event.getSession();
   String error = "Session Expired in Accounting-Started state, Accounting never stopped";
   RadiusLog.warn(session.getSessionKey() + ": " + error);
   JRadiusLogEntry logEntry = session.getLogEntry(event, "0");
   logEntry.setType("error");
   logEntry.addMessage(error);
 }
 public void onAuthAccepted(SessionExpiredEvent event) {
   JRadiusSession session = event.getSession();
   String error = "Session Expired in Auth-Accepted state, Accounting never started";
   RadiusLog.warn(session.getSessionKey() + ": " + error);
   JRadiusLogEntry logEntry = session.getLogEntry(event, "0");
   logEntry.setType("error");
   logEntry.addMessage(error);
   session.commitLogEntries(JRadiusServer.RLM_MODULE_FAIL);
 }
 public void onRadiusError(SessionExpiredEvent event) {
   JRadiusSession session = event.getSession();
   String error = "Session Expired in Error State";
   RadiusLog.error(session.getSessionKey() + ": " + error);
   JRadiusLogEntry logEntry = session.getLogEntry(event, "0");
   logEntry.setType("error");
   logEntry.addMessage(error);
   session.commitLogEntries(JRadiusServer.RLM_MODULE_FAIL);
 }