Package 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.

- ## Nested Class Summary

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

- ## Field Summary

  Fields
  Modifier and Type | Field | 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 | Description
  --- | ---
  `RadiusSession​(byte[] state, java.lang.String userName, RadiusAttribute.RadiusAttributeString userNameAttribute, P sessionParams)` |

- ## Method Summary

  Modifier and Type | Method | 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 Details

  - ### 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 Details

  - ### RadiusSession

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

- ## Method Details

  - ### 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)