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 Link icon

    • accountingStartCounter Link icon

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

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

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

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

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

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

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

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

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

      protected final Setup setup
    • module Link icon

      protected final String module
    • nasList Link icon

      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 Link icon

      protected volatile boolean forwardAfterPreprocess
    • forwardAfterProcess Link icon

      protected volatile boolean forwardAfterProcess
    • forwardAccessRequest Link icon

      protected volatile boolean forwardAccessRequest
    • forwardAccessAnswer Link icon

      protected volatile boolean forwardAccessAnswer
    • forwardAccountingResponse Link icon

      protected volatile boolean forwardAccountingResponse
  • Constructor Details Link icon

    • RadiusProcessor Link icon

      @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 Link icon

      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 Link icon

    • reloadConfig Link icon

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

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

      protected void afterNasListReload()
    • getNas Link icon

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

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

      public final Iterable<C> connections()
    • executeCommand Link icon

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

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

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

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

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

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

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

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

      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 Link icon

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

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

      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 Link icon

      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

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

      protected abstract int authorization(RadiusListenerWorker<?> req, N nas, RadiusSession<N,P> radiusSession, RadiusPacket request, RadiusPacket response, ConnectionSet connectionSet, int log_record_id, ContractManager contractM, 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 Link icon

      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 Link icon

      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 Link icon

      protected List<C> getConnectionList()
    • getStatus Link icon

      public abstract String getStatus()
    • getActiveConnectionsCount Link icon

      public int getActiveConnectionsCount()
    • getSuspendedConnectionCount Link icon

      public int getSuspendedConnectionCount()
    • getStoppedConnectionCount Link icon

      public int getStoppedConnectionCount()
    • getAccountingStartPerMinute Link icon

      public int getAccountingStartPerMinute()
    • getAccountingStopPerMinute Link icon

      public int getAccountingStopPerMinute()
    • getAccountingUpdatePerMinute Link icon

      public int getAccountingUpdatePerMinute()
    • getAccessAcceptPerMinute Link icon

      public int getAccessAcceptPerMinute()
    • getAccessRejectPerMinute Link icon

      public int getAccessRejectPerMinute()
    • getAccessRequestIgnorePerMinute Link icon

      public int getAccessRequestIgnorePerMinute()
    • getAccountingUpdateIgnorePerMinute Link icon

      public int getAccountingUpdateIgnorePerMinute()
    • getAntispamIgnorePerMinute Link icon

      public int getAntispamIgnorePerMinute()