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 Object
Радиус сессия.
Бывают ситуации, когда не достаточно одного запроса и ответа.
Т.е. идет несколько запросов/ответов прежде чем радиус и нас договорятся.
В таком случае для разделения разных сессий исполльзуется радиус атрибут State.

- ## Nested Class Summary

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

- ## Field Summary

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

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RadiusSession(byte[] state, 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, 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 String userName

  - ### userNameAttribute

    public final RadiusAttribute.RadiusAttributeString userNameAttribute

  - ### sessionParams

    public final P sessionParams

  - ### login

    public Object login

  - ### contract

    public Contract contract

  - ### errorCode

    public int errorCode

  - ### killTime

    protected volatile long killTime

- ## Constructor Details

  - ### RadiusSession

    public RadiusSession(byte[] state, 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(RadiusListenerWorker, Nas, RadiusSession, RadiusPacket, RadiusPacket, ConnectionSet, 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, String openPassw, byte[] secret, byte[] authenticator)