ru.bitel.bgbilling.modules.inet.radius

## Class InetRadiusProcessor

- java.lang.Object
- - ru.bitel.bgbilling.kernel.network.processor.Processor
  - - ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>
    - - ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor

- All Implemented Interfaces:
    ru.bitel.bgbilling.kernel.application.server.CommandListener, ru.bitel.bgbilling.kernel.application.server.ExtendedLifecycle, ru.bitel.bgbilling.kernel.application.server.Lifecycle, EventListener<InetAccountingEvent>
  Direct Known Subclasses:
    InetRadiusHelperProcessor

      public class InetRadiusProcessor
      extends RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>
      implements EventListener<InetAccountingEvent>, ru.bitel.bgbilling.kernel.application.server.ExtendedLifecycle, ru.bitel.bgbilling.kernel.application.server.CommandListener

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `InetRadiusProcessor.AuthAcceptEvent`

    - ### Nested classes/interfaces inherited from class ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor

      `RadiusProcessor.ConnectionIterator<C extends ru.bitel.bgbilling.kernel.network.radius.nas.NasConnection<?>,N extends ru.bitel.bgbilling.kernel.network.radius.nas.Nas<C,?,?>>`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected ru.bitel.bgbilling.modules.inet.access.Access` | `access`
    `static RadiusPacket.RadiusPacketOption<java.lang.Integer>` | `ACCESS_CODE` Опция, указывающая AccessCode.
    `protected ru.bitel.bgbilling.modules.inet.accounting.Accounting` | `accounting`
    `static RadiusPacket.RadiusPacketOption<java.lang.Object>` | `AGENT_CIRCUIT_ID` Circuit-Id из опции 82.
    `static RadiusPacket.RadiusPacketOption<java.lang.Object>` | `AGENT_REMOTE_ID` Id удаленного устройства.
    `static RadiusPacket.RadiusPacketOption<java.lang.Object>` | `AGENT_SVLAN` SVLAN, по которому будет происходить поиск агентского устройства
    `protected int` | `applicationId`
    `static RadiusPacket.RadiusPacketOption<java.lang.Short>` | `DEVICE_STATE` Опция, указывающая текущее состояние соединения.
    `static RadiusPacket.RadiusPacketOption<java.lang.String>` | `IDENTIFIER` Опция, указывающая идентификатор сервиса.
    `static RadiusPacket.RadiusPacketOption<java.lang.Object>` | `INTERFACE_ID` interfaceId.
    `static RadiusPacket.RadiusPacketOption<java.lang.String>` | `MAC_ADDRESS` Опция, указывающая MAC-адрес.
    `static RadiusPacket.RadiusPacketOption<byte[]>` | `MAC_ADDRESS_BYTES` Опция, указывающая MAC-адрес в байтах.
    `static RadiusPacket.RadiusPacketOption<java.lang.String>` | `PARENT_ACCT_SESSION_ID` Опция, указывающая id родительского соединения.
    `static java.lang.String` | `REALM_DEFAULT`
    `static java.lang.String` | `REALM_DISABLE`
    `static RadiusPacket.RadiusPacketOption<java.lang.String>` | `SERVICE_NAME` Опция, указывающая сервис текущего аккаунтинга, при посервисном аккаунтинге и для сервисного(дочернего) аккаунтинга.
    `static RadiusPacket.RadiusPacketOption<java.lang.Object>` | `VLAN_ID` vlanId.

    - ### Fields inherited from class ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor

      `accountingIgnoreCount, accountingStartCounter, accountingStopCounter, accountingUpdateCounter, accountingUpdateIgnoreCount, antispamIgnoreCount, authenticationAcceptCounter, authenticationIgnoreCount, authenticationRejectCounter, forwardAccessAnswer, forwardAccessRequest, forwardAccountingResponse, forwardAfterPreprocess, forwardAfterProcess, module, nasList, setup`

    - ### Fields inherited from class ru.bitel.bgbilling.kernel.network.processor.Processor

      `moduleId`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `InetRadiusProcessor(Setup setup, ru.bitel.bgbilling.modules.inet.access.Access access, ru.bitel.bgbilling.modules.inet.accounting.Accounting accounting)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `accessRequestImpl(RadiusListenerWorker<InetNas> req, InetNas nas, RadiusPacket request, RadiusPacket response, java.util.Date date, RadiusSession<InetNas,InetRadiusSessionParams> radiusSession, int logRecordId, ConnectionSet connectionSet)`
    `protected void` | `addToLog(java.util.Date date, RadiusPacket packet, int recordId)`
    `protected int` | `authentication(RadiusListenerWorker<?> req, InetNas nas, RadiusSession<InetNas,InetRadiusSessionParams> session, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int logRecordId)` Обработка Access-Request разделяется на два этапа - аутентификацию и авторизацию.
    `protected int` | `authenticationImpl(RadiusListenerWorker<?> req, InetNas nas, RadiusSession<InetNas,InetRadiusSessionParams> radiusSession, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int logRecordId)`
    `protected int` | `authorization(RadiusListenerWorker<?> req, InetNas nas, RadiusSession<InetNas,InetRadiusSessionParams> radiusSession, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int logRecordId, ContractManager __cm, Contract __contract, java.lang.Object _login, java.lang.String username)` Авторизация клиента.
    `void` | `destroy()`
    `java.lang.String` | `executeCommand(java.lang.String cmd, java.lang.String param)`
    `protected ru.bitel.bgbilling.modules.inet.runtime.ServSearchResult` | `findServRuntime(ru.bitel.bgbilling.modules.inet.runtime.InetApplication application, RadiusListenerWorker<?> req, InetNas nas, java.lang.String userName, RadiusPacket request, java.util.Date time)` Вызывается при Access-Request и при Accounting-Request, если сессии еще нет.
    `java.lang.String` | `getCommandsHelp()`
    `protected int` | `getModuleId()`
    `protected InetNas` | `getNas(java.net.SocketAddress clientAddress, RadiusPacket packet)` Получение наса по радиус пакету.
    `InetNasConnection` | `getNasConnection(RadiusListenerWorker<?> req, ConnectionSet connectionSet, InetNas nas, RadiusPacket request, java.util.Date time)` Ставит блокировку на inetServRuntime!
    `java.lang.String` | `getStatus()`
    `void` | `init()`
    `protected int` | `insertToLog(java.util.Date date, RadiusPacket packet)`
    `protected RadiusSession<InetNas,InetRadiusSessionParams>` | `newRadiusSession(java.sql.Connection con, InetNas nas, RadiusPacket request, RadiusSession.State state)` Создание новой радиус сессии.
    `void` | `notify(InetAccountingEvent e, EventListenerContext ctx)`
    `protected void` | `postprocessAccessRequest(InetNas nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet)` Постобработка Access-Request По умолчанию - обработка скриптом предобработки наса.
    `protected void` | `postprocessAccountingRequest(InetNas nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet)` Постобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса.
    `protected void` | `preprocessAccessRequest(InetNas nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet)` Предобработка Access-Request По умолчанию - обработка скриптом предобработки наса.
    `protected void` | `preprocessAccountingRequest(InetNas nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet)` Предобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса.
    `protected void` | `reloadConfig()` Перезагрузка конфигурации сервера + модуля.
    `protected void` | `reloadNasList()` Корректная перезагрузка насов (конфига, инспекторов и т.п.).
    `void` | `start()`
    `void` | `stop()`

    - ### Methods inherited from class ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor

      `accessRequest, accounting, accountingRequest, afterNasListReload, connections, getAccessAcceptPerMinute, getAccessRejectPerMinute, getAccessRequestIgnorePerMinute, getAccountingStartPerMinute, getAccountingStopPerMinute, getAccountingUpdateIgnorePerMinute, getAccountingUpdatePerMinute, getActiveConnectionsCount, getAntispamIgnorePerMinute, getConnectionList, getNasList, getStoppedConnectionCount, getSuspendedConnectionCount, newInstance, processConnections`

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

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

- - ### Field Detail

    - #### REALM_DEFAULT

          public static final java.lang.String REALM_DEFAULT

      See Also:
        Constant Field Values

    - #### REALM_DISABLE

          public static final java.lang.String REALM_DISABLE

      See Also:
        Constant Field Values

    - #### DEVICE_STATE

          public static final RadiusPacket.RadiusPacketOption<java.lang.Short> DEVICE_STATE

      Опция, указывающая текущее состояние соединения.
      Устанавливается в `RadiusPacket` request в обработчике процессора протокола, при предобработке запроса.
      See Also:
        `RadiusProtocolHandler.preprocessAccessRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusProtocolHandler.preprocessAccountingRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusPacket.setOption(RadiusPacketOption, Object)`

    - #### PARENT_ACCT_SESSION_ID

          public static final RadiusPacket.RadiusPacketOption<java.lang.String> PARENT_ACCT_SESSION_ID

      Опция, указывающая id родительского соединения. Используется при посервисном аккаунтинге и для сервисного(дочернего) аккаунтинга
      Устанавливается в `RadiusPacket` request в обработчике процессора протокола, при предобработке запроса.
      See Also:
        `RadiusProtocolHandler.preprocessAccessRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusProtocolHandler.preprocessAccountingRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusPacket.setOption(RadiusPacketOption, Object)`

    - #### SERVICE_NAME

          public static final RadiusPacket.RadiusPacketOption<java.lang.String> SERVICE_NAME

      Опция, указывающая сервис текущего аккаунтинга, при посервисном аккаунтинге и для сервисного(дочернего) аккаунтинга.
      Устанавливается в `RadiusPacket` request в обработчике процессора протокола, при предобработке запроса.
      See Also:
        `RadiusProtocolHandler.preprocessAccessRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusProtocolHandler.preprocessAccountingRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusPacket.setOption(RadiusPacketOption, Object)`

    - #### IDENTIFIER

          public static final RadiusPacket.RadiusPacketOption<java.lang.String> IDENTIFIER

      Опция, указывающая идентификатор сервиса.
      Устанавливается в `RadiusPacket` request в обработчике процессора протокола, при предобработке запроса.
      See Also:
        `RadiusProtocolHandler.preprocessAccessRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusProtocolHandler.preprocessAccountingRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusPacket.setOption(RadiusPacketOption, Object)`

    - #### MAC_ADDRESS

          public static final RadiusPacket.RadiusPacketOption<java.lang.String> MAC_ADDRESS

      Опция, указывающая MAC-адрес.
      Устанавливается в `RadiusPacket` request в обработчике процессора протокола, при предобработке запроса.
      See Also:
        `RadiusProtocolHandler.preprocessAccessRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusProtocolHandler.preprocessAccountingRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusPacket.setOption(RadiusPacketOption, Object)`

    - #### MAC_ADDRESS_BYTES

          public static final RadiusPacket.RadiusPacketOption<byte[]> MAC_ADDRESS_BYTES

      Опция, указывающая MAC-адрес в байтах.
      Устанавливается в `RadiusPacket` request в обработчике процессора протокола, при предобработке запроса.
      See Also:
        `RadiusProtocolHandler.preprocessAccessRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusProtocolHandler.preprocessAccountingRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusPacket.setOption(RadiusPacketOption, Object)`

    - #### ACCESS_CODE

          public static final RadiusPacket.RadiusPacketOption<java.lang.Integer> ACCESS_CODE

      Опция, указывающая AccessCode. Если AccessCode!=0, то будет добавлена запись ошибки аутентификации.
      Устанавливается в `RadiusPacket` request в обработчике процессора протокола, при постобработке запроса.
      See Also:
        `RadiusProtocolHandler.preprocessAccessRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusProtocolHandler.preprocessAccountingRequest(RadiusPacket, RadiusPacket, ConnectionSet)`, `RadiusPacket.setOption(RadiusPacketOption, Object)`

    - #### AGENT_REMOTE_ID

          public static final RadiusPacket.RadiusPacketOption<java.lang.Object> AGENT_REMOTE_ID

      Id удаленного устройства. Используется для поиска устройства-агента (например, коммутатора).
      Возможна установка значения типа String, byte[], ByteBuffer

    - #### AGENT_CIRCUIT_ID

          public static final RadiusPacket.RadiusPacketOption<java.lang.Object> AGENT_CIRCUIT_ID

      Circuit-Id из опции 82. Используется для извлечения из него vlanId и interfaceId.
      Однако vlanId и interfaceId можно установить вручную, используя `VLAN_ID` и `INTERFACE_ID`
      Возможна установка значения типа String, byte[], ByteBuffer

    - #### VLAN_ID

          public static final RadiusPacket.RadiusPacketOption<java.lang.Object> VLAN_ID

      vlanId. Используется для поиска сервиса по vlan. Возможна установка значения типа Integer, Long, String, byte[], ByteBuffer

    - #### INTERFACE_ID

          public static final RadiusPacket.RadiusPacketOption<java.lang.Object> INTERFACE_ID

      interfaceId. Используется для поиска сервиса по интерфейсу. Возможна установка значения типа Integer, Long, String, byte[], ByteBuffer

    - #### AGENT_SVLAN

          public static final RadiusPacket.RadiusPacketOption<java.lang.Object> AGENT_SVLAN

      SVLAN, по которому будет происходить поиск агентского устройства

    - #### access

          protected final ru.bitel.bgbilling.modules.inet.access.Access access

    - #### accounting

          protected final ru.bitel.bgbilling.modules.inet.accounting.Accounting accounting

    - #### applicationId

          protected final int applicationId

  - ### Constructor Detail

    - #### InetRadiusProcessor

          @ConstructorProperties(value={"setup","access","accounting"})
          public InetRadiusProcessor(Setup setup,
                                                                                                   ru.bitel.bgbilling.modules.inet.access.Access access,
                                                                                                   ru.bitel.bgbilling.modules.inet.accounting.Accounting accounting)
                                                                                            throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

  - ### Method Detail

    - #### getModuleId

          protected final int getModuleId()

    - #### init

          public void init()
                    throws java.lang.Exception

      Specified by:
        `init` in interface `ru.bitel.bgbilling.kernel.application.server.ExtendedLifecycle`
      Throws:
        `java.lang.Exception`

    - #### start

          public void start()
                     throws java.lang.Exception

      Specified by:
        `start` in interface `ru.bitel.bgbilling.kernel.application.server.Lifecycle`
      Throws:
        `java.lang.Exception`

    - #### stop

          public void stop()
                    throws java.lang.Exception

      Specified by:
        `stop` in interface `ru.bitel.bgbilling.kernel.application.server.Lifecycle`
      Throws:
        `java.lang.Exception`

    - #### destroy

          public void destroy()
                       throws java.lang.Exception

      Specified by:
        `destroy` in interface `ru.bitel.bgbilling.kernel.application.server.ExtendedLifecycle`
      Throws:
        `java.lang.Exception`

    - #### reloadConfig

          protected void reloadConfig()

      Перезагрузка конфигурации сервера + модуля.
      Overrides:
        `reloadConfig` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`

    - #### reloadNasList

          protected void reloadNasList()

      Description copied from class: `RadiusProcessor`
      Корректная перезагрузка насов (конфига, инспекторов и т.п.).
      Overrides:
        `reloadNasList` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`

    - #### newRadiusSession

          protected RadiusSession<InetNas,InetRadiusSessionParams> newRadiusSession(java.sql.Connection con,
                                                                                    InetNas nas,
                                                                                    RadiusPacket request,
                                                                                    RadiusSession.State state)

      Description copied from class: `RadiusProcessor`
      Создание новой радиус сессии.
      Кроме всего прочего вызов данного метода означает что это первый запрос сессии.
      Specified by:
        `newRadiusSession` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`
        `nas` - TODO
      Returns:

    - #### preprocessAccessRequest

          protected void preprocessAccessRequest(InetNas nas,
                                                 RadiusPacket request,
                                                 RadiusPacket response,
                                                 ConnectionSet connectionSet)

      Description copied from class: `RadiusProcessor`
      Предобработка Access-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.
      Overrides:
        `preprocessAccessRequest` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`
        `connectionSet` - экземпляры соединений с БД: master, slave, trash

    - #### preprocessAccountingRequest

          protected void preprocessAccountingRequest(InetNas nas,
                                                     RadiusPacket request,
                                                     RadiusPacket response,
                                                     ConnectionSet connectionSet)

      Description copied from class: `RadiusProcessor`
      Предобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.
      Overrides:
        `preprocessAccountingRequest` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`
        `connectionSet` - экземпляры соединений с БД: master, slave, trash

    - #### accessRequestImpl

          protected void accessRequestImpl(RadiusListenerWorker<InetNas> req,
                                           InetNas nas,
                                           RadiusPacket request,
                                           RadiusPacket response,
                                           java.util.Date date,
                                           RadiusSession<InetNas,InetRadiusSessionParams> radiusSession,
                                           int logRecordId,
                                           ConnectionSet connectionSet)

      Overrides:
        `accessRequestImpl` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`

    - #### authentication

          protected int authentication(RadiusListenerWorker<?> req,
                                       InetNas nas,
                                       RadiusSession<InetNas,InetRadiusSessionParams> session,
                                       RadiusPacket request,
                                       RadiusPacket response,
                                       ConnectionSet connectionSet,
                                       int logRecordId)

      Description copied from class: `RadiusProcessor`
      Обработка Access-Request разделяется на два этапа - аутентификацию и авторизацию.
      В данном методе должна проходить аутентификация.
      Этот метод вызывается один раз за радиус сессию, т.е. сразу на Access-Request, если сессии нет,
      или в конце обработки eap запросов.
      Метод вызывается из `RadiusSession`
      Внутри логики должен найтись логин, провериться пароль, и, если все нормально, вызваться `RadiusProcessor.authorization(RadiusListenerWorker, Nas, RadiusSession, RadiusPacket, RadiusPacket, ConnectionSet, int, ContractManager, Contract, Object, String)`
      Specified by:
        `authentication` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`

    - #### authenticationImpl

          protected int authenticationImpl(RadiusListenerWorker<?> req,
                                           InetNas nas,
                                           RadiusSession<InetNas,InetRadiusSessionParams> radiusSession,
                                           RadiusPacket request,
                                           RadiusPacket response,
                                           ConnectionSet connectionSet,
                                           int logRecordId)
                                    throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### authorization

          protected int authorization(RadiusListenerWorker<?> req,
                                      InetNas nas,
                                      RadiusSession<InetNas,InetRadiusSessionParams> radiusSession,
                                      RadiusPacket request,
                                      RadiusPacket response,
                                      ConnectionSet connectionSet,
                                      int logRecordId,
                                      ContractManager __cm,
                                      Contract __contract,
                                      java.lang.Object _login,
                                      java.lang.String username)

      Description copied from class: `RadiusProcessor`
      Авторизация клиента.
      Вызывается после того как логин найден, пароль проверен.
      На этом этапе надо проверить, что деньги, тариф и т.п. есть, проверить ограничения логина и т.д.
      Specified by:
        `authorization` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`
        `connectionSet` - экземпляры соединений с БД: master, slave, trash
      Returns:
      See Also:
        `RadiusProcessor.authentication(RadiusListenerWorker, Nas, RadiusSession, RadiusPacket, RadiusPacket, ConnectionSet, int)`

    - #### getStatus

          public java.lang.String getStatus()

      Specified by:
        `getStatus` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`

    - #### getCommandsHelp

          public java.lang.String getCommandsHelp()

      Specified by:
        `getCommandsHelp` in interface `ru.bitel.bgbilling.kernel.application.server.CommandListener`

    - #### executeCommand

          public java.lang.String executeCommand(java.lang.String cmd,
                                                 java.lang.String param)

      Specified by:
        `executeCommand` in interface `ru.bitel.bgbilling.kernel.application.server.CommandListener`
      Specified by:
        `executeCommand` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`

    - #### findServRuntime

          protected ru.bitel.bgbilling.modules.inet.runtime.ServSearchResult findServRuntime(ru.bitel.bgbilling.modules.inet.runtime.InetApplication application,
                                                                                             RadiusListenerWorker<?> req,
                                                                                             InetNas nas,
                                                                                             java.lang.String userName,
                                                                                             RadiusPacket request,
                                                                                             java.util.Date time)

      Вызывается при Access-Request и при Accounting-Request, если сессии еще нет. Если сессия найдена по Acct-Session-Id, то метод не вызывается.
      Parameters:
        `application` -
        `req` -
        `nas` -
        `userName` -
        `request` -
        `time` -
      Returns:

    - #### getNasConnection

          public InetNasConnection getNasConnection(RadiusListenerWorker<?> req,
                                                    ConnectionSet connectionSet,
                                                    InetNas nas,
                                                    RadiusPacket request,
                                                    java.util.Date time)
                                             throws ru.bitel.bgbilling.common.BGException

      Ставит блокировку на inetServRuntime! Т.е. после удачного вызова метода необходимо сделать unlock.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### addToLog

          protected void addToLog(java.util.Date date,
                                  RadiusPacket packet,
                                  int recordId)

      Overrides:
        `addToLog` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`

    - #### insertToLog

          protected int insertToLog(java.util.Date date,
                                    RadiusPacket packet)

      Overrides:
        `insertToLog` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`

    - #### notify

          public void notify(InetAccountingEvent e,
                             EventListenerContext ctx)
                      throws ru.bitel.bgbilling.common.BGException

      Specified by:
        `notify` in interface `EventListener<InetAccountingEvent>`
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### postprocessAccountingRequest

          protected void postprocessAccountingRequest(InetNas nas,
                                                      RadiusPacket request,
                                                      RadiusPacket response,
                                                      ConnectionSet connectionSet)

      Description copied from class: `RadiusProcessor`
      Постобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.
      Overrides:
        `postprocessAccountingRequest` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`
        `connectionSet` - экземпляры соединений с БД: master, slave, trash

    - #### postprocessAccessRequest

          protected void postprocessAccessRequest(InetNas nas,
                                                  RadiusPacket request,
                                                  RadiusPacket response,
                                                  ConnectionSet connectionSet)

      Description copied from class: `RadiusProcessor`
      Постобработка Access-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.
      Overrides:
        `postprocessAccessRequest` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`
        `connectionSet` - экземпляры соединений с БД: master, slave, trash

    - #### getNas

          protected InetNas getNas(java.net.SocketAddress clientAddress,
                                   RadiusPacket packet)

      Description copied from class: `RadiusProcessor`
      Получение наса по радиус пакету.
      Сначала нас ищется по атрибуту Nas-Identifier, потом Nas-Ip-Address.
      Overrides:
        `getNas` in class `RadiusProcessor<InetNasConnection,InetNas,InetRadiusSessionParams>`
      Returns: