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

java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.bgbilling.kernel.network.processor.Processor
ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor<C,N,P>
Type Parameters:
N -
P -
Direct Known Subclasses:
AbstractRadiusProcessor

public abstract class RadiusProcessor<C extends ru.bitel.bgbilling.kernel.network.radius.nas.NasConnection<?>,N extends ru.bitel.bgbilling.kernel.network.radius.nas.Nas<C,?,?>,P> extends ru.bitel.bgbilling.kernel.network.processor.Processor
Радиус процессор, минимальный набор, основная архитектура обработки.
  • Field Details

    • accountingStartCounter

      public final bitel.billing.server.util.RequestCounter accountingStartCounter
    • accountingStopCounter

      public final bitel.billing.server.util.RequestCounter accountingStopCounter
    • accountingUpdateCounter

      public final bitel.billing.server.util.RequestCounter accountingUpdateCounter
    • authenticationAcceptCounter

      public final bitel.billing.server.util.RequestCounter authenticationAcceptCounter
    • authenticationRejectCounter

      public final bitel.billing.server.util.RequestCounter authenticationRejectCounter
    • authenticationIgnoreCount

      public final bitel.billing.server.util.RequestCounter authenticationIgnoreCount
    • accountingIgnoreCount

      public final bitel.billing.server.util.RequestCounter accountingIgnoreCount
    • accountingUpdateIgnoreCount

      public final bitel.billing.server.util.RequestCounter accountingUpdateIgnoreCount
    • antispamIgnoreCount

      public final bitel.billing.server.util.RequestCounter antispamIgnoreCount
    • setup

      protected final Setup setup
    • module

      protected final String module
    • nasList

      protected final ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C extends ru.bitel.bgbilling.kernel.network.radius.nas.NasConnection<?>,N extends ru.bitel.bgbilling.kernel.network.radius.nas.Nas<C,?,?>> nasList
    • forwardAfterPreprocess

      protected volatile boolean forwardAfterPreprocess
    • forwardAfterProcess

      protected volatile boolean forwardAfterProcess
    • forwardAccessRequest

      protected volatile boolean forwardAccessRequest
    • forwardAccessAnswer

      protected volatile boolean forwardAccessAnswer
    • forwardAccountingResponse

      protected volatile boolean forwardAccountingResponse
  • Constructor Details

    • RadiusProcessor

      @Deprecated public RadiusProcessor(Setup setup, String module, int mid, ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C,N> nasList) throws ru.bitel.bgbilling.common.BGException
      Deprecated.
      Throws:
      ru.bitel.bgbilling.common.BGException
    • RadiusProcessor

      public RadiusProcessor(Setup setup, String module, int moduleId, ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C,N> nasList, boolean loadNasList, boolean linkReload) throws ru.bitel.bgbilling.common.BGException
      Throws:
      ru.bitel.bgbilling.common.BGException
  • Method Details

    • reloadConfig

      protected void reloadConfig()
      Перезагрузка конфигурации сервера + модуля.
    • reloadNasList

      protected void reloadNasList()
      Корректная перезагрузка насов (конфига, инспекторов и т.п.).
    • afterNasListReload

      protected void afterNasListReload()
    • getNas

      protected N getNas(SocketAddress clientAddress, RadiusPacket packet)
      Получение наса по радиус пакету.
      Сначала нас ищется по атрибуту Nas-Identifier, потом Nas-Ip-Address.
      Parameters:
      clientAddress -
      packet -
      Returns:
    • getNasList

      public ru.bitel.bgbilling.kernel.network.radius.nas.NasList<C,N> getNasList()
    • connections

      public final Iterable<C> connections()
    • executeCommand

      public abstract String executeCommand(String command, String params)
    • processConnections

      public void processConnections(RadiusProcessor.ConnectionIterator<C,N> iterator)
    • preprocessAccessRequest

      protected void preprocessAccessRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet)
      Предобработка Access-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.
      Parameters:
      nas -
      request -
      response -
      connectionSet - экземпляры соединений с БД: master, slave, trash
    • preprocessAccountingRequest

      protected void preprocessAccountingRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet)
      Предобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.
      Parameters:
      nas -
      request -
      response -
      connectionSet - экземпляры соединений с БД: master, slave, trash
    • postprocessAccessRequest

      protected void postprocessAccessRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet)
      Постобработка Access-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.
      Parameters:
      nas -
      request -
      response -
      connectionSet - экземпляры соединений с БД: master, slave, trash
    • postprocessAccountingRequest

      protected void postprocessAccountingRequest(N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet)
      Постобработка Accounting-Request По умолчанию - обработка скриптом предобработки наса. Возможно расширение.
      Parameters:
      nas -
      request -
      response -
      connectionSet - экземпляры соединений с БД: master, slave, trash
    • insertToLog

      protected int insertToLog(Date date, RadiusPacket packet)
    • addToLog

      protected void addToLog(Date date, RadiusPacket packet, int recordId)
    • accessRequest

      public void accessRequest(RadiusListenerWorker<N> req, N nas, int logRecordId, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet) throws ru.bitel.bgbilling.common.BGException
      Обработка Acсess-Request. Вызывается из RadiusListenerWorker
      Parameters:
      req -
      nas -
      logRecordId -
      request -
      response -
      connectionSet - экземпляры соединений с БД: master, slave, trash
      Throws:
      ru.bitel.bgbilling.common.BGException
    • accessRequestImpl

      protected void accessRequestImpl(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, Date date, RadiusSession<N,P> radiusSession, int logRecordId, ConnectionSet connectionSet)
    • newRadiusSession

      protected abstract RadiusSession<N,P> newRadiusSession(Connection con, N nas, RadiusPacket request, RadiusSession.State state)
      Создание новой радиус сессии.
      Кроме всего прочего вызов данного метода означает что это первый запрос сессии.
      Parameters:
      con -
      nas - TODO
      request -
      state -
      Returns:
    • accountingRequest

      public C accountingRequest(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, Date time)
      Обработка пакета Accounting-Request
      Parameters:
      req - TODO
      nas -
      request -
      response -
      connectionSet - экземпляры соединений с БД: master, slave, trash
      time -
    • authentication

      protected abstract int authentication(RadiusListenerWorker<?> req, N nas, RadiusSession<N,P> session, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int log_record_id)
      Обработка Access-Request разделяется на два этапа - аутентификацию и авторизацию.
      В данном методе должна проходить аутентификация.
      Этот метод вызывается один раз за радиус сессию, т.е. сразу на Access-Request, если сессии нет,
      или в конце обработки eap запросов.

      Метод вызывается из RadiusSession

      Внутри логики должен найтись логин, провериться пароль, и, если все нормально, вызваться
      invalid reference
      #authorization(RadiusListenerWorker, Nas, RadiusSession, RadiusPacket, RadiusPacket, ConnectionSet, int, ContractManager, Contract, Object, String)
    • authorization

      protected abstract int authorization(RadiusListenerWorker<?> req, N nas, RadiusSession<N,P> radiusSession, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int log_record_id, Contract contract, Object login, String userName)
      Авторизация клиента.
      Вызывается после того как логин найден, пароль проверен.
      На этом этапе надо проверить, что деньги, тариф и т.п. есть, проверить ограничения логина и т.д.
      Parameters:
      nas -
      radiusSession -
      request -
      response -
      connectionSet - экземпляры соединений с БД: master, slave, trash
      log_record_id -
      contract -
      login -
      userName -
      Returns:
      See Also:
    • accounting

      protected C accounting(RadiusListenerWorker<N> req, N nas, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, Date time)
      Обработка Accounting-Request по умолчанию.
      Parameters:
      req -
      nas -
      request -
      response -
      connectionSet - экземпляры соединений с БД: master, slave, trash
    • newInstance

      public static RadiusProcessor<?,ru.bitel.bgbilling.kernel.network.radius.nas.Nas<?,?,?>,?> newInstance(Class<? extends RadiusProcessor> clazz, Setup setup, int moduleId) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException
      Throws:
      SecurityException
      NoSuchMethodException
      IllegalArgumentException
      InstantiationException
      IllegalAccessException
      InvocationTargetException
    • getConnectionList

      protected List<C> getConnectionList()
    • getStatus

      public abstract String getStatus()
    • getActiveConnectionsCount

      public int getActiveConnectionsCount()
    • getSuspendedConnectionCount

      public int getSuspendedConnectionCount()
    • getStoppedConnectionCount

      public int getStoppedConnectionCount()
    • getAccountingStartPerMinute

      public int getAccountingStartPerMinute()
    • getAccountingStopPerMinute

      public int getAccountingStopPerMinute()
    • getAccountingUpdatePerMinute

      public int getAccountingUpdatePerMinute()
    • getAccessAcceptPerMinute

      public int getAccessAcceptPerMinute()
    • getAccessRejectPerMinute

      public int getAccessRejectPerMinute()
    • getAccessRequestIgnorePerMinute

      public int getAccessRequestIgnorePerMinute()
    • getAccountingUpdateIgnorePerMinute

      public int getAccountingUpdateIgnorePerMinute()
    • getAntispamIgnorePerMinute

      public int getAntispamIgnorePerMinute()