ru.bitel.bgbilling.kernel.network.radius

## Class RadiusSession<N extends ru.bitel.bgbilling.kernel.network.radius.nas.Nas<?,?,?>,P>

- java.lang.Object
- - ru.bitel.bgbilling.kernel.network.radius.RadiusSession<N,P>

- Type Parameters:
    `N` -
    `P` -
  Direct Known Subclasses:
    Digest5090RadiusSession

      public class RadiusSession<N extends ru.bitel.bgbilling.kernel.network.radius.nas.Nas<?,?,?>,P>
      extends java.lang.Object

  Радиус сессия.
  Бывают ситуации, когда не достаточно одного запроса и ответа.
  Т.е. идет несколько запросов/ответов прежде чем радиус и нас договорятся.
  В таком случае для разделения разных сессий исполльзуется радиус атрибут State.
  Author:
    amir

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `RadiusSession.State`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `Contract` | `contract`
    `int` | `errorCode`
    `protected long` | `killTime`
    `java.lang.Object` | `login`
    `P` | `sessionParams`
    `byte[]` | `stateAttribute`
    `java.lang.String` | `userName`
    `RadiusAttribute.RadiusAttributeString` | `userNameAttribute`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RadiusSession(byte[] state, java.lang.String userName, RadiusAttribute.RadiusAttributeString userNameAttribute, P sessionParams)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `accessRequest(RadiusProcessor<?,N,P> processor, RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int log_record_id)` Сессионная обработка Access-Request.
    `int` | `authentication(RadiusProcessor<?,N,P> processor, RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int log_record_id)` Сама аутентификация в модуле.
    `boolean` | `checkPassword(ru.bitel.bgbilling.kernel.network.radius.nas.Nas<?,?,?> nas, RadiusAttributeSet request, RadiusAttributeSet response, java.lang.String openPassw, byte[] secret, byte[] authenticator)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### stateAttribute

          public final byte[] stateAttribute

    - #### userName

          public final java.lang.String userName

    - #### userNameAttribute

          public final RadiusAttribute.RadiusAttributeString userNameAttribute

    - #### sessionParams

          public final P sessionParams

    - #### login

          public java.lang.Object login

    - #### contract

          public Contract contract

    - #### errorCode

          public int errorCode

    - #### killTime

          protected volatile long killTime

  - ### Constructor Detail

    - #### RadiusSession

          public RadiusSession(byte[] state,
                               java.lang.String userName,
                               RadiusAttribute.RadiusAttributeString userNameAttribute,
                               P sessionParams)

  - ### Method Detail

    - #### accessRequest

          public void accessRequest(RadiusProcessor<?,N,P> processor,
                                    RadiusListenerWorker<N> req,
                                    N nas,
                                    RadiusPacket request,
                                    RadiusPacket response,
                                    ConnectionSet connectionSet,
                                    int log_record_id)

      Сессионная обработка Access-Request. Каждый запрос сесии попадает сюда.
      В данной реализации происходит просто вызов `RadiusProcessor#authentication(Nas, RadiusSession, RadiusPacket, RadiusPacket, Connection, Connection, int)` Т.е. физически сессии нет - это один запрос-ответ. Возможно расширение для реализации, например eap.
      Parameters:
        `processor` -
        `nas` -
        `request` -
        `response` -
        `con` -
        `conSlave` - TODO
        `log_record_id` -

    - #### authentication

          public int authentication(RadiusProcessor<?,N,P> processor,
                                    RadiusListenerWorker<N> req,
                                    N nas,
                                    RadiusPacket request,
                                    RadiusPacket response,
                                    ConnectionSet connectionSet,
                                    int log_record_id)

      Сама аутентификация в модуле. Вызывается когда радиус-сервер и радиус-клиент договорились (handshaked)
      Parameters:
        `processor` -
        `req` - TODO
        `nas` -
        `request` -
        `response` -
        `log_record_id` -
        `con` -
        `conSlave` - TODO
      Returns:

    - #### checkPassword

          public boolean checkPassword(ru.bitel.bgbilling.kernel.network.radius.nas.Nas<?,?,?> nas,
                                       RadiusAttributeSet request,
                                       RadiusAttributeSet response,
                                       java.lang.String openPassw,
                                       byte[] secret,
                                       byte[] authenticator)